如何正确配置 requireJS
How to properly configure requireJS
您好,我正在尝试为 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>
我在不同的项目中看到在 header 中调用了配置,所以这是在 html header:
<script src="~/Scripts/app/config/require.config.js"></script>
我的问题是,在 main.js 中,它在 data-main (scripts/app/components/) 中定义的路径下寻找 jquery,但我的 jquery 在scripts/lib 个文件夹。
我正试图通过整天在线阅读来弄清楚,但这对我来说时间太多了,我需要有人给我一些提示,这应该如何工作?
真的很难弄清楚这一点,RequireJS 网站对我没有帮助。
Note: I am beginner in JavaScript based projects, first SPA attempt,
never used RequireJS...
你的配置文件没有做任何事情。我根据您的描述假设加载它的 script
元素位于加载 RequireJS 的 script
元素之前。这是配置 RequireJS 的一种有效方法,但是如果您希望 RequireJS 获取配置,您需要在加载 RequireJS 之前设置全局变量 require
,RequireJS 将使用require
的值作为其配置。现在您正在设置 config
,它会被 RequireJS 忽略。所以:
var require = {
waitSeconds: 15,
// etc...
一旦配置生效,您应该可以将 data-main
减少到 data-main="components/main"
。
我看到您在 paths
配置中的一些路径以点结尾。这很可能是您的错误,或者您有一些非常奇怪的文件名。
您好,我正在尝试为 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>
我在不同的项目中看到在 header 中调用了配置,所以这是在 html header:
<script src="~/Scripts/app/config/require.config.js"></script>
我的问题是,在 main.js 中,它在 data-main (scripts/app/components/) 中定义的路径下寻找 jquery,但我的 jquery 在scripts/lib 个文件夹。
我正试图通过整天在线阅读来弄清楚,但这对我来说时间太多了,我需要有人给我一些提示,这应该如何工作?
真的很难弄清楚这一点,RequireJS 网站对我没有帮助。
Note: I am beginner in JavaScript based projects, first SPA attempt, never used RequireJS...
你的配置文件没有做任何事情。我根据您的描述假设加载它的 script
元素位于加载 RequireJS 的 script
元素之前。这是配置 RequireJS 的一种有效方法,但是如果您希望 RequireJS 获取配置,您需要在加载 RequireJS 之前设置全局变量 require
,RequireJS 将使用require
的值作为其配置。现在您正在设置 config
,它会被 RequireJS 忽略。所以:
var require = {
waitSeconds: 15,
// etc...
一旦配置生效,您应该可以将 data-main
减少到 data-main="components/main"
。
我看到您在 paths
配置中的一些路径以点结尾。这很可能是您的错误,或者您有一些非常奇怪的文件名。