RequireJS:运行页面特定模块的最佳方法?
示例:
mysite.com/page1
取决于 module1.js
中的脚本
mysite.com/page2
取决于脚本module2.js
中
mysite.com/page3
取决于 module3.js
中的脚本
有没有人有任何仅运行所需的 Javascript 的最佳实践那个特定的页面。在开始使用 RequireJS 之前,我只会使用一个 Javascript 文件并仅初始化该页面所需的模块。像这样
在页面 :
var page = "pageTitle";
在主 JS 文件中:
var myModules = {};
myModules.pageTitle = (function(){
return {
init: function(){
alert('this module has been initiated');
}
}
})();
myModules[page].init();
不太确定这样的技术如何与 RequireJS 一起使用。希望得到一些关于其他人如何做到这一点的反馈和建议。
Example:
mysite.com/page1
depends on scripts in module1.js
mysite.com/page2
depends on scripts in module2.js
mysite.com/page3
depends on scripts in module3.js
Does anyone have any best practices for only running the Javascript required for that specific page. Before I started using RequireJS I would use only one Javascript file and init only the modules I needed for that page. like this
In page <head>
:
var page = "pageTitle";
In Main JS File:
var myModules = {};
myModules.pageTitle = (function(){
return {
init: function(){
alert('this module has been initiated');
}
}
})();
myModules[page].init();
Not really sure sure how a technique like this would work with RequireJS. Would love some feedback and advice on how others are doing this.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
我假设您的所有页面都有一个 main.js 文件?
无论如何,通常您会使用脚本标记的 data-main 属性,如 API 文档中所述,这意味着每页有一个主 js 文件。这样,您就可以摆脱页面中的文字 JavaScript 代码,并充分利用 RequireJS 优化步骤。
示例:
将 main.js 文件开发为 RequireJS 模块:
在您的 html 中,您将拥有类似以下内容的内容:
I assume you have one main.js file for all your pages?
Anyway, typically you would use the data-main attribute of the script tag as explained in the API documentation, which would mean you have one main js file per page. This way, you can get rid of the literal javascript code in you page, and take full advantage of the RequireJS optimization step.
Example:
Develop you main.js file as a RequireJS module:
In your html, you'll have something like:
1)你们后端使用什么语言?
您可以将脚本配置保存在数据库或配置文件中。 (例如:页面
page1
具有模块:module1
、module2
和module4
等)。我有这样一个 php 模板文件,用于在我的页面上生成
标签:
PS 脚本要求 window[page] 变量。我的意思是,页面的每个 .js 脚本 - 例如
index
页面的index.js
都在创建window.index
变量。 (我知道,这不太好 - 阅读 PPS ;) )PPS 我是 requireJS 的新手(我今天才知道),这是我的初稿,我想,我将以另一种方式实现:
2)目前作为一个概念:)
您将脚本保留为 AMD 模块(不是通常的脚本,而是作为 requireJS 的模块)。您可以将模块映射保存在
.json
文件中:您应该将页面名称或页面 id 传递给
main.js
(您可以在 DOM 元素中传递此值 - 在站点模板或模板变量中)。因此
main.js
知道页面名称,并加载modules.json
文件。它获取特定的模块并需要
它们。main.js
还可以保留每个页面所需的依赖项(例如 jquery、一些 jquery 插件等)(jquery 插件最好包装为模块)PS 抱歉我的英语
1) What language do you use at back-end?
You can keep your script-configuration in database or in configuration files. (For example: page
page1
has modules:module1
,module2
, andmodule4
, etc).I have such a php template file for generating
<script>
tags on my page:P.S. the script is asking for window[page] variable. I meant, that every .js script for a page -- for example
index.js
forindex
page is makingwindow.index
variable. ( I know, it's not so good - read P.P.S ;) )P.P.S. I'm novice to requireJS (I've knew about it only today), and it my first draft, and I think, I'll make it in another way:
2) As a concept for now :)
You keep your scripts as AMD modules (not as usual scripts, but as modules for requireJS). Modules map you can keep in a
.json
file:You should pass the page name or page id to the
main.js
(you can pass this value in DOM element - in templates of site, or in template variables ).So
main.js
knows the page name, and load yourmodules.json
file. It gets specific modules andrequires
them.main.js
also can keep dependencies that are need on every page ( for example jquery, some jquery plugins, etc) ( jquery plugins better to wrap as modules )P.S. sorry for my English
RequireJS 的创建者实际上做了一个示例项目,正是这样做的: https://github.com/requirejs/example-多页
The creator of RequireJS actually made an example project doing excactly this: https://github.com/requirejs/example-multipage