requirejs“页面模块”

时间:2015-11-12 09:30:06

标签: javascript asp.net requirejs

在当前基于Asp.net WebForms的项目中,我们使用requirejs在不同页面上加载js,模块。我只是想检查以下是否是设置连接到特定页面功能的“模块”的正确方法。

对于需要更多“唯一”脚本的某些特定页面,我们设置了所谓的“页面模块”。由于它不需要在自己的范围之外公开方法,我们不使用define,而只是像这样指定它:

require(['main'], function () {

    require(['jquery', 'app/Ajax', 'underscore'], function ($, ajax, _) {

        _.templateSettings = {
            interpolate: /\{\{(.+?)\}\}/g,
            evaluate: /\{%([\s\S]+?)%\}/g,
            escape: /\{%-([\s\S]+?)%\}/g
        };

        var pageModule = function() {
            this.init();
        };

        pageModule.prototype.init = function () {
            var self = this;
            //init functionality
        };

        pageModule.prototype.method = function () {
            // function used by the pageModule itself
        }

        return new pageModule();
    });
});

然后在页面底部的html中我们调用require

<script>
    require(['pages/pageModule']);
</script>

试图四处寻找这样的模式,以确认这是一种利用功能的好方法但却找不到多少。也许那是因为这不是使用它的好方法,或者它被称为特定的东西。大多数示例使用define,但由于模块不应被任何其他函数使用,因此定义似乎是多余的。

1 个答案:

答案 0 :(得分:0)

这是官方的多页面示例,看起来很像你所拥有的:

https://github.com/requirejs/example-multipage

例如page1.js:

//Load common code that includes config, then load the app logic for this page.
requirejs(['./common'], function (common) {
    requirejs(['app/main1']);
});

并在page1.html:

<script data-main="js/page1" src="js/lib/require.js"></script>

(注意:requirejs指的是与require

相同的功能