Facebook 官方推出Create-React-App脚手架,基本可以零配置搭建基于webpack的React开发环境,内置了热更新等功能。

详细文档可前往链接:Create-React-App文档

本文将介绍使用Create-React-App脚手架搭建antd-mobile的开发环境。

快速开始:

  1. npm install -g create-react-app /* 安装create-react-app,建议使用cnpm */
  2.  
  3. create-react-app myapp /* 使用命令创建应用,myapp为项目名称 */
  4.  
  5. cd myapp /* 进入目录,然后启动 */
  6.  
  7. npm start

按以上执行,即可快速创建React开发环境。

打开http://localhost:3000/ 查看

环境配置介绍:

一、项目结构:

生成项目后,脚手架为了“优雅”... ...隐藏了所有的webpack相关的配置文件,此时查看myapp文件夹目录,会发现找不到任何webpack配置文件。执行以下命令:

  1. npm run eject

再查看myapp 文件夹,可以看到完整的项目结构:

  1. myapp/
  2.  
  3. node_modules/
  4.  
  5. package.json
  6.  
  7. .gitignore
  8.  
  9. config/
  10.  
  11. paths.js
  12.  
  13. polyfills
  14.  
  15. env.js
  16.  
  17. webpack.config.dev.js
  18.  
  19. webpack.config.prod.js
  20.  
  21. public/
  22.  
  23. index.html / 入口html文件 /
  24.  
  25. scripts/
  26.  
  27. build.js
  28.  
  29. start.js
  30.  
  31. test.js
  32.  
  33. src/
  34.  
  35. App.js
  36.  
  37. index.js / 主入口文件 /

以上加粗文件为主要配置文件。

二、项目配置介绍

此处需要有npm、webpack的基础知识,充电传送门:[webpack学习教程](http://www.jianshu.com/p/42e11515c10f)

查看package.json文件的scripts,

  1. "scripts": {
  2.  
  3. "start": "node scripts/start.js",
  4.  
  5. "build": "node scripts/build.js",
  6.  
  7. "test": "node scripts/test.js --env=jsdom"
  8.  
  9. },

可知,运行时是直接执行scripts文件目录下的js文件。

其中*start.js*为开发环境,*build.js*为打包脚本。

开发环境,代理请求

查看start.js, Facebook基本为每项配置都写了详尽的注释,

start.js脚本启动了dev-server, 这里需要了解的是

  1. function addMiddleware(devServer){
  2.  
  3. ... ...
  4.  
  5. 这个函数调用http-proxy-middleware模块,将代理请求,代理地址在package.json中添加
  6.  
  7. }

在package.json中添加字段proxy,开发环境下dev-server将会自动转发请求:

  1. "proxy": "http://aaa.bbb.com"

SASS、LESS等CSS预处理器配置

Facebook官方在create-react-app升级到某一版本,突然丢掉了默认对sass、less等预处理器的支持,官方文档说明

于是,只能自己动手,在config目录下,webpack.config.dev.js 和 webpack.config.prod.js文件,没有抽出 loader、postcss之类一般共用的配置,于是,在两个文件夹都要一起配置,也可以抽出共用部分,以便维护。

这里以webpack.config.dev.js举例,webpack.config.prod.js一样配置即可:

SASS-loader:

1、命令行,在当前目录执行:

  1. npm install sass-loader node-sass --save-dev

2、找到webpack.config.dev.js文件中 loaders中的第一项exclude(值为数组),排除scss文件,否则将被'url-loader'捕获。

  1. {
  2.  
  3. exclude: [
  4.  
  5. /\.html$/,
  6.  
  7. /\.(js|jsx)(\?.*)?$/,
  8.  
  9. /\.css$/,
  10.  
  11. /\.json$/,
  12.  
  13. /\.svg$/,
  14.  
  15. /\.scss$/ ....新增项!
  16.  
  17. ]

3、loaders新增一项:

  1. {
  2.  
  3. test: /\.scss$/,
  4.  
  5. loader: 'style!css!postcss!sass?outputStyle=expanded'
  6.  
  7. },

至此,SASS文件就可以正常打包了(此处针对SCSS文件,如用到SASS,可将SCSS的正则修改下),LESS文件类似,不再赘述。

三、antd-mobile的引入及配置

在命令行执行:

  1. npm install antd-mobile --save

安装完毕即可,现版本1.0.6

移动端高清方案

因0.8以后的版本引入移动端高清方案,因此需要在webpack等增加相应配置,**必须配置!**,官方说明

按官方说明配置即可。

按需引入

为减少打包后体积以及方便书写,可用babel-plugin-import插件,配置后引入模块可如下:

  1. import {Picker} from 'antd-mobile';

自动引入CSS和JS,无需再引入整个antd-mobile的整个CSS文件

使用如下:

命令行执行:

  1. npm install babel-plugin-import --save-dev

安装完毕后,在根目录新建文件,命名: .babelrc.js

  1. {
  2.  
  3. "presets": [
  4.  
  5. "es2015",
  6.  
  7. "react"
  8.  
  9. ],
  10.  
  11. "plugins": [
  12.  
  13. [
  14.  
  15. "import",
  16.  
  17. {
  18.  
  19. "libraryName": "antd-mobile",
  20.  
  21. "style": "css"
  22.  
  23. }
  24.  
  25. ]
  26.  
  27. ]
  28.  
  29. }

在文件内输入以上内容,为babel的配置。

然后!!!最重要的一步,把package.json中的babel配置给删掉,尤其是:react-app!!!

webpack.config.dev.js和webpack.config.prod.js中,都需要为resolve的extensions新增一项'.web.js'

antd-mobile的web版的文件后缀为.web.js ...

四、杂项

React-Router版本

现在最新版本React-Router为4.x.x,与原用的2.x.x的API变化稍大(官方直接跳过了3...),如需使用2.x.x版本,可

  1. npm remove react-router --save

然后在package.json中dependencies新增字段:

  1. "react-router": "^2.0.0 <.0.0",

接着执行:

  1. npm install

到这里,就算搭建完开发环境了,可以正常进行开发了。

END

 

文章来自: http://www.jianshu.com/p/5e6c620ff4d6

Create-React-App创建antd-mobile开发环境的更多相关文章

  1. 如何扩展 Create React App 的 Webpack 配置

    如何扩展 Create React App 的 Webpack 配置  原文地址https://zhaozhiming.github.io/blog/2018/01/08/create-react-a ...

  2. 深入 Create React App 核心概念

    本文差点难产而死.因为总结的过程中,多次怀疑本文是对官方文档的直接翻译和简单诺列:同时官方文档很全面,全范围的介绍无疑加深了写作的心智负担.但在最终的梳理中,发现走出了一条与众不同的路,于是坚持分享出 ...

  3. 在 .NET Core 5 中集成 Create React app

    翻译自 Camilo Reyes 2021年2月22日的文章 <Integrate Create React app with .NET Core 5> [1] Camilo Reyes ...

  4. 从零开始,创建GitHub团队开发环境

    从零开始,创建GitHub团队开发环境 GitHub提供免费的团队环境,不过免费仓库容量是300MB,请大家注意. 申请GitHub个人账号 1. 使用浏览器访问GitHub主页.如果使用IE,尽量不 ...

  5. tap news:week5 0.0 create react app

    参考https://blog.csdn.net/qtfying/article/details/78665664 先创建文件夹 安装create react app 这个脚手架(facebook官方提 ...

  6. 使用create react app教程

    This project was bootstrapped with Create React App. Below you will find some information on how to ...

  7. ubuntu下创建虚拟python3开发环境

    友情链接:ubuntu16.04下安装python3+创建虚拟python3开发环境 1.为什么要创建python3虚拟开发环境? /********************************* ...

  8. Create React App

    Facebook开源了React前端框架(MIT Licence),也同时提供了React脚手架 - create-react-app. create-react-app遵循约定优于配置(Coc)的原 ...

  9. React Native入门教程 1 -- 开发环境搭建

    有人问我为啥很久不更新博客..我只能说在学校宿舍真的没有学习的环境..基本上在宿舍里面很颓废..不过要毕业找工作了,我要渐渐把这个心态调整过来,就从react-native第一篇博客开始.话说RN也出 ...

  10. react 基础语法复习1- 搭建开发环境

    之前有看过阮一峰老师的react教程跟着做了一遍,学习了一下.好久没看,有点忘记了,这次跟着脚手架工具系统的复习一遍.顺便学习学习 react-router 和 redux 首先,脚手架工具我使用的是 ...

随机推荐

  1. noj 算法 八数码问题

    描述 在九宫格里放在1到8共8个数字还有一个是空格,与空格相邻的数字可以移动到空格的位置,问给定的状态最少需要几步能到达目标状态(用0表示空格):1 2 34 5 67 8 0   输入 输入一个给定 ...

  2. js在数组arr中随机获取count数量的元素

    // 在数组arr中随机获取count数量的元素; const getRandomArrayElements = (arr, num) => { // 新建一个数组,将传入的数组复制过来,用于运 ...

  3. org.apache.spark.rpc.RpcTimeout$$anonfun$1.applyOrElse

    跑sparkPis示例程序 [root@node01 bin]# ./spark-submit --master spark://node01:7077 --class org.apache.spar ...

  4. js分析 有_道_翻_译 md5

    0.参考 1.分析 1.1 输入翻译内容,手动点击“翻译”按钮 1.2 查看提交数据,通过多次提交确认变化量 1.3 CTRL+SHIFT+f 全局搜索 salt 或 sign 定位到三处js代码块, ...

  5. docker环境中安装node、pm2,映射项目文件守护程序

    1.docker安装完成后,获取对应版本,可自定义node版本,默认为最新版本. git pull node:<version> 2.编写Dockerfile,在文件中添加安装pm2命令. ...

  6. Nginx实现URL重写

    本文利用Nginx实现URL重写,本文使用Nginx与静态页面配合重写URL. 1.准备工作. 结合本文场景,需要安装Nginx. 1.1 关于Linux系统安装Nginx可以参考我的文章---(传送 ...

  7. react的Virtual DOM

    一.Virtual DOMVirtual DOM是一个JavaScript对象,v8引擎使得js可以高效运行,而直接操作DOM很慢.Virtual DOM本质上就是在JS和DOM之间做了一个缓存.可以 ...

  8. drf视图组件、认证组件

    视图组件 1.基本视图 url(r'^publish/$', views.PublishView.as_view()), url(r'^publish/(?P<pk>\d+)/$', vi ...

  9. 【CF765F】Souvenirs 主席树

    [CF765F]Souvenirs 题意:给你一个长度为n的序列{ai},有m个询问,每次询问给出l,r,问在所有$l\le x < y\le r$中,$|a_x-a_y|$的最小值是多少. $ ...

  10. python实现的跳点寻路算法(JPS)

    原理参考论文 代码已提交到git(https://github.com/YYRise/find_path/blob/master/jps.py)