react 简单搭建

摘要:
参考:https://segmentfault.com/a/1190000015836090*到此,react项目基本配置完成了*-----------------------*Eslint代码检测1.安装Eslint,代码检测工具:npminstalleslint--save-dev2.初始化.eslintrc文件-----------------------针对项目中所需要用到的其他技术框架,逐步完善本项目用到less、mobx、route等相关插件----------------------------1.引用less文件,需要安装:npminstall--save-devless-loaderless2.引用antd组件:a.安装antdb.为了实现按需加载,不需要去单独引用样式文件,需要安装:babel-plugin-import安装成功后配置.babelrc文件3.安装reactrouter组件react-router-dom暴露出react-router中暴露的对象与方法,因此你只需要安装并引用react-router-dom即可Route:当location与Route的path匹配时渲染Route中的Component。

1.新建一个文件夹

2.执行npm init

3.整理新建工程目录结构,包含必要文件index.html 和 index.js

4.安装react 、react-dom

5. 安装webpack(穿件webpack.config.js文件)

npm install --save-dev webpack

6.安装Babel编译器(创建babel.config.js文件)

JSX预处理器依赖:

npm install babel-cli babel-preset-react

ES5兼容处理器依赖:

npm install --save-dev @babel/core @babel/cli @babel/preset-env

npm install --save @babel/polyfill

******babel 预置preset 插件***********

npm install --save-dev @babel/preset-env //js编译,可让您使用最新的JavaScript

npm install --save-dev @babel/preset-react //react

到此一个简单的react项目已经可以执行了,但目前为止的js不能使用JSX语法/ES6编写

之后的操作就是根据业务需要不断扩展

7. 加载JS:babel-loader加载 ES2015+ 代码,然后使用Babel转译为 ES5

npminstall --save-dev babel-loader

**使用happypack多线程打包编译js,提升打包效率

npminstall --save-dev happypack

*可以使用JSX、ES6编写js

8.加载 CSS:npm install --save-dev style-loader css-loader

为了从 JavaScript 模块中import一个 CSS 文件,你需要在webpack文件的module配置中安装并添加style-loadercss-loader

*可以在js文件导入css文件

9.加载图像、加载字体:npm install --save-dev file-loader

10. 加载:npm install --save-dev url-loader

*可以在正常引入img文件、字体文件等

----------------------------

*补充*

webpack配置文件

开发环境下,使用自动编译和模块热替换

生产环境,只需要直接打包文件,并且目标偏向于更小、更轻量、更优化,以改善加载速度

---------------------------

11.配置webpack开发环境

a.使用 source map:追踪到错误和警告在源代码中的原始位置

devtool: 'inline-source-map',

b.输出管理output: {}

    输出文件名使用哈希(hash)]并输出多个 bundle,需要通过插件引入

    npm install --save-dev html-webpack-plugin

*当前状态下,会生成dist目录

C:实现在代码发生变化后自动编译代码

   ** 观察模式:--watch 观察代码变化自动编译,坏处是浏览器不会自动更新
** webpack-dev-server 可以弥补watch缺陷
      
npm install --save-dev webpack-dev-server   
** webpack-dev-middleware   
      webpack-dev-server实际上相当于启用了一个expressHttp服务器+调用webpack-dev-middleware  
二者的区别仅在于 webpack-dev-server 是封装好的,除了 webpack.config 和命令行参数之外,很难去做定制型开发。
而 webpack-dev-middleware 是中间件,可以编写自己的后端服务然后把它整合进来,相对而言比较灵活自由
D:模块热替换,局部更新模块,而不用全部刷新  
配置
new webpack.HotModuleReplacementPlugin()
react 简单搭建第1张
*使用自动编译后,将不会生成dist目录
12.配置webpack生产环境
react 简单搭建第2张

a.Minification:压缩js文件、具有删除未引用代码(dead code)的能力足矣

使用插件:UglifyJsPlugin

安装:npm i -D uglifyjs-webpack-plugin

b.Split CSS: 分离CSS

  b.切块,防止重复

    使用:从webpack v4开始,CommonsChunkPlugin删除了,而改为optimization.splitChunks

参考:https://segmentfault.com/a/1190000015836090

*到此,react项目基本配置完成了*

-----------------------

*Eslint 代码检测

1.安装Eslint,代码检测工具:npm install eslint --save-dev

2.初始化.eslintrc文件

-----------------------

针对项目中所需要用到的其他技术框架,逐步完善

本项目用到less、mobx、route等相关插件

----------------------------

1.引用less文件,需要安装:npm install --save-dev less-loader less

2.引用antd组件:

a.安装antd

b.为了实现按需加载,不需要去单独引用样式文件,需要安装:babel-plugin-import

安装成功后配置.babelrc文件

3.安装 react router组件

react-router-dom暴露出react-router中暴露的对象与方法,因此你只需要安装并引用react-router-dom即可

react 简单搭建第3张

Route: 当location与Route的path匹配时渲染Route中的Component。如果有多个Route匹配,那么这些Route的Component都会被渲染。

Router:Router组件就针对不同功能和平台对应用:

  • <BrowserRouter> 浏览器的路由组件
  • <HashRouter> URL格式为Hash路由组件
  • <MemoryRouter> 内存路由组件
  • <NativeRouter> Native的路由组件
  • <StaticRoute
<Switch>组件只渲染匹配地址(location)的第一个<Route>或者<Redirect>
<Redirect>
当这个组件被渲染是,location会被重写为Redirect的to指定的新location
配置过程中,刷新除第一个Route路由,均报错Connot get/url
原因:CSR https://blog.csdn.net/zwkkkk1/article/details/83411071
解决:
publicPath: '/',
historyApiFallback: true,
publicPathallows you to specify the base path for all the assets within your application.historyAPIFallbackwill redirect 404s to/index.html.

安装mobx
4.在目录第一级新建文件夹stores---专门存放和管理数据源
安装 mobx状态管理: npm install mobx --save
React 绑定库:npm install mobx-react --save

mobx-react 将mobx和react链接起来 通过<Provider>Api组件把mobx store整体注入到react中,所以Provide放置在节点最外层,包裹组件都可以使用store内的变量、方法,类似全局变量(嵌套一层,代表着上下文)


React 和 MobX 是一对强力组合。React 通过提供机制把应用状态转换为可渲染组件树并对其进行渲染。而MobX提供机制来存储和更新应用状态供 React 使用。
mobx使用装饰器,所以需要安装装饰器解析插件:
npm install --save-dev @babel/plugin-proposal-decorators
   npm install --save-dev @babel/plugin-proposal-class-properties
@inject('store')  //注入
@observer //注入的store观察,若store中全局变量发生变化,凡是被本页面引用到的也会变化

react 简单搭建第4张

import { Provider } from 'mobx-react' // mobx-react 将mobx和react链接起来  Provide组件把mobx整体注入到react中
@observable Time = ''  //@observable定义mobx全局变量、全局变化、跨页面的
@action 改变@observable所修饰的变量
/监听变量,当变量发生变化,自动计算,返回一个新的结果,也相当于一个新的变量
//当Time和Todos任何一个变量改变,这个方法重新执行,返回一个新的结果
@computed get desc(){
return `${this.Time} 还有${this.Todos.length} 条任务正在进行`
}
react 简单搭建第5张
5.安装react-loadable:react-loadable是一个在react应用是使用非常简单的轻量级的代码分割组件库
*git 版本管理

1.git init

2.新建.gitignore文件

免责声明:文章转载自《react 简单搭建》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇android layout 按比例布局Oracle Express Edition下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

转:linux的fatab文件详解

/etc/fstab是用来存放文件系统的静态信息的文件。位于/etc/目录下,可以用命令less /etc/fstab 来查看,如果要修改的话,则用命令 vi /etc/fstab 来修改。        当系统启动的时候,系统会自动地从这个文件读取信息,并且会自动将此文件中指定的文件系统挂载到指定的目录。下面我来介绍如何在此文件下填写信息。      ...

如何用webpack搭建vue项目?本文案例详解

前言:都2020年了,感觉是时候该学一波webpack了,趁着最近有时间,就学了一下,等把官网上的webpack结构和模块大概看了一遍之后,就感觉可以开始搭个项目实战一下了,从0开始,一步步记录下来 使用版本: webpack4.x 1.包含插件和loader * html: html-webpack-plugin clean-webpack...

taro教程

taro适配多端 介绍Taro是一套遵循 React 语法规范的多端统一开发框架 多端统一开发框架,支持用 React 的开发方式编写一次代码,生成能运行在微信小程序、H5、React Native 等的应用。 Taro 是一套遵循 React 语法规范的 多端开发 解决方案。现如今市面上端的形态多种多样,Web、React-Native、微信小程序等各种...

【转】shell命令中&amp;gt;/dev/null 2&amp;gt;&amp;amp;1的实现原理

异步执行 exec("/alidata/server/php/bin/php /nas/wxdoctor/index.php App/Common/WordsPic/user_id/".$user_info['user_id']."/goods_id/".$goods_id."."/open_id/".$user_info['open_id']." &...

linux下硬盘的分区:

提到硬盘的分区,以前就是很乱,有什么主分区/扩展分区/逻辑分区等;它们有什么区别呢?现在简单的了解一下; 由于在MBR的主引导记录中的分区表里面最多只能记录4个分区记录,这个不够用啊,为了解决这个问题,就允许创建一个扩展分区,在扩展分区里面我们可以继续分区(即逻辑分区);例如:我们最多可以创建4个主分区,当我们要创建6个分区时:我们可以创建3个主分区1个扩...

babel tsc webpack

我要用啥?js的话:babel编译+webpack模块打包ts的话:tsc编译成js+babel编译+webpack模块打包浏览器情况:如果您的浏览器支持es6所有语法那么就可以只用webpack来处理模块部分,如果你的浏览器连模块部分也支持,那我觉得就不需要任何工具了。当然如果你只是写了es5的语法也没有模块,那么也不需要任何工具服务器情况:如果你用的是...