如何正确配置 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 配置中的一些路径以点结尾。这很可能是您的错误,或者您有一些非常奇怪的文件名。