Durandal中哪种RequireJS语法正确?
我对Durandal非常陌生,但考虑到我在jQuery和一点KnockoutJS方面的背景,我认为这是一个很棒的框架,但是我遇到了两种使用RequireJS和Durandal的不同方法 在Durandal示例中,使用了以下语法: 这里,依赖项/需求(这里是正确的词吗?)被定义为调用define的第一个参数(Durandal中哪种RequireJS语法正确?,requirejs,durandal,Requirejs,Durandal,我对Durandal非常陌生,但考虑到我在jQuery和一点KnockoutJS方面的背景,我认为这是一个很棒的框架,但是我遇到了两种使用RequireJS和Durandal的不同方法 在Durandal示例中,使用了以下语法: 这里,依赖项/需求(这里是正确的词吗?)被定义为调用define的第一个参数(['durandal/app','./customModal']) 在Durandal文档中,使用了以下语法: 在这里,只将函数传递给调用define,require作为该函数的依赖项/需
['durandal/app','./customModal']
)
在Durandal文档中,使用了以下语法:
在这里,只将函数传递给调用define,require作为该函数的依赖项/需求。然后调用require函数以获取所需的实际依赖项/需求(var backend=require('backend');
)
来自.NETIOC的背景第一个似乎是正确的,定义我的需求,让requirejs框架为我定位依赖项,第二个似乎是服务定位器反模式
我对这两种方法的解释是否正确,是否应该使用第一种方法,并且文档是错误的(!)
如果没有,这两种方法的优缺点是什么?建议使用哪一种?为什么
非常感谢我想你最喜欢哪种方式都是最好的方式。我认为是requirejs做的,所以你可以用两种方式来做,这样它就可以支持 根据requirejs的网站,如果您使用durandal解决其依赖关系的方式:
define(function(require) { var app = require('durandal/app'); app.start(); }
“此包装依赖于Function.prototype.toString()为函数内容提供有用的字符串值。这在某些设备(如PS3和一些较旧的Opera mobile浏览器)上不起作用。”--
但这是一个边缘案例,我认为没有太多人关心它。除此之外。。我会挑你最喜欢的那一套
我不知道你所说的服务定位器反模式是什么意思。我很确定这两种方法都是有效的,不管怎样,你选择这样做纯粹是为了美观
编辑**
Durandal不再使用上述模式来解析其依赖关系。它现在使用这种方式:
define(['./app','./system'], function (app, system) { //... });
两种方法都是正确的。请查阅所需的JS文档。Durandal JS基于JQuery、Knockout和RequireJS构建。浏览这篇博文
define(function(require) { var app = require('durandal/app'); app.start(); }
define(['./app','./system'], function (app, system) { //... });