Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
RequireJS-使插件成为默认加载程序_Requirejs_Reactjs - Fatal编程技术网

RequireJS-使插件成为默认加载程序

RequireJS-使插件成为默认加载程序,requirejs,reactjs,Requirejs,Reactjs,我们的代码库将逐渐转向React框架,使用令人难以置信的JSX Transformer JSX Transformer对于普通Javascript文件是幂等的,并将JSX方言转换为Javascript。因此,我希望避免写“jsx!”在每个依赖项前面-我希望JSX成为RequireJS的默认加载程序 这在RequireJS中可能吗?您可以使用grunt+browserify+reactify轻松编译所有React文件。下面是执行此操作的基本grunt配置: module.exports = fun

我们的代码库将逐渐转向React框架,使用令人难以置信的JSX Transformer

JSX Transformer对于普通Javascript文件是幂等的,并将JSX方言转换为Javascript。因此,我希望避免写“jsx!”在每个依赖项前面-我希望JSX成为RequireJS的默认加载程序


这在RequireJS中可能吗?

您可以使用grunt+browserify+reactify轻松编译所有React文件。下面是执行此操作的基本grunt配置:

module.exports = function(grunt) { 'use strict';

  // Project configuration.
  grunt.initConfig({
    pkg: grunt.file.readJSON('package.json'),
    // Task configuration goes here.
    paths: {},
    browserify: {
      options: {
        transform: ['reactify'],
      },
      dev: {
        src: '<%= paths.src_js %>/app/app.jsx',
        dest: '<%= paths.build_js %>/app.js',
        options: { debug: true }
      },
      prod: {
        src: '<%= browserify.dev.src %>',
        dest: '<%= paths.build_js %>/app.min.js',
        options: { debug: false },
      }
    },
    watch: {
      options: { livereload: true },
      browserify: {
        files: ['<%= paths.src_js %>/app/**/*'],
        tasks: ['browserify:dev'],
      }
    }
  });

  grunt.loadNpmTasks('grunt-contrib-watch');
  grunt.loadNpmTasks('grunt-browserify');

  grunt.registerTask('dev',  ['browserify:dev']);
  grunt.registerTask('prod',  ['browserify:prod']);
};
module.exports=函数(grunt){'use strict';
//项目配置。
grunt.initConfig({
pkg:grunt.file.readJSON('package.json'),
//任务配置在这里。
路径:{},
浏览:{
选项:{
转换:['reactify'],
},
开发人员:{
src:“/app/app.jsx”,
dest:'/app.js',
选项:{debug:true}
},
产品:{
src:“”,
dest:'/app.min.js',
选项:{debug:false},
}
},
观察:{
选项:{livereload:true},
浏览:{
文件:['/app/***'],
任务:['browserify:dev'],
}
}
});
grunt.loadNpmTasks(“grunt-contrib-watch”);
grunt.loadNpmTasks(“grunt-browserify”);
registerTask('dev',['browserify:dev']);
grunt.registerTask('prod',['browserify:prod']);
};

您可以通过
grunt dev
grunt prod

运行它,或者使用jsx命令行工具预编译模块(我不知道require.js,但这似乎是最简单的解决方案).我在这个问题上工作了一段时间,但一直没有找到一个简单的方法来解决这个问题,同时仍然从RequireJS的开发时间工具中获益。我们正在考虑切换到基于网页包的构建系统。这是我们最终用于生产构建的解决方案。在日常开发工作中这样做有些笨拙——如果监视任务没有运行,前端将不会更新。有时watch+compile有点慢,在重新加载页面时还不能完成编译。我在开发和生产中都使用它。grunt watch现在大约需要1.5秒,当使用livereload插件完成构建时,浏览器会自动加载。为了使grunt watch快速运行,我遇到了一些问题,而使多个独立的watch任务只编译必要的文件则起到了一定的作用。