【问题标题】:RequireJS loads scripts before the view is initializedRequireJS 在视图初始化之前加载脚本
【发布时间】:2012-04-25 15:06:59
【问题描述】:

我有一个 Backbone 视图作为 requirejs 模块。问题是 requirejs 在视图初始化之前加载了http://localhost/remote/script/here.js。是不是因为脚本不在 requirejs 模块中?

define([
    'jquery',
    'undescore',
    'backbone',
    'http://localhost/remote/script/here'   
], function($, _, Backbone, Luajs){
    var View = Backbone.View.extend({
        initialize : function(options) {
        },
        render : function() {
            this.$el.html('<p>my view</p>')
            return this;
        }
    });

    return View;
});

【问题讨论】:

    标签: backbone.js requirejs


    【解决方案1】:

    作为define 的第一个参数的数组你的视图的依赖。所以是的,它在View 之前被加载和解析。 另请注意,除非您使用修改后的主干和下划线版本,否则它们不符合 AMD 标准。您需要用插件包装它们才能正确加载它们。

    【讨论】:

    • 我使用修改版的主干和下划线。为了异步加载我的脚本,我必须将它们包装在 define() 中?
    • define 的 requirements 参数中的模块是异步加载的。当它们被加载时,定义中的函数被调用。
    • 嗯,所以我无法控制何时加载它们?
    • 通常不会。正如我所说,在初始化模块之前加载依赖项。如果要在模块“内部”加载,请使用mydep = require('mydep');
    【解决方案2】:

    您尝试在加载模块后定义视图 Backbone。 您可以在 RequireJS 的 define() 方法中执行此操作。此函数的数组包含定义模块依赖关系的参数。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-09-16
      • 2013-07-01
      • 2014-05-14
      相关资源
      最近更新 更多