仅将应用程序脚本公开给某些脚本

Dee*_*ons 7 javascript design-patterns backbone.js

呃我很难为这个问题找到合适的头衔.

在我正在构建的backbone.js应用程序中.模型,视图,模板都在单独的javascript,html文件中.我想将模型,视图和模板导出到应用程序bootstapper文件(app.js),而不会污染全局变量,即这样做window.App.Model = myModel;.通过导出我的意思是使文件中的代码可用于app.js进行初始化和运行

  1. 我该怎么做呢?

  2. 有没有可以解决问题的模式?你能举个例子吗?

描述

如果模型,视图和模板被拆分为许多不同的文件,应用程序引导程序文件app.js应该有一些方法来访问这些M,V,C组件.因此,下面的常见方法是在model.js文件中进行

window.App.Model.PersonModel = Backbone.Model.extend({});
Run Code Online (Sandbox Code Playgroud)

App.js

var instance = new window.App.Model.PersonModel();
var personView = new window.App.Views.PersonView({model:instance});
Run Code Online (Sandbox Code Playgroud)

最后你会看到一切都来自Global对象App,我认为这不是安全,不正确和弱的方式来构建应用程序依赖

建议

针对上述问题,有人可以建议一个模板加载库(不管引擎使用的javascript模板),可用于加载模板

小智 3

看一下RequireJS,它支持异步模块定义/加载。您必须重写模块并app.js满足AMD api 的要求,但这只需要几行代码。