javascript - 使用RequireJS : should I define inherited resources

标签 javascript inheritance backbone.js requirejs

我有一个使用 require.js 的 Backbone 应用程序,我正在尝试确定链下游定义的资源是否通过原型(prototype)链向上继承,情况似乎确实如此。如果这是正确的,最佳实践是什么,我是否应该重新定义它们?

我的示例是,我有一个基本模型,它提供了一些自定义行为,这些行为在我的所有模型中都很常见。

// Base Model
define([
    'backbone'
],
function (Backbone) {
    'use strict';

    return Backbone.Model.extend({

        fetch: function (options) {
            options = options ? options : {};
            options.data = options.data ? options.data : {};
            options.data.nocache = $.now();
            return Backbone.Model.prototype.fetch.call(this, options);
        }
    });
});

然后我有其他模型扩展基本模型来继承这些通用功能。

// Some other model
define([
    'app',
    'backbone',
    'models/base/model'
], 
function(App, Backbone, BaseModel) {
    'use strict';

    return BaseModel.extend({

        url : function() {
            return 'some/url/;
        }   
    });
});

正如您所看到的,我已将 backbone 定义为两个模型中的资源,但因为其他模型继承自基本模型。我真的需要在这里定义主干吗?

我正在寻找最佳实践,谢谢!

最佳答案

我总是定义模块运行所需的一切。如果不这样做,它就不是真正的可移植。如果您将来删除上游依赖项,您的下游模型也可能会崩溃。即,

define('a', ['app','backbone','myplugin', ...]
define('b', ['app','backbone','a', ...]

如果ba都使用myplugin,那么在未来的某个时刻a不再需要它,当您从 a 中删除 myplugin 时,您会在不知情的情况下破坏 b

关于javascript - 使用RequireJS : should I define inherited resources,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23597150/

相关文章:

简单场景的 C++ OO 继承正确性

javascript - 类方法不会覆盖类字段

c# - 如何在 C# 中调用 protected 构造函数?

javascript - 如何在一个 View 中获取多个集合

javascript - 在不知道按钮上下文的情况下监听单选按钮取消选择事件(主干 View )

javascript - div contenteditable 标签的 setStart

javascript - 在jquery中添加 float

php - 使用 jQuery/PHP/AJAX/JSON 进行 Lucene/Solr 即时开发

Javascript 意外地执行类内的函数

javascript - 向 Backbone 模型添加更多功能