亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 開發 > JS > 正文

react以create-react-app為基礎創建項目

2024-05-06 16:43:04
字體:
來源:轉載
供稿:網友

什么是create-react-app

create-react-app是一個js庫,使用它能夠很方便地建立react項目,免去了建立react項目時配置webpack、調試服務器、運行腳本等麻煩,你只需要使用這個庫,便可以一鍵完成react項目的創建初始化項目

首先,要先利用create-react-app創建一個react項目,可參考https://github.com/facebookincubator/create-react-app

注:用“[ ]”包裹的都是可自定義的內容,例如:cd [project-name],實際上可能是cd my-app,也可能是cd my-project??傊?ldquo;[ ]”包裹的內容,只表示上下文里相互對應的變量。

npm install -g create-react-app  create-react-app [project-name] cd [project-name] 

運行完以上命令就已經處在新建的項目中了,此時運行npm run start和npm run build了。但是,默認所有配置是隱藏起來的,要想自定義配置,需要運行一個命令:

npm run eject 

此時會提示,該命令不可逆,是否繼續,輸入y,這樣所有配置項就都出來了。這時候也可以做一些定制化的配置了,比如:

修改build后的output位置

js / css / img等靜態資源會默認輸出到 build -> static 下面,其配置項在config -> webpack.config.prod.js 里。

  1. js在output屬性里,大約第60行 ;
  2. css在開頭的cssFilename變量聲明,大約第38行;
  3. 圖片等在module -> rules的loader配置里,大約第143行;

map文件由devtool屬性控制,如果不想要map,注釋掉就可以,大約第57行;

manifest.json在ManifestPlugin的配置里,大約294行;

基礎模板在HtmlWebpackPlugin的配置里,不過可以看到,是引的  ‘./paths.js' 文件,所以要修改 config -> paths.js 里面的 appHtml 屬性;

默認在build時會清空build目錄,配置項是scripts -> build.js 里的 fs.emptyDirSync(paths.appBuild); 這一句,注釋掉就不會把老文件刪掉了(灰度發布的時候可能會用到);

不eject其他修改配置的方法

除了 npm run eject 暴露出所有配置文件外,還有其他辦法修改配置,由于本文主題原因不做展開,僅給出相關鏈。

一個(部分人認為)比較優雅的方法,即引入 react-app-rewired 插件來實現配置覆蓋。需要在根目錄新建一個 config-overrides.js 文件,想配置啥就寫啥(怎么又多出來一種配置。。。),還需要重寫下npm start等相關命令,詳情點擊鏈接查看。

另一個可參考create-react-app的git主頁上推薦的Adding a CSS Preprocessor (Sass, Less etc.) 例子。大概思路就是先安裝一個node環境可編譯sass的插件node-sass-chokidar,然后利用npm-run-all同時運行npm start 和 watch-css(監聽sass文件的命令)。個人感覺繞了個大圈,還是再議吧。。。

react等作為全局變量不打包

為了利用cdn,我們常會在頁面里引用react或其他類似庫的script標簽,這樣在瀏覽器環境里就有了相應的全局變量,同時減少了js的體積。下面以react為例。

首先在config -> webpack.config.prod.js 的配置里加入如下代碼:

module.exports = {  ...  externals: {  'react': 'React',  'react-dom': 'ReactDOM'  },  ... } 

key對應的是庫的名字,value對應的是全局變量的名字。這里要注意,全局變量的名字要與代碼中import的名字一致,要保證規范。

另外,此處要修改下 html-webpack-plugin 插件配置的模板文件,因為需要加入全局變量,所以加入相應的script即可。以 public -> index.html 為例:

<!DOCTYPE html> <html lang="en">  <head>  <meta charset="utf-8">  <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">  <meta name="theme-color" content="#000000">  <!--   code here  -->  </head>  <body>  <noscript>   You need to enable JavaScript to run this app.  </noscript>  <div id="root"></div>  <!--   code here  --> <!-- 新插入的兩個js -->  <script src="http://st01.chrstatic.com/themes/chr-cdn/react/v0.14.8/react.min.js"></script>  <script src="http://st01.chrstatic.com/themes/chr-cdn/react/v0.14.8/react-dom.min.js"></script>  </body> </html> 

問:既然瀏覽器里面都有了全局變量,如window.React,那么代碼里面其實就不用 import React from 'react' 了,更進一步,如果連react都不用引了,那么設置externals又有什么用呢(這個地方好好縷縷,是不是這個理)?

答:如果按照上面所說,去掉import和external,build出來的文件是可以順利的在瀏覽器端運行的。但是如果開發的時候是起的server,那么server端就沒法分析引用了,也就沒法做到熱更新了,另外,對于前后端同構來說,服務端也是找不到依賴的。所以,如果你是開著靜態文件的監聽,并且手動刷新瀏覽器的話,不import和external理論上是沒問題的。

安裝sass或less(以sass為例)

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

或 

npm install less-loader less --save-dev 

安裝后修改config -> webpack.config.dev.js 和 webpack.config.prod.js,分別在css的loader配置里面修改兩處:
一是 test: //.css$/ 增加scss和sass;二是use里面最后再加個loader,直接加 "sass-loader" 就可以了,也不用配置別的了(less同)。

//test: //.css$/ test: //.(css|scss|sass)$/ ... use:[  {  ...  },  "sass-loader" ]

添加ant-design

安裝antd及按需加載的插件babel-plugin-import,參考https://ant.design/docs/react/introduce-cn

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

在config -> webpack.config.dev.js 和 webpack.config.prod.js 里(或者 .babelrc 文件)的babel-loader的options配置里,加入如下代碼:

plugins: [  ['import', { libraryName: 'antd', style: 'css' }] // `style: true` 會加載 less 文件 ] 

如果啟用了 style:true 那就必須是裝less了

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持VeVb武林網。


注:相關教程知識閱讀請移步到JavaScript/Ajax教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚州欧美日韩中文视频| 欧洲日韩成人av| 国产欧美一区二区三区久久人妖| 伊人久久久久久久久久久| 久久久久久久一| 国产精品日韩在线观看| 中文字幕少妇一区二区三区| 国产性猛交xxxx免费看久久| 亚洲影院色无极综合| 中文字幕亚洲图片| 亚洲美女自拍视频| 91九色单男在线观看| 成人免费观看49www在线观看| 亚洲国产成人精品女人久久久| 国产一区二区三区在线免费观看| 成人看片人aa| 日韩欧美有码在线| 伊人久久免费视频| 国产精品爽黄69天堂a| 91精品视频免费观看| www.国产精品一二区| 91精品久久久久久久久久另类| 久久在线精品视频| 欧美电影免费观看网站| 色妞一区二区三区| 91国内揄拍国内精品对白| 久久久精品免费| 91欧美视频网站| 91sao在线观看国产| 91在线免费看网站| 92国产精品久久久久首页| 国产69精品久久久久9999| 法国裸体一区二区| 久久久女女女女999久久| 91亚洲精品一区二区| 亚洲自拍偷拍色片视频| 欧美二区在线播放| 91亚洲永久免费精品| 亚洲永久在线观看| 久久久久久尹人网香蕉| 日韩精品视频免费专区在线播放| 精品人伦一区二区三区蜜桃免费| 日韩成人在线电影网| 亚洲专区在线视频| 成人黄色影片在线| 亚洲iv一区二区三区| 亚洲国产欧美久久| 国产精品偷伦视频免费观看国产| 亚洲一区美女视频在线观看免费| 日韩电影免费观看在线| 国产精品久久久久av免费| 日韩av在线资源| 国产一区二区三区网站| 国语自产精品视频在免费| 亚洲最大在线视频| 成人xvideos免费视频| 久久九九全国免费精品观看| 日韩av网址在线| 国产欧美va欧美va香蕉在线| 2018中文字幕一区二区三区| 欧洲日韩成人av| 78m国产成人精品视频| 欧美国产日本在线| 欧美有码在线视频| 成人激情综合网| 欧美日韩国产123| 九九久久精品一区| 亚洲国产精品中文| 欧美视频在线看| 91天堂在线观看| xxx欧美精品| 久久久久久久久亚洲| 亚洲成年人在线| 国产亚洲精品一区二区| 国产精品中文久久久久久久| 国产极品精品在线观看| 亚洲精品aⅴ中文字幕乱码| 国产精品免费一区二区三区都可以| 日韩在线免费观看视频| 精品久久久久久久久久久久久久| 亚洲va码欧洲m码| 成人妇女淫片aaaa视频| 中文字幕一区日韩电影| 色偷偷88888欧美精品久久久| 成人激情电影一区二区| 欧美国产中文字幕| 国产成人免费91av在线| 亚洲午夜色婷婷在线| xvideos亚洲人网站| 亚洲欧美精品中文字幕在线| 欧美电影免费在线观看| 成人午夜两性视频| 欧美成人激情图片网| 国产精品夜色7777狼人| 成人福利视频网| 亚洲黄色在线观看| 日韩欧美在线看| 欧美在线视频网站| 欧美日韩免费观看中文| 国产福利精品在线| 久久亚洲国产精品成人av秋霞| 久久福利视频导航| 日韩视频免费中文字幕| 日韩欧美国产一区二区| 日韩在线不卡视频| 亚洲国产精品成人精品| 亚洲视频999| 欧美精品一本久久男人的天堂| 国产在线拍揄自揄视频不卡99| 亚洲精品wwwww| 成人网在线视频| 久久久免费av| 丝袜亚洲欧美日韩综合| 欧美日韩aaaa| 亚洲第一天堂无码专区| 欧美贵妇videos办公室| 国产精品入口免费视频一| 久久久久久久激情视频| 欧美一性一乱一交一视频| 欧美激情综合色| 成人av资源在线播放| 色偷偷9999www| 伊人一区二区三区久久精品| 最新国产精品亚洲| 亚洲第一二三四五区| 亚洲女人天堂视频| 国产精品电影久久久久电影网| 精品爽片免费看久久| 国产一区二区三区在线免费观看| 色综合伊人色综合网站| 欧美激情二区三区| 国产精品偷伦一区二区| 中文亚洲视频在线| 色偷偷av亚洲男人的天堂| 伊人久久免费视频| 国产精品久久久久久久电影| 国产精品久久久久久久久久东京| 97在线视频免费播放| 色中色综合影院手机版在线观看| 亚洲人成在线观看网站高清| 国产成人鲁鲁免费视频a| 国产精品青青在线观看爽香蕉| 亚洲石原莉奈一区二区在线观看| 国产盗摄xxxx视频xxx69| 日韩视频在线观看免费| 成人午夜高潮视频| 欧美成人高清视频| 亚洲欧美在线一区| 人人澡人人澡人人看欧美| 亚洲午夜精品久久久久久久久久久久| 2019中文字幕在线| 国产精品视频免费在线观看| 国产成人极品视频| 中日韩午夜理伦电影免费| 欧美小视频在线观看| 夜夜狂射影院欧美极品| 欧美色播在线播放| 久久久久国产一区二区三区| 亚洲天堂久久av| 少妇精69xxtheporn| 国产精品久久久久久亚洲影视| 精品偷拍各种wc美女嘘嘘| 久久精品中文字幕电影| 欧美性色19p|