【问题标题】:Sails.js + RequireJS configurationSails.js + RequireJS 配置
【发布时间】:2014-02-18 21:45:37
【问题描述】:

在使 Sails 与 RequireJS 一起工作时遇到各种问题,主要是因为我找不到任何确定的最佳来源。有几篇文章讨论了这个问题,但它们都比较老,而且做的事情都不同。真的很想看到创作者启发社区以正确的方式做到这一点,因为在后面的版本(.0.9.9、,0.10)中对 Sails 应用程序结构、链接器进程等进行了更改

所以,第一个问题是……如果我打算对我的客户端代码使用 AMD/RequireJS + Backbone 方法,并且想在 grunt 中使用 R.js 优化器来构建我的生产 JS 文件和自动解决所有嵌套依赖项(而不是必须手动列出它们),我是否应该使用 --linker 选项创建应用程序并自己手动管理 grunt 构建过程?

另外,“vendor”目录应该放置在目录结构的哪个位置,其中包含所有依赖的 JS 库,如 Underscore、jQuery、Backbone 等。

【问题讨论】:

    标签: backbone.js requirejs sails.js


    【解决方案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. 在 tasks/register/compileAssets.js 中添加到自动启动

    例子:

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

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

    【讨论】:

    • 我已按照本指南进行操作,但由于某种原因,我的 build/main.js 未正确填充。它只包含define("main",function(){});
    【解决方案2】:

    对于遇到相同问题的其他人,一个快速但只是部分修复的方法是通过从 layout.ejs 中删除以下内容来禁用脚本注入:

    <!-- SCRIPTS -->
    
    <!-- SCRIPTS END -->
    

    然后只需放置指向您的 require.js 文件的直接链接:

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

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

    【讨论】:

      猜你喜欢
      • 2013-11-24
      • 2013-05-25
      • 1970-01-01
      • 1970-01-01
      • 2014-04-04
      • 2014-11-22
      • 2018-08-03
      • 2018-05-27
      • 1970-01-01
      相关资源
      最近更新 更多