我正在做一个Backbone项目,我正在用RequireJS加载jQuery、Underscore和Backbone。
我发现自己一次又一次地在所有模块中输入这个模式:
define(['jquery', 'underscore', 'backbone'], function($, _, Backbone) { ...有没有办法或解决办法使这3个库对所有模块可用,而不显式地要求它们,这样我就可以专注于需要额外的东西了吗?
我想要在脚本标记中加载这个依赖项堆栈,并使用RequireJS作为我的模块和额外的依赖项,但是我必须自己连接jquery、下划线和主干,从而失去了JamJS编译特性。
编辑:
参见骨干样板:它们也在使用JamJS,但是它们不需要每个文件上的主干、下划线、jquery。不知怎么他们都能用。
它们需要在带有config.js的标记中使用RequireJS文件。这会导出require.config内容,然后委托给main.js。在main中,他们可以神奇地访问主干!
中间发生了什么?
发布于 2013-03-23 19:19:47
正如评论中提到的,我有一个沙箱。以下是咖啡脚本中的一个示例:
define [
"core"
"jquery"
"extensions/backbone"
"underscore"
], (core, $, backbone, underscore) ->
util:
underscore: underscore
mvc:
Model: backbone.Model
Collection: backbone.Collection
View: backbone.View
Events: backbone.Events
Router: backbone.Router这让我可以做
define ["sandbox"], (sandbox) -> class View extends sandbox.mvc.View这类似于AuraJS项目中使用的沙箱和立面图案的实现,其优点是.
它允许您公开JavaScript库中安全使用的部分,而不是公开整个API。在团队工作时,这一点特别有用。
而且,将来如果我想扩展来自BaseView类的所有视图,而不是直接从Backbone.View扩展,我只需更改沙箱中的引用。
发布于 2013-03-23 00:20:27
你好,您可以使用辛康菲实现全局访问
下面的例子是:
shim: {
'backbone': {
//These script dependencies should be loaded before loading
//backbone.js
deps: ['underscore', 'jquery'],
//Once loaded, use the global 'Backbone' as the
//module value.
exports: 'Backbone'
},https://stackoverflow.com/questions/15563348
复制相似问题