react开发项目到上线全过程详解
随着react的流行,越来越多的前端工程师使用react来进行开发,当时用react时,creact-react-app无疑进入了大家的眼帘,本篇文章主要讲述如何从无到有的使用creact-react-app开发react应用,然后本地调试,直到最后的上线运行。 ? 本篇文章内容结构说明,主要有以下12个部分: 1.?安装nodejs 2.使用nodejs的npm包安装create-react-app模块 3.?使用creat-react-app模块创建我们的项目 4.?了解控制我们项目运行测试打包的几个命令 5.?通过npm start运行我们的项目 6.?查看生产的项目目录的结构,并了解其作用 7.?开始创建几个我们自己的组件 8.?再次运行我们的项目 9.?开始打包生产环境中需要的代码 10.?将我们的代码部署进入我们的服务器 11.?ok,上线了,我们可以让用户正式访问了 12.?维护调试 一、安装node: 请参考以下nodejs安装教程: Node.js安装配置 二、检测npm包是否可用: 环境变量是什么?如何配置环境变量 ? 三、使用 create-react-app 快速构建 React 开发环境 create-react-app 自动创建的项目是基于 Webpack + ES6 。 执行以下命令创建项目: $ cnpm install -g create-react-app
npm :?表示调用的随node一起安装的npm包 install :?顾名思义,就是安装的意思 -g :?表示全局安装,安装后在系统的任意位置都能使用,这就是全局安装的意思 create-react-app:?这就是我们要安装的模块 提示:安装好后,如果你想卸载,可以直接把install改为uninstal即可,也就是在前面个un就可以表示卸载了。有时候卸载后在安装可能会报写错,此时你直接定位的create-react-app安装目录,然后把这个目录删除一般就能解决了。 四、常用命令解释 ? npm start ? ??命令作用:Starts the development server. ? npm run build ? ? ?命令作用:构建用于生产的静态代码【我们开发完成后,发布时就使用此命令获得我们想要的用于生产的代码放入服务器】 ? npm test ? ? ?命令作用:运行测试服务器 ? npm run eject ? ?命令作用: ? ? 复制构建依赖关系,配置文件和脚本进入应用程序目录。(默认依赖关系是隐藏的,如果你执行此了操作,这你的项目就会出现此依赖关系) 注意:此操作是不可逆的, ? ?如何开始你的项目: ? cd project_name ? npm start 五、查看项目目录结构 大致如下图所示,共有三个文件夹,四个文件 解释如下: 三个文件夹 ?node_modules? //用来盛放你安装的所有node模块的文件夹 public? ? ? ? ? ? ? ? //用来盛放所有公共资源的文件夹,比如html模板,项目图标 src? ? ? ? ? ? ? ? ? ? ?//用来盛放你自己代码的文件夹,默认生成app.js代码也在里面 四个文件 .gitignore? ? ? ?//?这个是用来定义那些在提交到远程代码库时要忽略的文件 package.json //用来声明项目的各种模块安装信息,脚本信息等 package-lock.json //用来锁定模块安装版本的,能确保大家安装的模块版本一致 README.md? //盛放关于这个项目的说明文件(全英文的,有兴趣可以看看) ? src文件夹 然后我们来重点看看src文件夹,因为我们的react组件代码待会也会写在里面。 这里面的文件也不多,就四部分 1、APP相关的js,css文件? ?//自动给我们创建的一个组件 2、index相关的js,css文件 3、一个logo.svg图标? ? ? ? ? ? //默认的一个简单图标文件 4、?一个registerServiceWorker.js文件 //此文件能进行缓存一些资源,一般是用到生产环境的,主要是用来加快访问速度, ? 大致的分析下组件结构 主要说些比较重要的文件 1. 首先是public目录下盛放着index.html模板,如果开发单页应用,那么所有的代码都会渲染在这里。【index.html文件中也就三部分内容。1.通过meat标签引入的主页一个自适应的viewport声明。2.?通过link标签引入的一个项目基本 m配置文件anifest.json和图标,3.?一个用来让react组件渲染的div标签】 2.?也是在public目录下的manifest.json文件,此文件记录着这个react的APP应用的基本配置信息,他类似于Android的AndroidManifest.xml 3.?然后就是在scr目录下的index.js文件,他不是一个react组件,他是链接react与htnl模板的桥梁,所有的react组件最终都是由他进行渲染到html模板中。然后整个文件中引入了一个系统默认生成的组件APP,有index.js进行渲染。 4.?registerServiceWorker.js文件,这个文件是用于生产环境的,它可以缓存些资源,让用户在离线模式下也能访问缓存的内容,以给用户更好的体验,开发环境中没什么用处。。。 5.?最后还有个app.test.js文件,主要是用来组件测试的,有兴趣可以取好好了解下,这里就不多讲这个。 ? 六、创建我们自己的组件 2. 我们在src下新建一个目录:myselfComponent,用来盛放我们新创建的组件 3.?我们分别创建两个组件C1,C2,他们分别各显示一句话即可, 4.?然后我们在index.js里面引入C1,C2组件, 5.?然后在浏览器查看运行效果 C1.js import React,{ Component } from ‘react‘; import ‘./C1.css‘; ? class C1 extends Component { ? render() { ? ? return ( ? ? ? <div className="c1"> ? ? ? ? Hello,我是在src/myselfComponent目录下的C1.js文件中的C1组件 我引入了相同目录下的 C1.css 文件,用来给我包含的文字设为红色 ? ? ? </div> ? ? ? ); ? } } ? export default C1; C2.js import React,{ Component } from ‘react‘; import ‘./C2.css‘; ? class C2 extends Component { ? render() { ? ? return ( ? ? ? <div className="c2"> ? ? ? ? Hello,我是在src/myselfComponent目录下的C2.js文件中的C1组件 我引入了相同目录下的 C2.css 文件,用来给我包含的文字设为蓝色 ? ? ? </div> ? ? ? ); ? } } ? export default C2; index.js import React from ‘react‘; import ReactDOM from ‘react-dom‘; import ‘./index.css‘; import App from ‘./App‘; import C1 from ‘./myselfComponent/C1.js‘; import C2 from ‘./myselfComponent/C2.js‘; import registerServiceWorker from ‘./registerServiceWorker‘; ? ReactDOM.render( ? <div> ? ? <C1/> ? ? <App /> ? ? <C2/> ? </div>, ? ? document.getElementById(‘root‘)); registerServiceWorker(); ok,css文件就不展示了,免得让你们眼睛看花了 ? ?在浏览器中的运行效果 可以看到,运行的非常完美 ? ?再复杂点 上面中,我们是把所有组件全部引入了index.js文件中,然后统一渲染的。但是在实际开发中组件间必然存在嵌套关系,就是一个组件里面嵌套着另一个组件, 现在我们就来在写个组件C3,然后把他嵌套进APP组件中。 C3.js import React,{ Component } from ‘react‘; import ‘./C3.css‘; ? class C3 extends Component { ? render() { ? ? return ( ? ? ? <div className="c3"> ? ? ? ? Hello,我是在src/myselfComponent目录下的C3.js文件中的C3组件 我引入了相同目录下的 C3.css 文件,用来给我包含的文字设为粗体黄色 ? ? ? </div> ? ? ? ); ? } } ? export default C3; APP.js ? import React,{ Component } from ‘react‘; import logo from ‘./logo.svg‘; import ‘./App.css‘; import C3 from ‘./myselfComponent/C3.js‘; ? class App extends Component { ? render() { ? ? return ( ? ? ? <div className="App"> ? ? ? ? <header className="App-header"> ? ? ? ? ? <img ? ? ? ? ? ? ? ?src={ logo } ? ? ? ? ? ? ? ?className="App-logo" ? ? ? ? ? ? ? ?alt="logo" /> ? ? ? ? ? <h1 className="App-title">Welcome to React</h1> ? ? ? ? </header> ? ? ? ? <C3 /> ? ? ? ? <p className="App-intro"> ? ? ? ? ? To get started,edit <code>src/App.js</code> and save to reload. ? ? ? ? </p> ? ? ? </div> ? ? ? ); ? } } ? export default App; ? 七、打包为生产版 执行命令: num run build 执行此命令后,他会在我们的项目目录下创建一个build文件夹,里面存放的就是生产环境需要的代码了 ? ? 八、将其放在服务器中执行 这部就比较简单了,直接将build里面的所有文件复制到服务器的根目录下即可,如下(这里我是直接复制到我本地搭建的apach服务器的根目录里面的) ? ?在看浏览器里面的运行结果(我的apach服务器的端口为8087) ? ?九、将其放到远程服务里面部署 如果你不知道如何将文件上传到远程服务器,请参考这一篇文章 怎么把H5上传到服务器 在浏览器中访问,ok,一切正常 注意:如果你不想将文件复制到根目录,那么你需要修改inde.html文件中对js和css文件的路径,不然无法正常访问。 ? ?十、部署到服务器上后的维护 1. 当要开发新功能时,我们直接在本地开发好,然后打包生产文件,最后直接放到远程服务器里面就可以了 2.?当出问题后,我们可以直接在浏览器里面访问,然后在线的打开控制台调试,并修改运行中的html代码,当改好后,再在本地修改即可。当然如果bug很复杂的话,那就需要认真思考了,不过要相信没有解决不了的bug 再总结下:流程如下 1.?安装nodejs 2.使用nodejs的npm包安装create-react-app模块 3.?使用creat-react-app模块创建我们的项目 4.?了解控制我们项目运行测试打包的几个命令 5.?通过npm start运行我们的项目 6.?查看生产的项目目录的结构,并了解其作用 7.?开始创建几个我们自己的组件 8.?再次运行我们的项目 9.?开始打包生产环境中需要的代码 10.?将我们的代码部署进入我们的服务器 11.?ok,上线了,我们可以让用户正式访问了 12.?维护调试 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |