这是我第一次使用react创建webapp,其中不免还是遇到了好多坑,现在来和大家分享一下这其中遇到的一些坑。。。。
首先npm这个东西我就不说了,相信网上其他的详细教程应该也不会太少,那么在创建我们的webapp之前,我们先来做一些准备工作,一下的几样东西我们先准备好。。。。
- $npminstallbabel-g
- $npminstallwebpack-g
- $npminstallwebpack-dev-server-g
这些全局包是我们在后面的创建app时必备的,所以我们要先准备好。。。。
那么接下来我们就要来生产webapp了,首先我们初始化npm,生产package.json文件
- $mkdirreactApp
- $cdreactApp/
- $npminit
- name:(reactApp)react-test
- version:(1.0.0)
- description:react-text
- entrypoint:(index.js)
- testcommand:
- gitrepository:
- keywords:
- author:
- license:(ISC)
- Abouttowriteto/Users/tianqixin/www/reactApp/package.json:
- {
- "name":"runoob-react-test","version":"1.0.0","description":"菜鸟教程react测试","main":"index.js","scripts":{
- "test":"echo\"Error:notestspecified\"&&exit1"
- },"author":"","license":"ISC"}
- Isthisok?(yes)
OK,现在我们的本地应用包已经创建好了,因为在这个项目中我们是要使用rect,所以我们需要先安装他,--save命令用于将包添加至package.json文件。。。。。
- $npminstallreact--save
- $npminstallreact-dom--save
同时我们也要安装一下babel插件,这些插件的目的是为了解析jsx,至于什么是jsx我们后面再说,,,,
- $npminstallbabel-core--save
- $npminstallbabel-loader--save
- $npminstallbabel-preset-react--save
- $npminstallbabel-preset-es2015--save
好了,一些必要的插件我们已经安装成功了,那么接下来我们就可以创建文件了。。。。
- $touchindex.html
- $touchApp.jsx
- $touchmain.js
- $touchwebpack.config.js
打开webpack.config.js,我们来配置一下文件,
- varconfig={
- //此处指明路口文件位置
- entry:'.main.js',//配置打包结果,
- //path配置定义了输出的文件位置
- //filename则定义了打包结果文件的名称
- output:{
- path:'./',filename:'index.js',},//设置本地服务器端口号为9001,此端口可以自己设定,但记住不能与其他服务端口重复
- devServer:{
- inline:true,port:9001
- },//定义了对模块的处理逻辑,这里可以用loaders定义一系列的加载器,以及一些正则,
- //当需要加载的文件匹配test的正则时,会调用后面的loader对文件进行处理,
- //所以这就是webpack骚的可怕的地方。。。。。
- module:{
- loaders:[{
- test:/\.jsx?$/,exclude:/node_modules/,loader:'babel',query:{
- presets:['es2015','react']
- }
- }]
- }
- };
- module.exports=config;
然后打开package.json文件,修改其中scripts的内容,修改内容如下
- {
- "name":"runoob-react-test","scripts":{
- "start":"webpack-dev-server--hot"
- },"license":"ISC","dependencies":{
- "react":"^0.14.7","react-dom":"^0.14.7"
- }}
修改完成之后,我们就可以使用npm start来启动服务了。
--hot命令会在文件变化后重新载入,这样我们就不需要在代码修改之后重新刷新浏览器就能看到变化了。。。
接下来才算是正式地开始写我们的webapp,那么第一步我们要做的就是入口文件的内容啦
在主界面设置我们的应用根元素,同时引入index.js脚本文件。
- <!DOCTYPEhtml><html>
- <head>
- <Metacharset="UTF-8">
- <title>ReactApp</title>
- </head>
- <body>
- <divid="app"></div>
- <scriptsrc="index.js"></script>
- </body></html>
然后配置我们的App.jsx和main.js文件,这是我们的react组件。这个组件的任务就是输出Hello World!!!
App.jsx内容
- importReactfrom'react';
- classAppextendsReact.Component{
- render(){
- return(
- <div>
- HelloWorld!!!<br/>
- </div>
- );
- }
- }
- exportdefaultApp;
main.js内容
- importReactfrom'react';
- importReactDOMfrom'react-dom';
- importAppfrom'./App.jsx';
- ReactDOM.render(<App/>,document.getElementById('app'))
那么我们要注意的一点是,如果想要组件可以在任何的应用中使用,需要在创建后使用export将其导出,然后在我们需要这个组件的时候,使用import来将其导入。。。
好啦,昨晚了以上的所有步骤,那么接下来我们就运行服务
- $npmstart
这样我们就可以访问 http://localhost:9001 来看一下我们这个简单的webapp了