require.config必须在每个页面中声明?

时间:2013-05-22 03:24:08

标签: requirejs

//main.js
    require.config({
        baseUrl: '../Scripts/lib/',
        paths: {
            'jquery': 'jquery-2.0.0',
        }
    });

define(['jquery', '../test1'], function ($, object) {
    $(document).ready(function () {
        $('#button').bind('click', function () {
            object.getsomething();
        });
    });
});
//

//main1.js
    require.config({
        baseUrl: '../Scripts/lib/',
        paths: {
            'jquery': 'jquery-2.0.0',
        }
    });

define(['jquery', '../test1'], function ($, object) {
    $(document).ready(function () {
        $('#button').bind('click', function () {
            object.getsomething2();
        });
    });
});
//
//test1.js
define(function () {
    return {
        getsomething: function(){
            $('#button').css({'background-color':'#000'})
        },
        getsomething2: function(){
            $('#button').css({'background-color':'#000'})
        }
    }
     //return shit;
});
//

//Default1.aspx
<script data-main="<%: ResolveUrl("~/Scripts/main.js") %>" src="<%: ResolveUrl("~/Scripts/lib/require.js") %>"></script>

//Default2.aspx
<script data-main="<%: ResolveUrl("~/Scripts/main1.js") %>" src="<%: ResolveUrl("~/Scripts/lib/require.js") %>"></script>

是否必须在每个想要使用jquery的页面中声明require.config?我可以分享在不同的页面中使用main.js吗?我现在有点丢失,我认为它想在所有页面中共享require.config,每个页面应该有自己的js,而requirejs将有助于放置我想要的东西,因为requirejs只能指向具有的js require.config?通过谷歌搜索,仍然无法决定如何在多个页面和脚本上使用,需要一些指导来清除我的想法

更新:1

//main.js
    require.config({
        baseUrl: '../Scripts/lib/',
        paths: {
            'jquery': 'jquery-2.0.0',
        }
    });
});
//

//Scripts/script1.js
define("main",['jquery', '../test1'], function ($, object) {
    $(document).ready(function () {
        $('#button').bind('click', function () {
            object.getsomething();
   });
});
//


//Scripts/script2.js
define(['jquery', '../test1'], function ($, object) {
    $(document).ready(function () {
        $('#button').bind('click', function () {
            object.getsomething2();
    });
});

//test1.js
define(function () {
    return {
        getsomething: function(){
            $('#button').css({'background-color':'#000'})
        },
        getsomething2: function(){
            $('#button').css({'background-color':'#000'})
        }
    }
     //return shit;
});
//

//Default1.aspx
<script data-main="<%: ResolveUrl("~/Scripts/main.js") %>" src="<%: ResolveUrl("~/Scripts/lib/require.js") %>"></script>
<script src="./Scripts/script1.js">

//Default2.aspx
<script data-main="<%: ResolveUrl("~/Scripts/main.js") %>" src="<%: ResolveUrl("~/Scripts/lib/require.js") %>"></script>
<script src="./Scripts/script2.js">

我再次浏览了每一个教程和页面,并出现类似这样的代码,这样的代码是否正确?但它会遇到错误,除非我从源中删除外部脚本

2 个答案:

答案 0 :(得分:2)

RequireJS通常需要在每个使用的页面上进行配置调用。我说通常是因为你有时可以使用默认设置,但更多时候(特别是使用jQuery)你需要设置pathsshim等。

首先,我没遇到过我需要两个main.js文件的情况,我可以问你为什么你的代码示例显示几乎相同的代码?

您不应在define()内拨打main.js来电。模块应该存在于他们自己的文件中,而main.js应该require他们并调用任何设置代码。

您可能希望browse the documentation again看看我的意思。

如果您需要两个不同的主文件(可能您想在页面上初始化不同的模块),那么使用不同的JS文件来执行此操作。例如page1.js或page2.js require一组不同的模块。 Main应该用于配置和加载所有页面上的常用模块。 This answer sheds some light on that process

答案 1 :(得分:0)

不,您不必在所有页面中声明require.config。