RequireJS-使插件成为默认加载程序
我们的代码库将逐渐转向React框架,使用令人难以置信的JSX Transformer JSX Transformer对于普通Javascript文件是幂等的,并将JSX方言转换为Javascript。因此,我希望避免写“jsx!”在每个依赖项前面-我希望JSX成为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
这在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任务只编译必要的文件则起到了一定的作用。