Sails.js + RequireJS 配置

5

我遇到了很多问题,想让Sails与RequireJS一起工作,主要是因为找不到任何权威的资料来指导我应该如何做。有几篇文章讨论了这个问题,但它们都比较老旧并且处理方式也各不相同。我们真的希望看到Sails的创作者能够向社区传授正确的方法,考虑到Sails应用程序结构、链接器进程等方面在后续版本(.0.9.9, 0.10)中发生的变化。

那么,首先的问题是...如果我打算在客户端代码中使用AMD/RequireJS + Backbone的方式,并且希望使用grunt中的R.js优化器来构建我的生产JS文件并自动解决所有嵌套依赖关系(而不是手动列出它们),那么我是否不应该使用--linker选项创建应用程序,而是手动管理grunt构建过程呢?

此外,在目录结构中应该将包含所有依赖JS库(如Underscore、jQuery、Backbone等)的"vendor"目录放在哪里?

2个回答

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(){}); - danba

0
对于其他遇到同样问题的人,一个快速但只是部分的解决方法是通过从layout.ejs中删除以下内容来禁用脚本注入:
<!-- SCRIPTS -->

<!-- SCRIPTS END -->

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

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

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接