RequireJs不会按名称

时间:2016-05-23 15:47:25

标签: javascript html

我刚开始学习RequireJs,但无法使用自定义缩写名称加载js依赖项。我不明白我在这里做错了什么,我尝试只使用“淘汰”加载淘汰赛js库但是它会抛出错误

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

如果我使用“knockout-3.4.0”它工作正常,但我更喜欢使用缩短的

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

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

1 个答案:

答案 0 :(得分: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>