您好我正在尝试为SPA项目制作启动模板主要使用: RequireJS,KnockoutJS,TypeScript等
我很难弄清楚如何配置RequireJS正常工作的路径和文件夹结构......
这是我的文件夹结构:
Scripts
app
components
main.js
lib
knockout.js
jquery.js
这是我的RequireJS配置文件:
var config = {
waitSeconds: 15,
paths: {
app: '../app',
'knockout': '/lib/knockout-3.4.2.',
sammy: '/lib/sammy-0.7.5.',
jquery: '../scripts/lib/jquery-1.10.2.'
}
};
这是我对main.js的尝试:
define(['jquery', 'PageOne', 'PageTwo'], function ($, pageOne, pageTwo) {
$(document).ready(function () {
var app = Sammy('#main', function () {
this.get('#/pageOne', function () {
pageOne.activate();
});
this.get('#/pageTwo', function () {
pageTwo.activate();
});
});
app.run();
});
});
这是我的Index.cshtml脚本标记:
<script src="~/Scripts/lib/require.js" data-main="scripts/app/components/main"></script>
我在不同的项目中看到配置是在标头中调用的,所以这是在html标题中:
<script src="~/Scripts/app/config/require.config.js"></script>
我的问题是在main.js中它在data-main(scripts / app / components /)中定义的路径下查找jquery,但我的jquery在scripts / lib文件夹中。
我试图通过在线阅读整天来弄明白,但对我来说太多时间我需要有人给我一些提示,这应该如何起作用?
认真地解决这个问题和RequireJS网站真的没有帮助我。
注意:我是基于JavaScript项目的初学者,首次尝试SPA, 从未使用过RequireJS ......
答案 0 :(得分:1)
您的配置文件没有执行任何操作。我从您的描述中假设加载它的script
元素位于加载RequireJS的script
元素之前。这是配置RequireJS的一种有效方法,但如果您希望RequireJS选择配置,需要在加载RequireJS之前设置全局变量require
,而RequireJS将使用require
的值作为其配置。现在您正在设置config
,这会被RequireJS忽略。所以:
var require = {
waitSeconds: 15,
// etc...
一旦配置生效,您应该可以将data-main
缩减为data-main="components/main"
。
我在paths
配置端看到一些带有点的路径。这很可能是你的错误,或者你有一些非常奇怪的文件名。