2014-02-18 60 views
5

遇到各种各样的问题让Sails与RequireJS一起工作,主要是因为我找不到任何确定的来源,以最好的方式来做到这一点。有几篇文章讨论这个问题,但是他们年纪较大,而且所有事情都有所不同。如果在后面的版本中修改了Sails应用程序结构,链接器进程等(.0.9.9,,0.10)Sails.js + RequireJS配置

因此,首先希望看到创作者能够正确地启发社区,问题是......如果我计划在我的客户端代码中使用AMD/RequireJS + Backbone方法,并且想要在grunt中使用R.js Optimizer来构建我的生产JS文件并自动解决所有嵌套的依赖关系(而不是必须手动列出),我是不是应该使用--linker选项创建应用程序并自己手动管理grunt构建过程?

此外,在目录结构应该放置“供应商”目录,其中包含像Underscore,jQuery,Backbone等所有依赖的JS库驻留?

回答

0

对于有同样的问题别人,一个快,但只是局部的解决办法是通过从layout.ejs以下禁用脚本注入:

<!-- SCRIPTS --> 

<!-- SCRIPTS END --> 

,只须将直接链接到您的require.js文件:

<script src="/linker/js/components/requirejs/require.js"></script> 

我说这仅仅是一个部分修复,因为GruntFile需要需要以正确的串联文件来实现require任务。

1

我决定这个问题:

  1. 安装插件grunt-requirejs

  2. 写道配置运行建立一个文件夹中/tasks/config/requirejs.js

例:

module.exports = function(grunt) { 
    grunt.config.set('requirejs', { 
    dev: { 
     options: { 
      baseUrl: "assets/", 
      name: 'main', 
      optimize: "uglify2",//'none',//"uglify2", 
      //wrap: true, 
      paths: { 
       // Major libraries 
        jquery: '../vendor/jquery', 
        underscore: '../vendor/underscore', 
        backbone: '../vendor/backbone', 
        // Require.js plugins 

       }, 
       removeCombined: true, 
       inlineText: true, 
       useStrict: true, 
       out: "build/main.js", 
       waitSeconds: 200 
      }, 
     } 
    }); 

    grunt.loadNpmTasks('grunt-contrib-requirejs'); 
}; 
  1. 加入任务自动启动/注册/ compileAssets.js

例子:

module.exports = function (grunt) { 
    grunt.registerTask('compileAssets', [ 
     'clean:dev', 
     'jst:dev', 
     'less:dev', 
     'copy:dev', 
     'coffee:dev', 
     'requirejs:dev' 
    ]); 
}; 

你也必须调整只是呻吟在你自己,不要害怕改变任何东西。在设计时,最好将脚本存储在Assets文件夹中,因为它很方便。

+0

我按照这个指南,但由于某种原因,我的'build/main.js'没有正确填充。它只包含'define(“main”,function(){}); ' – danba