我对 Durandal 很陌生,但考虑到我在 jQuery 和一点 KnockoutJS 方面的背景,我认为它是一个很棒的框架,但是我遇到了似乎是在 Durandal 中使用 RequireJS 的两种不同方法。
在 Durandal 示例中,使用了以下语法: Durandal / App / samples / modal / index.js
define(['durandal/app', './customModal'], function (app, CustomModal) {
return {
showCustomModal: function() {
app.showModal(new CustomModal()).then(function(response) {
app.showMessage('You answered "' + response + '".');
});
}
};
});
这里的依赖项/要求(这是正确的词吗?)被定义为调用 define ( ['durandal/app', './customModal']
) 的第一个参数。
在 Durandal 文档中,使用了以下语法:创建模块
define(function(require){
var backend = require('backend');
return {
customers:ko.observableArray([]),
activate:function(){
var that = this;
return backend.getCustomers().then(function(results){
that.customers(results);
});
}
};
});
这里只有函数被传递给定义的调用,需要作为该函数的依赖项/要求。然后调用 require 函数以获取所需的实际依赖项/需求 ( var backend = require('backend');
)。
来自 .net IoC 背景,第一个似乎是正确的,定义我的要求并让 requirejs 框架为我定位依赖项,第二个似乎是服务定位器反模式。
我对这两种方法的解释是否正确,应该使用第一种方法,并且文档是错误的(!)?
如果不是,这两种方法的优缺点是什么?建议使用哪一个,为什么?
非常感谢