Create-React-App創(chuàng)建antd-mobile開(kāi)發(fā)環(huán)境

Facebook?官方推出Create-React-App腳手架,基本可以零配置搭建基于webpack的React開(kāi)發(fā)環(huán)境,內(nèi)置了熱更新等功能。

詳細(xì)文檔可前往鏈接:Create-React-App文檔

本文將介紹使用Create-React-App腳手架搭建antd-mobile的開(kāi)發(fā)環(huán)境。


快速開(kāi)始:

npm?install?-g?create-react-app?? ? ? /*?安裝create-react-app,建議使用cnpm?*/

create-react-app?myapp ? ? ? ? ? ? ? ? /*?使用命令創(chuàng)建應(yīng)用,myapp為項(xiàng)目名稱(chēng)?*/

cd?myapp ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?/*?進(jìn)入目錄,然后啟動(dòng)?*/

npm?start

按以上執(zhí)行,即可快速創(chuàng)建React開(kāi)發(fā)環(huán)境。

打開(kāi)http://localhost:3000/ 查看


環(huán)境配置介紹:

一、項(xiàng)目結(jié)構(gòu):

生成項(xiàng)目后,腳手架為了“優(yōu)雅”...?...隱藏了所有的webpack相關(guān)的配置文件,此時(shí)查看myapp文件夾目錄,會(huì)發(fā)現(xiàn)找不到任何webpack配置文件。執(zhí)行以下命令:

npm?run?eject

再查看myapp?文件夾,可以看到完整的項(xiàng)目結(jié)構(gòu):

myapp/

? ? node_modules/

? ? package.json

? ? .gitignore

? ? config/

? ? ? ? paths.js

? ? ? ? polyfills

? ? ? ? env.js

? ? ? ? webpack.config.dev.js

? ? ? ? webpack.config.prod.js

? ? public/

? ? ? ? index.html? ?/?入口html文件?/

? ? scripts/

? ? ? ? build.js

? ? ? ? start.js

? ? ? ? test.js

? ? src/

? ? ? ? App.js

? ? ? ? index.js? ??/?主入口文件?/

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

二、項(xiàng)目配置介紹

此處需要有npm、webpack的基礎(chǔ)知識(shí),充電傳送門(mén):[webpack學(xué)習(xí)教程](http://m.itdecent.cn/p/42e11515c10f)

查看package.json文件的scripts,

"scripts":?{

? ? "start":?"node?scripts/start.js",

? ? "build":?"node?scripts/build.js",

? ? "test":?"node?scripts/test.js?--env=jsdom"

},

可知,運(yùn)行時(shí)是直接執(zhí)行scripts文件目錄下的js文件。

其中*start.js*為開(kāi)發(fā)環(huán)境,*build.js*為打包腳本。

開(kāi)發(fā)環(huán)境,代理請(qǐng)求

查看start.js,?Facebook基本為每項(xiàng)配置都寫(xiě)了詳盡的注釋?zhuān)?/p>

start.js腳本啟動(dòng)了dev-server,?這里需要了解的是

function?addMiddleware(devServer){

? ? ...?...

? ? 這個(gè)函數(shù)調(diào)用http-proxy-middleware模塊,將代理請(qǐng)求,代理地址在package.json中添加

}

在package.json中添加字段proxy,開(kāi)發(fā)環(huán)境下dev-server將會(huì)自動(dòng)轉(zhuǎn)發(fā)請(qǐng)求:

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

SASS、LESS等CSS預(yù)處理器配置

Facebook官方在create-react-app升級(jí)到某一版本,突然丟掉了默認(rèn)對(duì)sass、less等預(yù)處理器的支持,官方文檔說(shuō)明

于是,只能自己動(dòng)手,在config目錄下,webpack.config.dev.js?和?webpack.config.prod.js文件,沒(méi)有抽出?loader、postcss之類(lèi)一般共用的配置,于是,在兩個(gè)文件夾都要一起配置,也可以抽出共用部分,以便維護(hù)。

這里以webpack.config.dev.js舉例,webpack.config.prod.js一樣配置即可:

SASS-loader:

1、命令行,在當(dāng)前目錄執(zhí)行:

npm?install?sass-loader?node-sass?--save-dev

2、找到webpack.config.dev.js文件中?loaders中的第一項(xiàng)exclude(值為數(shù)組),排除scss文件,否則將被'url-loader'捕獲。

{

exclude:?[

? ? /\.html$/,

? ? /\.(js|jsx)(\?.*)?$/,

? ? /\.css$/,

? ? /\.json$/,

? ? /\.svg$/,

? ? /\.scss$/?? ? ....新增項(xiàng)!

]

3、loaders新增一項(xiàng):

{

? ? test:?/\.scss$/,

? ? loader:?'style!css!postcss!sass?outputStyle=expanded'

},

至此,SASS文件就可以正常打包了(此處針對(duì)SCSS文件,如用到SASS,可將SCSS的正則修改下),LESS文件類(lèi)似,不再贅述。

三、antd-mobile的引入及配置

在命令行執(zhí)行:

npm?install?antd-mobile?--save

安裝完畢即可,現(xiàn)版本1.0.6

移動(dòng)端高清方案

因0.8以后的版本引入移動(dòng)端高清方案,因此需要在webpack等增加相應(yīng)配置,**必須配置!**,官方說(shuō)明

按官方說(shuō)明配置即可。

按需引入

為減少打包后體積以及方便書(shū)寫(xiě),可用babel-plugin-import插件,配置后引入模塊可如下:

import?{Picker}?from?'antd-mobile';

自動(dòng)引入CSS和JS,無(wú)需再引入整個(gè)antd-mobile的整個(gè)CSS文件

使用如下:

命令行執(zhí)行:

npm?install?babel-plugin-import?--save-dev

安裝完畢后,在根目錄新建文件,命名:?.babelrc.js

{

? "presets":?[

? ? "es2015",

? ? "react"

? ],

? "plugins":?[

? ? [

? ? ? "import",

? ? ? ? {

? ? ? ? ? "libraryName":?"antd-mobile",

? ? ? ? ? "style":?"css"

? ? ? ? }

? ? ? ]

? ? ]

}

在文件內(nèi)輸入以上內(nèi)容,為babel的配置。

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

webpack.config.dev.js和webpack.config.prod.js中,都需要為resolve的extensions新增一項(xiàng)'.web.js'

antd-mobile的web版的文件后綴為.web.js?...

四、雜項(xiàng)

React-Router版本

現(xiàn)在最新版本React-Router為4.x.x,與原用的2.x.x的API變化稍大(官方直接跳過(guò)了3...),如需使用2.x.x版本,可

npm?remove?react-router?--save

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

"react-router":?"^2.0.0?<?3.0.0",

接著執(zhí)行:

npm?install

到這里,就算搭建完開(kāi)發(fā)環(huán)境了,可以正常進(jìn)行開(kāi)發(fā)了。

END

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容