Sails.js + RequireJS配置

时间:2014-02-18 21:45:38

标签: backbone.js requirejs sails.js

有各种各样的问题让Sails与RequireJS一起工作,主要是因为我找不到任何明确的方法来做到这一点。有几个帖子可以讨论这个问题,但它们比较老,而且所有事情都有所不同。非常希望看到创作者在适当的方式上启发社区,因为后者版本中的Sails应用程序结构,链接器进程等的更改(.0.9.9,,0.10)

所以,第一个问题是......如果我打算在我的客户端代码中使用AMD / RequireJS + Backbone方法,并希望在grunt中使用R.js Optimizer来构建我的生产JS文件,如果我不使用--linker选项创建应用程序并自己手动管理grunt构建过程,那么自动解析所有嵌套依赖项(而不必手动列出);

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

2 个答案:

答案 0 :(得分:1)

我决定了这个问题:

  1. 安装grunt-requirejs

  2. 的插件
  3. 编写配置以在文件夹/tasks/config/requirejs.js中运行build

  4. 示例:

    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. 在tasks / register / compileAssets.js
    2. 中添加到autostart

      示例:

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

      你也必须调整自己的咕噜声,不要害怕改变任何事情。在设计时,最好将脚本存储在Assets文件夹中,因为它很方便。

答案 1 :(得分:0)

对于具有相同问题的其他人,快速但仅部分修复是通过从layout.ejs删除以下内容来禁用脚本注入:

<!-- SCRIPTS -->

<!-- SCRIPTS END -->

然后直接链接到您的require.js文件:

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

我说这只是部分修复,因为GruntFile需要实现require任务才能正确连接文件。