RequireJS:多个main.js?

wil*_*age 31 javascript module requirejs

我一直在使用requireJS构建单页应用程序,并且到目前为止还爱它.我已经开始在主应用程序之外开发网站的其他部分,并且我不确定如何(或是否)使用requireJS.

在我的主应用程序中,所有内容都由此脚本标记触发:

<script data-main='/scripts/main' src='/scripts/libs/require.js'>
Run Code Online (Sandbox Code Playgroud)

我现在正在开发主页,它有自己的前端脚本.在获取站点时使用优化器将所有这些脚本捆绑到一个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)
Run Code Online (Sandbox Code Playgroud)

应用程序:

<script data-main='/scripts/app-main' src='/scripts/libs/require.js'>
Run Code Online (Sandbox Code Playgroud)

主页:

<script data-main='/scripts/home-main' src='/scripts/libs/require.js'>
Run Code Online (Sandbox Code Playgroud)


问题

  1. 如何使用RequireJS开发网站的不同部分?
  2. 是否建议有多个main.js文件?
  3. 我的不同main.js文件如何共享jQuery post optimization等常用模块?

Put*_*ipa 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页的主模块.


Tho*_*vis -1

因此,require.js 应始终在任何页面上使用,以实现模块化和干净的命名空间。我相信每个“应用程序”都需要它自己的 main.js 脚本。优化站点时,r.js 允许您从编译中排除模块,这对于 jQuery 应该始终执行。

这样,require.js 将始终动态加载 jquery.js,并且大部分时间从缓存中加载。查找可能在您的应用程序和主页之间缓存的其他模块必须由您自行决定,并且取决于您的用户流量和其他因素。

听起来您有两个项目,一个应用程序和一个营销网站。我相信这些应该在很大程度上分开,并且应该有自己各自的“js”文件夹,其中包含自己的 main.js。

  • 这个答案本质上是在说:“不要做你想做的事。” 有时这是一个不错的答案,但在这种情况下,我想知道他所做的事情在技术上是否可行。我们真的对这个问题了解得足够多,知道他的应用程序是否太大,需要拆分吗?如果他尝试构建一个单页应用程序,他可能需要为应用程序的不同部分提供多个 require 文件...... (22认同)
  • 我认为这在哲学上或技术上都不正确。在很多情况下,单个应用程序可能包含多个不应立即下推的代码块。@PutzKipa 的以下答案很有帮助。 (2认同)