如何正确配置requireJS

时间:2017-12-13 14:00:58

标签: javascript requirejs single-page-application amd

您好我正在尝试为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 ......

1 个答案:

答案 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配置端看到一些带有点的路径。这很可能是你的错误,或者你有一些非常奇怪的文件名。