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

首頁 > 編程 > JavaScript > 正文

Webpack 4.x搭建react開發環境的方法步驟

2019-11-19 13:14:53
字體:
來源:轉載
供稿:網友

本文介紹了了Webpack 4.x搭建react開發環境的方法步驟,分享給大家,也給自己留個筆記

必要依賴一覽(npm install) 安裝好。

"dependencies": {  "babel-core": "^6.26.3",  "babel-loader": "^7.1.5",  "babel-preset-env": "^1.7.0",  "react": "^16.4.2",  "react-dom": "^16.4.2",  "webpack": "^4.16.5"  ...}

babel系列是干什么用的呢?是為了支持es6以上的高級語法的編譯。但是因為react有jsx這個東西存在,所以單純的babel是不夠的,此外要讓babel作用于webpack,需要給webpack添加一個loader(以前版本叫loader,4.x版本開始改用‘rules'),在工程根目錄新建webpack.config.js文件,并添加如下代碼:

var path = require('path');var node_modules = path.resolve(__dirname, 'node_modules');var deps = [  ];//以上代碼可以忽略,沒有必要不要添加noParse,因為依賴代碼中可能會有環境的判斷,而瀏覽器中是拿不到process變量的,會報錯!var config = {  //這里是打包的入口 entry: path.resolve(__dirname, './react/app.js'), resolve: {  alias: {  } }, //打包完成后輸出到./build/bundle.js文件中 output: {  path: path.resolve(__dirname, './build'),  filename: 'bundle.js', }, mode: 'development', module: {   //上述的規則,loader就放在這里,這段沒什么好說的,從Webpack官方文檔上直接拿來用  rules: [    {     test: //.js$/,     exclude: /(node_modules|bower_components)/,     use: {      loader: 'babel-loader',      options: {        //剛剛下載的module之一       presets: ['babel-preset-env']      }     }    }   ] }};//遍歷你的自定義要排除的依賴,安裝到node_modules里的依賴一般不需要排除掉deps.forEach(function (dep) {  var depPath = path.resolve(node_modules, dep);  config.resolve.alias[dep.split(path.sep)[0]] = depPath;  config.module.noParse.push(depPath); });module.exports = config;

以上代碼可以直接用,請先將注釋去掉。有了以上文件配置,你可以直接在package.json中添加scripts來打包你的app.js。

..."scripts": {  ...  "build-config": "webpack",  ...}...

執行npm run build-config可執行打包操作,但是目前為止還是會報錯,因為缺少babel設置,webpack打包時無法識別jsx語法,什么時jsx語法?就是在js代碼中寫的類似于dom結構的東西,如下:

...<h1 onClick={this.handleClick.bind(this)} style={{ color: "red" }}>  {'Hello ' + this.state.text}</h1>...

要解析這個東西還需要添加.babelrc文件,在其中添加:

{  "plugins": ["transform-react-jsx"]}

這句主要是說在babel參與打包時,會啟用jsx轉換成js的插件。到這里你已經可以成功打出你想要的bundle.js

> webpackHash: e716d360a6a752006c09Version: webpack 4.16.5Time: 973msBuilt at: 2018-08-14 15:19:14  Asset   Size Chunks       Chunk Namesbundle.js 715 KiB  main [emitted] mainEntrypoint main = bundle.js[./react/app.js] 2.74 KiB {main} [built]  + 21 hidden modules

webpack打包的好處就是這里,可以讓你的app加載速度更快,如上的包總計715kb,隱藏了沒有用到的模塊21個。這就是為什么要搭手腳架開發的理由。

jsx-transform的坑

此外還有一點要說一下,就是在引入React時,請整個引入,要么就額外引入它在編譯后的代碼中可能會用到的api,否則會說什么什么沒找到而導致頁面加載不出來??淳幾g后的代碼:

var _react = __webpack_require__(/*! react */ "./node_modules/react/index.js");var _react2 = _interopRequireDefault(_react);..._createClass(MyTitle, [{key: "handleClick",value: function handleClick() {  this.setState({  text: "Clicked"  });}}, {key: "render",value: function render() {  return _react2.default.createElement(  "h1",  { onClick: this.handleClick.bind(this), style: { color: "red" } },  'Hello ' + this.state.text  );}}]);

如果你不引入react, 編譯后render()函數中的_react2會是React.createElement而React顯然是找不到這個變量的。看到編譯后的代碼,你可能更能理解,哦在jsx的dom中那樣寫原來是這個意思啊???

Vscode中開發,需要配置好eslint

react中有大量的es6的寫法,如果不配置eslint你會看到大量飄紅,首先是在項目的開發環境安裝依賴:

"devDependencies": {  ???  "eslint": "^5.3.0",  "eslint-plugin-import": "^2.14.0"  ???}

在項目根路徑下添加.eslintrc.json,并添加以下代碼[^eslint]:

{ "parserOptions": {   //使用的ecma版本  "ecmaVersion": 6,  "sourceType": "module",  //使用jsx特性  "ecmaFeatures": {   "jsx": true  } }, "rules": {   //忽略console的警告  "no-console": "off",  "semi": ["error", "always"] }}

參考:

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

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
精品久久久久久中文字幕| 最近的2019中文字幕免费一页| 亚洲精品av在线播放| 久久久精品免费| 久久亚洲欧美日韩精品专区| 国产美女主播一区| 国产精品啪视频| 在线观看91久久久久久| 91免费国产网站| 秋霞av国产精品一区| 九色成人免费视频| 国产精品丝袜一区二区三区| 成人精品久久av网站| 欧美日韩免费在线观看| 色樱桃影院亚洲精品影院| 国产精品手机播放| 成人夜晚看av| 欧美另类在线观看| 欧美在线一区二区视频| 国产精品欧美一区二区| 91精品国产91久久久久久吃药| 欧美日韩在线免费| 国产免费一区二区三区香蕉精| 欧美激情视频在线观看| 欧美日韩另类字幕中文| 亚洲精品99久久久久中文字幕| 国产美女精品免费电影| 亚洲成人激情在线| 欧美丰满少妇xxxxx做受| 久久国产精品久久国产精品| 精品少妇一区二区30p| 欧美日韩在线免费观看| 国产91在线播放精品91| 亚洲国产精品成人va在线观看| 高清欧美性猛交xxxx黑人猛交| 欧美日韩国产区| 亚洲精品国产综合区久久久久久久| 国产欧美日韩综合精品| 久久精品视频中文字幕| 亚洲美女av电影| 欧美激情精品久久久久久免费印度| 亚洲国产精品大全| 国产成人一区二区三区| 国产精品久久久久久久7电影| 日韩在线播放av| 国产黑人绿帽在线第一区| 一本色道久久综合亚洲精品小说| 色偷偷噜噜噜亚洲男人| 亚洲天堂av图片| 美女啪啪无遮挡免费久久网站| 亚洲国产成人爱av在线播放| 搡老女人一区二区三区视频tv| 欧美视频裸体精品| 91香蕉嫩草影院入口| 精品亚洲一区二区三区| 91久久久久久久久久久久久| 欧美一区二粉嫩精品国产一线天| 91豆花精品一区| 国产精品久在线观看| 国产精品福利久久久| 欧美性xxxx在线播放| 亚洲精品欧美日韩专区| 日韩高清不卡av| 欧美视频国产精品| www.xxxx精品| 91精品国产91久久久久| 欧美日韩精品二区| 久久精品国产一区二区三区| 4444欧美成人kkkk| 中文字幕亚洲专区| 国产精品美女主播| 国产一区二区三区在线免费观看| 日本一区二区在线播放| 欧美午夜电影在线| 欧美日韩在线观看视频小说| 欧美丰满少妇xxxxx| 亚洲精品成人av| 97不卡在线视频| 欧美日韩国产精品一区二区三区四区| 久久免费视频在线观看| 精品国产户外野外| 精品久久久久久国产| 欧美成人在线免费视频| 精品视频www| 日韩美女视频中文字幕| 日韩亚洲成人av在线| 高清欧美一区二区三区| 欧美另类在线观看| 国内外成人免费激情在线视频| 91精品国产免费久久久久久| 精品亚洲va在线va天堂资源站| 91探花福利精品国产自产在线| 国产精品久久久久久av福利| 亚洲国产成人爱av在线播放| 一区二区日韩精品| 亚洲a中文字幕| 久久视频在线播放| 亚洲天堂网站在线观看视频| 欧美日韩加勒比精品一区| 国产精品入口夜色视频大尺度| 日韩女优在线播放| 亚洲va欧美va在线观看| 国产精品一区二区三区成人| 另类色图亚洲色图| 97在线看福利| 91久久嫩草影院一区二区| 在线观看日韩欧美| 欧美国产日韩一区二区在线观看| 国内精品久久久久影院 日本资源| 另类少妇人与禽zozz0性伦| 国产日韩欧美日韩| 精品国产电影一区| 久久视频精品在线| 91在线观看免费高清完整版在线观看| 影音先锋日韩有码| 国产精品成人国产乱一区| 国产精品国模在线| 亚洲韩国日本中文字幕| 91精品国产91久久| 亚洲国产日韩欧美在线图片| 亚洲国产第一页| 国产精品日日摸夜夜添夜夜av| 97不卡在线视频| 精品网站999www| 亚洲国产日韩欧美在线动漫| www.欧美精品一二三区| 国产精品黄视频| 欧洲亚洲女同hd| 国内精品视频一区| 日韩av在线播放资源| 日韩有码片在线观看| 91最新在线免费观看| 性色av香蕉一区二区| 亚洲精选中文字幕| 欧美天堂在线观看| 亚洲18私人小影院| 国产午夜精品理论片a级探花| 日韩欧美在线第一页| 国产精品一区二区久久| 亚洲最大av网| 色妞在线综合亚洲欧美| 日韩精品中文字幕视频在线| 久久久999精品视频| 精品国产成人av| 欧美视频中文字幕在线| 亚洲激情在线观看视频免费| 久久免费在线观看| 亚洲男女性事视频| 中文字幕亚洲情99在线| 欧美在线视频免费| 精品国产乱码久久久久酒店| 九九九久久国产免费| 456亚洲影院| 欧美整片在线观看| 久久人人爽人人爽人人片av高请| 久久久久久久久网站| 日韩精品欧美激情| 午夜精品美女自拍福到在线| 国产精品美女久久| 日韩影视在线观看| 久久久久久有精品国产| 精品国产拍在线观看| 另类色图亚洲色图| 尤物九九久久国产精品的特点|