我正在构建一个复杂的Web应用程序,为了保持简单,我在各种文件中创建了各种模块(对象)。这些模块可以在某些页面上需要,而不是在其他页面上。如何加载关于当前页面的特定代码?
因此,我想避免加载任何页面的所有模块,增加无用请求的数量。
到目前为止,我的工作是这样的:
- 我包括所有需要库
- 在那之后,我举例说明这些librairies在
jQuery(function() {});
与细节#ids或.classes论点,目前 页
一切工作正常,但由于我的应用程序越来越容易,我想用RequireJS管理我的JS。
而这正是事情开始有点令我困惑的地方。
我知道在需要时我可以载入我的模块,采用require(['module1', 'module2', 'etc'], function (module1, module2, etc) {})
,但我怎么能说:
“这个页面上,你加载这些模块,并与#ids和.classes实例化它们”
和
“这个其他页面上,你只加载该模块,与此#其他-ID”
?
模块1将,例如,从API加载数据,并把它们列出来给定的参数特定表:
// in page 1
var mod1 = new Module1($('#content>table');
mod1.init(); // will load the data from the api with the url located at <table data-api-url="http://....">
// in page 2
var mod1 = new Module1($('#content .items>table'); // The table where we want the data to be populated is not at the same position!
mod1.init();
这意味着,根据不同的页面上,我必须加载我模块不同。这就是我不知道如何使用RequireJs:/
感谢您的帮助!
@Cyrilñ不知道我是否明白你想要什么。你能举一个你期望的要求为你做什么的例子吗?因为module1自己会负责用#ids和.classes等来实例化这些库。这些库也是模块。 – devundef 2012-08-01 11:23:10
我回答了有关requirejs和多页面应用程序的问题,可能有帮助:http://stackoverflow.com/questions/11674824/how-to-use-requirejs-build-profile-r-js-in-a-mult- page-project/11730147#11730147 – devundef 2012-08-01 11:25:15
@devundef添加'data-start'属性的想法非常有趣,同时也解决了我相信的问题!谢谢:) – 2012-08-01 11:57:24