使 pickadate 与 browserify 配合良好的正确方法是什么?

What's the right way to make pickadate play well with browserify?

我一直在苦苦挣扎并且非常沮丧,因为我找不到一种方法让 pickadate 与 browserify 配合得很好。我正在从 AMD 迁移 Backbone 应用程序,但 pickadate 似乎无法使用它。我必须说,我最近开始使用 browserify,所以我不是专家,但我可以在没有任何重大事件的情况下迁移我的其余代码。当然,我愿意接受一些提示和参考资料,以掌握 browserify :)

我通过 npm 安装了 jquery 和 pickadate,当尝试使用 pickadate 时,我遇到了经典错误: undefined is not a function 我使用了这种要求方式(注意使用时没有将要求分配给变量): require("jquery"); require("pickadate");

我在 Whosebug (Requiring pickadate.js with Browserify) 的一个答案中看到了这个,但它在我的情况下不起作用。

任何有关在哪里可以找到帮助的帮助或参考将不胜感激。

当前版本的 pickadate 作为一个模块只公开了 PickerConstructor 的实例,但它没有公开 DatePicker 和 TimePicker 所以每次我们尝试实例化日期选择器或时间选择器时我们都会得到错误 undefined is not a function因为它们都没有被加载,所以没有进行 jquery.extend 调用来将它们附加到 jQuery 对象。

我们需要某种外观/包装器来公开所有开箱即用的 pickadate 功能。

为此,我直接对 pickadate 代码库做了一些小改动。我添加了一个 index.js 作为 picker.jspick.datepick.time 的外观/包装器,允许它们通过发出典型的 require('pickadate')。它不需要分配给变量,因为 pickadate 直接将自身附加到 jQuery 对象。您可以查看 this gist with the index.js code I used

此更改是 @evanvosberg 的 CryptoJS 库通过其 index.js 文件中实现的相同模式公开其不同算法的方式的副本。

唯一的额外更改是将 pickadate package.json 中的 属性 main 修改为指向 index.js.

我刚刚向 pickadate 作者 @amsul 发送了一条消息,询问是否可以将此更改直接集成到 pickadate github 存储库中。

我希望尝试将 pickadate 与 browserify 一起使用的人们可以找到这个解决方案,并且不要因为试图让他们一起玩而感到沮丧!

大家好!