使用 requirejs 打包 jQuery 插件 datetimepicker 的问题记录

时间:2022-03-28 04:54:34

网站之前用的时间选择 UI 实在太丑,而且功能单一,决定全站改用 https://github.com/xdan/datetimepicker/

里面有好几个 js,奇怪的是,只有 /build 目录下的 full.js 可用,其他的引用后报错如下:

Cannot read property 'formatDate' of null

那就用 full.js 吧,无所谓,能用就行。

本地采用 requirejs 模块化,没问题,用 r.js 打包后,报了个这样的错误:

Mismatched anonymous define() module

仔细看了下,full.js 居然把 jquery.mousewheel.js 也引进来了,怪不得叫 full.js。果断把它去掉了,而 requirejs 配置文件中原来就有了 jquery.mousewheel.js(因为 datetimepicker.js 依赖于 jquery.mousewheel.js) ,再打包,ok 了。

看了下 README 中的 说明,full.js 是可以在浏览器 直接 引用的,而其他 js 引用后报错(我觉得正确姿势不应该引用 full.js),我怀疑是 bug?没有时间去细纠了。

这个开源项目引入并不是我决定的,我应该不会用这个项目,毕竟有 308 个 issue 没解决,而且 README 的开头写着什么?

PLEASE. Help me update documentation.

也是醉了。

我会用什么样的开源项目?之前的时间选择插件用的是 这个,我在周报中吐槽了一波:

对于开源项目的选择,我的个人想法是先选项目火的,从 stars ,作者(团队)知名度,文档完善性,有无完整 demo,社区讨论度,相关问题数等可见一斑。很明显 simple-momentpicker 完全不符合,stars 目前 7 个,一年多没维护了,看了下代码,变量名 a0, b1, c2, tmpData 等不忍吐槽。我猜当时是随便找了个插件就好了,应该没想到后期维护。其次我个人喜欢轻量级的插件,功能不需要太花哨,满足需求就好,最好是无依赖,有依赖的话尽量依赖知名库,这样也易于升级和维护。

至少,datetimepicker 比 simple-momentpicker 要好点 ...

至于那个报错,我怀疑是重复引入 jquery.mousewheel.js 导致的,没有细纠,可以看下 官网解释 或者 这里