RequireJS和Backbone的集成
有朋友留言RequireJS如何与Backbone集合使用。
这两个轻量级的库合起来使用确实能够方便的构建大型应用程序。RequireJS填补了前端模块化开发的空缺,Backbone采用MVC的分层结构很好的将程序各个部分解耦。
Backbone目前不支持AMD(曾经支持过),那么它只能作为普通的JS文件使用。它全局的标示符是Backbone,它还依赖于underscore,underscore的全局标示是下划线(_)。
因此,当我们使用AMD方式写的模块中使用Backbone时,得确保underscore和Backbone已经载入了。
RequireJS 2.0后提供了一个shim参数很好的解决了该问题。
示例目录
js目录中有underscore.js,backbone.js。其中cache.js不依赖于Backbone,BaseRouter.js依赖。
index.html如下
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | <!doctype html> <html> <head> <title>RequireJS和Backbone集成</title> <meta charset= "utf-8" /> <script src= "require.js" ></script> <script> require.config({ baseUrl: 'js' , shim: { 'backbone' : { deps: [ 'underscore' ], exports: 'Backbone' } } }); require([ 'BaseRouter' ], function (baseRouter) { }); </script> </head> <body> </body> </html> |
注意,require.config配置了shim参数,shim参数这里有介绍。
这样配置后,当其它模块依赖于Backbone(如BaseRouter),它会顺序下载underscore.js和backbone.js。
BaseRouter内就可以把backbone当成AMD模块来使用了。
1 2 3 4 5 6 | define([ 'backbone' , 'cache' ], function (Backbone, cache){ // todo with Backbone and other module console.log(Backbone); console.log(cache); return {}; }) |
把目录rb放到apache或其它web服务器上,访问index.html。
可以看到所有依赖的文件都依次下载了。在BaseRouter内部就可以使用Backbone了。
相关:
http://stackoverflow.com/questions/10933541/how-to-nested-use-require-js-with-backbone-js
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?
2011-06-08 读jQuery之五(取DOM元素)
2011-06-08 对象无length属性时IE6/7中无法将其转换成伪数组(ArrayLike)