我一直在使用requireJS构建单页应用程序,并且到目前为止还爱它。我已经开始在主应用程序之外开发网站的其他部分,并且我不确定如何(或是否)使用requireJS。
在我的主应用程序中,所有内容都由此脚本标记触发:
<script data-main='/scripts/main' src='/scripts/libs/require.js'>
我现在正在开发拥有自己的前端脚本的主页。在获取站点时使用优化器将所有这些脚本捆绑到一个main.js
包中。我很难理解我的网站的其他部分适合这个。
假设我的应用程序依赖于jQuery并且它被捆绑在应用程序的优化版本中,如果我想在主页上使用jQuery怎么办?我不想加载我的应用程序main.js
只是为了访问我的jQuery模块。 所以是的......有点困惑!
我想象的网站结构有点像这样:
/scripts
- app-main.js //(includes all module dependencies after optimzation)
- home-main.js //(includes all module dependencies after optimzation)
应用:
<script data-main='/scripts/app-main' src='/scripts/libs/require.js'>
主页:
<script data-main='/scripts/home-main' src='/scripts/libs/require.js'>
的问题
main.js
文件如何共享jQuery post optimization等常用模块?答案 0 :(得分:38)
requirejs团队为github上的多页面应用程序提供了一些示例。 看看:https://github.com/requirejs/example-multipage
基本上你将拥有以下结构:
page1.html:该应用的第1页。
page2.html:该应用的第2页。
js app:存储特定于应用程序的模块的目录。
lib:保存第三方模块的目录,如jQuery。
common.js:包含requirejs配置,它将是公共模块集的构建目标。
page1.js:用于page1.html的data-main。加载公共模块,然后加载app / main1,即第1页的主模块。
page2.js:用于page2.html的data-main。加载公共模块,然后加载app / main2,第2页的主模块。
答案 1 :(得分:0)
因此,应始终在任何页面上使用require.js以允许模块化和干净的命名空间。我相信每个'app'都需要它自己的main.js脚本。在优化您的站点时,r.js允许您从编译中排除您应该为jQuery做的模块。
这样,require.js将始终在缓存中加载jquery.js,大部分时间从缓存加载。查找可能在您的应用和主页之间缓存的其他模块必须由您自行决定,具体取决于您的用户流量和其他因素。
听起来你有两个项目,一个应用程序和一个营销网站。我认为这些应该分开到相当长的一段时间,并且应该有各自的'js'文件夹,其中包含自己的main.js。