javascript - Sails.js 与 React.js,如何正确做?

标签 javascript node.js reactjs gruntjs sails.js

我想在我的 Sails.js 应用程序中集成 React.js + browserify。

为此,我使用了一个 grunt-plugin grunt-react .

我创建了一个文件/tasks/config/browserify.js

module.exports = function(grunt) {

  grunt.config.set('browserify', {
    //dev: {
      options:      {
        transform:  [ require('grunt-react').browserify ],
        extension: 'jsx'
      },
      app:          {
        src:        'assets/jsx/app.jsx',
        dest:       '.tmp/public/js/app.js'
      }
    //}
  });

  grunt.loadNpmTasks('grunt-browserify');
};

然后我在compileAssets.jssyncAssets.js中加了一行:

// compileAssets.js

module.exports = function (grunt) {
    grunt.registerTask('compileAssets', [
        'clean:dev',
        'stylus:dev',
        'browserify',   // <<< this added
        'copy:dev'
    ]);
};

// syncAssets.js

module.exports = function (grunt) {
    grunt.registerTask('syncAssets', [
        'stylus:dev',
        'browserify',   // <<< this added
        'sync:dev'
    ]);
};

然后我在copy.js中修改了一行。

// copy.js

module.exports = function(grunt) {

    grunt.config.set('copy', {
        dev: {
            files: [{
                expand: true,
                cwd: './assets',
                src: ['**/*.!(styl|jsx)'],   /// <<< this modified
                dest: '.tmp/public'
            }]
        },
        build: {
            files: [{
                expand: true,
                cwd: '.tmp/public',
                src: ['**/*'],
                dest: 'www'
            }]
        }
    });

    grunt.loadNpmTasks('grunt-contrib-copy');
};

成功了!

但我觉得我做得不太对。

如果我在 /tasks/config/browserify.js 中取消注释行 dev: {},如下所示:

module.exports = function(grunt) {

  grunt.config.set('browserify', {
    dev: {                           /// <<< this uncommented
      options:      {
        transform:  [ require('grunt-react').browserify ],
        extension: 'jsx'
      },
      app:          {
        src:        'assets/jsx/app.jsx',
        dest:       '.tmp/public/js/app.js'
      }
    }                           /// <<< this uncommented
  });

  grunt.loadNpmTasks('grunt-browserify');
};

如果我在 compileAssets.jssyncAssets.js 中进行更改:

// compileAssets.js

module.exports = function (grunt) {
    grunt.registerTask('compileAssets', [
        'clean:dev',
        'stylus:dev',
        'browserify:dev',   // <<< this added :dev
        'copy:dev'
    ]);
};

// syncAssets.js

module.exports = function (grunt) {
    grunt.registerTask('syncAssets', [
        'stylus:dev',
        'browserify:dev',   // <<< this added :dev
        'sync:dev'
    ]);
};

它不起作用!

值得担心吗?

当我在 compileAssets.jssyncAssets.js 文件中添加 browserify: dev 时,为什么它不起作用?

最佳答案

我找到了正确的解决方案。

UPD:现在,我们可以使用 https://github.com/erikschlegel/sails-generate-reactjs

关于javascript - Sails.js 与 React.js,如何正确做?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28331032/

相关文章:

reactjs - reactjs中的密码验证

javascript - 使用react-router获取服务器端数据

javascript - Momentjs 将总周数转换为月份缩写 (javascript)

javascript - 在没有 Node 的 Apache 环境中加载 React 组件的模块

javascript - 使用 Javascript (ES6) 删除元素中的第一个字母

json 站点地图中的 Javascript 部分通配符匹配

javascript - 使用 JavaScript/jQuery 在重定向上发送 POST 数据?

node.js - Node.js 只能用于网站吗?

javascript - 套接字.io : How to emit an Array and a Variable simultaneously

javascript - 数组中 JavaScript 展开语法的时间复杂度是多少?