2016-05-23 61 views
0

我刚开始学习RequireJs,但无法使用它的自定义缩写名称加载js依赖项。我不明白我做错了什么在这里,我尝试只用“基因敲除”加载淘汰赛JS库,但如果我用“敲除3.4.0”它的工作原理,它抛出一个错误RequireJs不会按名称加载脚本

Error: Script error for "knockout" 
http://requirejs.org/docs/errors.html#scripterror 

不错,但我宁愿使用缩短的

<!DOCTYPE html> 
 
<html> 
 
\t <head> 
 
\t \t <script type="text/javascript" data-main="js/init.js" src="js/require.js"></script> 
 
\t </head> 
 
    <body> 
 
     <h1 data-bind="text: TabIndx">Hello World</h1> \t \t 
 
\t \t <script> 
 
\t \t require(['knockout', 'viewModel'], function(ko, viewModel) { 
 
\t \t \t var vm = new viewModel(); 
 
\t \t \t ko.applyBindings(vm); 
 
\t \t }); 
 
\t \t </script> 
 
    </body> 
 
</html>

require.config({ 
 
\t baseUrl: 'js', 
 
    paths: { 
 
     knockout: 'knockout-3.4.0', 
 
\t \t viewModel: 'viewModel' 
 
    } 
 
});

+0

是'init.js'你在哪里定义'require.config '?你可以发布'init.js'的全部内容吗? – Shakespeare

回答

1

我怀疑这是因为在您请求本地路径之前,RequireJS尚未完全加载自身及其自定义配置。你应该怎么做如果你正在使用RequireJS有一个模块负责创建视图模型和应用绑定,如你的例子。

// app.js 
define(['knockout', 'viewModel'], function (ko, viewModel) { 
    var vm = new viewModel(); 
    ko.applyBindings(vm); 
}); 

require.config({ 
    baseUrl: './js/', 
    paths: { 
     knockout: 'knockout-3.4.0', 
     viewModel: 'viewModel', 
     app: 'app' 
    } 
}); 

我不知道怎么init.js的外观,但在这里我已负责启动app.js文件的小模块。

define(['app'], function (app) { 
    app.init(); 
}); 

你的配置应该理想地被重构到它自己的文件,其中require-config.js只包含你的配置片段,像这样: -

<script type="text/javascript" data-main="js/init.js" src="js/require.js"></script> 
<script type="text/javascript" src="js/require-config.js"></script> 
+0

谢谢,我现在明白了,我在init.js中有自己的配置代码,但它是异步加载的,没有及时加载,因此出现错误消息。 – chillydk147