如何使用browerify-shim正确地填充jquery / Backbone
How to properly shim jquery / Backbone using browerify-shim
我正在尝试构建一个使用骨干/jquery的独立JS库。下面是一个示例repo,它代表了我试图构建的lib。
我对这个库有几个目标:
- 不要暴露任何全局变量(即正确包装所有内容,以免泄漏)
- 不要受到任何其他包工具的影响,比如requireJS
- 这个库可以加载到任何其他网站,我不希望与JS的任何冲突,可能在那里(这是超出我的控制),如requireJS
因此,我的理解是,我可以使用browserify-shim来正确地填充这些模块,以便它们可以在browserify中与require
一起使用。我很确定垫片应该在包装这些模块时取消defines
和require
,这将实现目标#2。只要按预期使用browserify,目标#1就有望实现。
我真的不能让这个工作,我不确定这是否只是我对browserify-shim的误解。无论我是否从命令行运行browserify: browserify src/main.js -o build/main.js
或使用gulp构建,我似乎都有同样的问题。
基本上,就好像browserify-shim
甚至没有运行。如果您打开index.html,您可以看到我加载的requirejs代码肯定影响我的lib,因为Backbone
只是一个空对象,然后requirejs崩溃。
你可以看到我的包裹。Json文件,大致如下所示:
{
...
"browserify-shim": {
"./node_modules/jquery/dist/jquery.js": "$",
"./node_modules/underscore.js": "_",
"./node_modules/backbone.js": {
"exports": "Backbone",
"depends": [
"./node_modules/underscore.js",
"./node_modules/jquery/dist/jquery.js"
]
}
},
"devDependencies": {
"browserify": "^4.1.11",
"browserify-shim": "^3.6.0",
"gulp": "^3.8.1",
"vinyl-source-stream": "^0.1.1"
},
"dependencies": {
"backbone": "^1.1.2",
"jquery": "^1.11.0",
"underscore": "^1.6.0"
}
}
不知道我错过了什么,但我运气不好。我想知道是否有人可以帮助或至少证实我试图实现的browserify-shim
是正确的和可能的。
谢谢。
编辑
为了说明它绝对不会使模块闪烁,我创建了一个完全相同的build/main.js
和build/main-shimmed.js
。main.js我在没有shim配置的情况下运行,而shimmed的配置具有上述配置。
在这种情况下,Browserify和Browserify-shim正在工作,并且您的main.js正在调用正确的require。
你遇到的问题是你正在捆绑的库也试图连接AMD风格配置。你的"过河",当心戈泽。
要么获取没有AMD配置加载器的版本,要么将它们注释掉
- 带有jquery插件的backbone.js视图
- Backbone listenTo不将jquery函数作为处理程序进行激发
- Backbone.js与jQuery的Lazy加载插件
- 弹出窗口-jQuery Mobile、Backbone.js和Require.js
- 我如何制作一个像Backbone's、 使用jQuery
- 将其绑定在 backbone.js 中的 jQuery 回调中
- Backbone.js 不起作用,而 Underscore、JSON 和 jQuery 可以
- Wrapping Libraries | jQuery vs. Backbone
- 相当于 Jquery/Backbone.js 中的 Dgrid/Store (Dojo 工具包)
- Angular和Backbone与jQuery的不同之处
- Backbone rerender vs jquery remove
- HTTP 状态代码 - Backbone.js 和 Jquery
- 通过 Backbone View 渲染 jQuery 对象
- 如何在 Backbone / Underscore 上应用 jQuery timeago 或 easydate
- 显示使用Spring,Spring Security,Hibernate,jQuery,Backbone,AJAX的We
- 当使用调试器执行JS时,有没有方法跳过jQuery/Backbone/Undercore代码
- 现在使用jQuery-Backbone.Js调用Page方法
- 在JQuery/Backbone中,我如何覆盖每个AJAX请求来添加一个额外的参数?
- 如何使用browerify-shim正确地填充jquery / Backbone
- jQuery / backbone.js -延迟函数调用