有两种方法可以在 Durandal 中加载淘汰赛和 jQuery(以及其他第三方库)。
通过脚本标签
<script type="text/javascript" src="~/Scripts/jquery-1.9.1.js"></script>
<script type="text/javascript" src="~/Scripts/knockout-2.3.0.js"></script>
<script type="text/javascript" src="~/Scripts/bootstrap.js"></script>
例如,请参阅 Microsoft .NET 示例
https://github.com/BlueSpire/Durandal/blob/master/platforms/Microsoft.NET/Samples/Durandal.Samples/Views/Home/Index.cshtml#L31
在这种情况下,您将使用上述语法让 requirejs 知道这些库已经加载,因为 Durandal 内部将它们用作 AMD 模块。但是,在您自己的模块中,您可以省略此声明,因为 'ko' 和 '$' 是全局可访问的。
对于某些人来说,这是一种务实的方式,因为它更容易处理与 AMD 不兼容的第三方库。
如果避免全局变量是重中之重,那么也可以这样配置 requirejs。
通过 requierejs 加载所有内容。只需要一个脚本标签
<script src="lib/require/require.js" data-main="app/main"></script>
例如,请参阅 HTML 示例https://github.com/BlueSpire/Durandal/blob/master/platforms/HTML/Samples/index.html#L43
在 main.js 中有一个requirejs.config
带有路径和 shim 配置的对象。有关完整的可用选项,请参阅http://requirejs.org/docs/api.html。
main.js
requirejs.config({
paths: {
'text': '../lib/require/text',
'durandal':'../lib/durandal/js',
'plugins' : '../lib/durandal/js/plugins',
'transitions' : '../lib/durandal/js/transitions',
'knockout': '../lib/knockout/knockout-2.3.0',
'bootstrap': '../lib/bootstrap/js/bootstrap',
'jquery': '../lib/jquery/jquery-1.9.1'
},
shim: {
'bootstrap': {
deps: ['jquery'],
exports: 'jQuery'
}
}
});
例如https://github.com/BlueSpire/Durandal/blob/master/platforms/HTML/Samples/app/main.js
这次在您自己的模块中,您必须将 'knockout' 和 'jquery' 声明为依赖项(如果您使用它们),否则 requirejs 会抛出错误。