在当前基于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,但由于模块不应被任何其他函数使用,因此定义似乎是多余的。
答案 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
)