我目前正在试验Hot Towel SPA Template,如果我理解正确的话,它会为Durandal定义这两个库。但我无法弄清楚这两个电话之间的确切区别:
// Durandal 2.x assumes no global libraries. It will ship expecting
// Knockout and jQuery to be defined with requirejs. .NET
// templates by default will set them up as standard script
// libs and then register them with require as follows:
define('jquery', function () { return jQuery; });
define('knockout', ko);
define('knockout', function () => { return ko; });?
会这样做吗?
答案 0 :(得分:1)
对于前者,我们定义了一个名为'jquery'的模块,并在全局命名空间中定义。
在后者的情况下,我们定义了一个模块,其引用在require路径中定义。
两种情况的效果相同。 Hot Towel的创建者John Papa建议不使用require定义第三方模块。相反,应该以这种方式定义一个人自己的模块。当然,jQuery和Knockout在Durandal框架中是例外,因为它们是Durandal框架的部分。
但John提出建议的原因在于如何设计第三方框架的所有技术细节。有时候你需要垫片,有时不是。有时您必须返回窗口上定义的内容,有时不返回。有时存在顺序依赖关系或辅助库依赖关系(反过来,它们也有自己的特性)。