Javascript RequireJS:运行页面特定模块的最佳方法?
示例:Javascript RequireJS:运行页面特定模块的最佳方法?,javascript,modularity,requirejs,Javascript,Modularity,Requirejs,示例: var myModules = {}; myModules.pageTitle = (function(){ return { init: function(){ alert('this module has been initiated'); } } })(); myModules[page].init(); mysite.com/page1依赖于module1.js中的脚本 mysite.co
var myModules = {};
myModules.pageTitle = (function(){
return {
init: function(){
alert('this module has been initiated');
}
}
})();
myModules[page].init();
mysite.com/page1
依赖于module1.js中的脚本
mysite.com/page2
依赖于module2.js中的脚本
mysite.com/page3
依赖于module3.js中的脚本
是否有人有任何只运行特定页面所需Javascript的最佳实践。在开始使用RequireJS之前,我只会使用一个Javascript文件,并且只初始化该页面所需的模块。像这样
在第
页中:
在主JS文件中:
var myModules = {};
myModules.pageTitle = (function(){
return {
init: function(){
alert('this module has been initiated');
}
}
})();
myModules[page].init();
不太确定这样的技术如何与RequireJS配合使用。您希望得到一些反馈和建议,了解其他人是如何做到这一点的。我想您的所有页面都有一个main.js文件
无论如何,通常您会使用脚本标记的datamain属性,如API文档中所解释的,这意味着您每页有一个主js文件。这样,您就可以摆脱页面中的文字javascript代码,并充分利用RequireJS优化步骤
示例:
var myModules = {};
myModules.pageTitle = (function(){
return {
init: function(){
alert('this module has been initiated');
}
}
})();
myModules[page].init();
将main.js文件开发为RequireJS模块:
define([<dependencies go here>], function(){
return function(pageTitle){
//do you page dependent logic here
}
}
定义([],函数(){
返回函数(页面标题){
//这里有页面相关逻辑吗
}
}
在html中,您将有如下内容:
<html>
<head>
<script src="require.js"></script>
<script>
require(["main.js"], function(init){
init("pageTitle");
});
</script>
require([“main.js”],函数(init){
初始(“页面标题”);
});
1)您在后端使用什么语言
您可以将脚本配置保存在数据库或配置文件中。(例如:页面page1
包含模块:module1
、module2
和module4
,等等)
我有这样一个php模板文件,用于在我的页面上生成
标记:
<script src="http://requirejs.org/docs/release/1.0.1/minified/require.js"></script>
<script>
require([
<?php echo "'". implode("',\n\t'", $this->scripts) . "'\n"; ?>
], function(a){
function run(page) {
if ( window.hasOwnProperty(page) ) {
window[page].start();
}
}
var page = '<?php echo $this->page; ?>';
run('all'); // activating scripts needed for every page
run(page); // and for current page
});
</script>
您应该将页面名称或页面id传递给main.js
(您可以在DOM元素中传递此值-在站点的模板中,或在模板变量中)。
因此main.js
知道页面名称,并加载modules.json
文件。它获取特定模块,需要这些模块
main.js
还可以保留每个页面上需要的依赖项(例如jquery、一些jquery插件等)(jquery插件最好包装为模块)
顺便说一句,对不起我的英语RequireJS的创建者实际上做了一个示例项目,做得非常好:啊,好的,我明白了。但是,在整个站点上只提供一个文件不是最好的吗?嗯,这可能是有意义的,当然是通过优化步骤。您还可以在html文件中执行以下操作:require([“main.js”],function(init){init(“pageTitle”);});您可以扩展这个概念吗?将main.js文件开发为一个RequireJS模块:define([],function(){/code>return function(pageTitle){`//doyou page dependent logic here`}