Javascript 构建React 0.12项目的正确方法是什么?
我刚刚从React 0.11.1升级到0.12.2。到目前为止,我的代码结构是这样的,所以我的组件都在它们自己的目录中,我会使用Grunt将它们编译到一个javascript目录,然后将它们与React.js连接到一个文件中,以便在index.html中使用Javascript 构建React 0.12项目的正确方法是什么?,javascript,node.js,facebook,requirejs,reactjs,Javascript,Node.js,Facebook,Requirejs,Reactjs,我刚刚从React 0.11.1升级到0.12.2。到目前为止,我的代码结构是这样的,所以我的组件都在它们自己的目录中,我会使用Grunt将它们编译到一个javascript目录,然后将它们与React.js连接到一个文件中,以便在index.html中使用 Project |_index.html | JSX |_someFile.jsx | JS |_somefile.js | Lib |_rea
Project
|_index.html
| JSX
|_someFile.jsx
| JS
|_somefile.js
| Lib
|_react.js
| Production
|_concatenated.js
module.exports = function (grunt) {
grunt.initConfig({
pkg: grunt.file.readJSON('package.json'),
react: {
dynamic_mappings: {
files: [
{
expand: true,
cwd: 'jsx/',
src: ['*/*.jsx', '*.jsx'],
dest: 'js/',
ext: '.js'
}
]
}
},
concat: {
dist: {
src: ['js/lib/*.js', 'js/*/*.js'],
dest: 'prod/built.js'
}
},
...
});
};
升级到React 0.12.2后,我收到一条警告消息:有东西正在直接调用React组件。使用工厂或JSX代替。见:h[ttp://fb.me/react-legacyfactory][1] 代码可以工作,但很明显我使用的是一些旧的约定。我读了新的,看起来我所要做的就是向项目中添加require,并调用var React=require'React';
我这样做了,我甚至在package.json中添加了react和reactify以防万一,但现在我得到了一个未捕获的错误:尚未为context加载模块名react:\ux。使用require[]我不太熟悉require,也不太熟悉React现在是如何构建的。连接我所有的JS文件是否与React项目现在应该如何工作相矛盾?您使用的是grunt React的哪个版本?我相信如果您在页面中使用最新版本的react,但您使用较旧版本的react tools编译jsx,则会出现此错误。在运行“npm update”和“npm-v grunt react”后,我有1.4.14版,我还将package.json中的所有内容都设置为使用*以保持最新,但看起来并没有解决我的问题。“npm-v”实际上只是返回npm的版本。如果运行“npm列表反应工具”,是否至少安装了0.12.0?| grunt-react@0.10.0| uu反应-tools@0.12.2| jshint-jsx@0.1.0无关的| uu反应-tools@0.10.0|反应-tools@0.13.0-beta.1 Invalid该错误看起来可能是在使用require.js,但建议使用browserify工具加载react模块。它还将处理将所有文件连接到单个包中的问题。