2013-12-14 54 views
0

我知道我们可以使用requirejs将文件合并到一个js文件中。 类似于以下配置。requirejs HTML结构

module.exports = { 
     baseUrl: 'js/', 
     mainConfigFile: 'src/js/common.js', 
     dir: 'scripts/', 
     optimize: 'uglify2', 
     modules: [ 
     { 
      name: 'common', 
      include: [ 
       'jquery', 

      ] 
     } 

     ] 
    }; 

我的结果到一个文件是

common.js 
---------------- 
jquery.js 
modernizr.js 
common.js 

我的问题是,我们是否还需要把require.js文件scripts文件夹,并使用以下格式

<script data-main="scripts/common" src="scripts/require.js"></script> 

或我们可以使用

<script src="scripts/common.js"></script> 

当文件被压缩成一个文件?

回答

2

您仍然需要加载require.js实际使用它提供的模块加载优势的常用方法,尤其是在您使用异步功能的情况下。但是,你可以看看almond提供您的代码使用AMD和(from the README):

  • 优化所有模块合并成一个文件 - 没有动态代码加载。
  • 所有模块在其define()调用中都有ID和依赖数组--DemandJS优化器将为您处理此问题。
  • 只有一个 requirejs.config()或require.config()调用。
  • 请勿使用RequireJS multiversion support/contexts
  • 请勿使用require.toUrl()或require.nameToUrl()。
  • 请勿使用packages/packagePaths config。如果您需要 使用具有主属性的软件包,则 volo可以创建适配器模块,因此 可以在没有此配置的情况下工作。使用amdify add命令 将依赖项添加到您的项目中。

杏仁是伟大的,因为它不需要require.js可言;它用自己封装了自己的代码,这是一个非常小的AMD加载程序框架,远不如主库那么强大。然后你可以直接在你的HTML链接一个优化的文件:

<script src="scripts/common.js"></script> 

的Gruntfile配置为almond可能是这个样子:

compile: { 
    options: { 
     name: 'path/to/almond', 
     baseUrl: 'js', 
     include: ['main'], 
     insertRequire: ['main'], 
     mainConfigFile: 'scripts/config.js', 
     out: 'scripts/main.js', 
     optimizeAllPluginResources: true, 
     wrap: true 
    } 
} 

以上是所有标准r.js样板,你可以在almond主页找到更多的例子。