【问题标题】:Exposing application scripts to certain scripts only仅将应用程序脚本公开给某些脚本
【发布时间】:2012-11-19 07:33:45
【问题描述】:

呃,这个问题很难找到合适的标题,对不起。

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

  1. 我该怎么做?

  2. 有什么模式可以解决这个问题吗?可以举个例子吗

说明

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

window.App.Model.PersonModel = Backbone.Model.extend({});

App.js

var instance = new window.App.Model.PersonModel();
var personView = new window.App.Views.PersonView({model:instance});

最后你看到所有东西都来自全局对象App,我认为这是构建应用程序依赖项的不安全、不恰当和弱的方式

建议

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

【问题讨论】:

  • 你能解释得更好吗? “不污染全局变量,即执行 window.App.Model = myModel; 那是什么意思。”?谢谢
  • @DanieleB 我为问题本身添加了描述,如果您想要更多,请告诉我
  • 您能否详细说明一下:“我认为构建应用程序依赖项的方式不安全、不正确和弱”?
  • 看看RequireJS,它支持异步模块定义/加载。您必须将您的模块重写为 app.js 以满足 AMD api,但这只需要几串代码。
  • 任何可以修改 App.js 的人都可以修改代码中的任何其他变量,并且使用 requirejs 不会阻止对 App.js 的需要。

标签: javascript design-patterns backbone.js


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-17
    • 2021-07-12
    • 2014-11-14
    • 1970-01-01
    相关资源
    最近更新 更多