最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Webpack 4.x搭建react開發(fā)環(huán)境的方法步驟

 更新時(shí)間:2018年08月15日 14:36:39   作者:Countbunny  
這篇文章主要介紹了Webpack 4.x搭建react開發(fā)環(huán)境的方法步驟,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧

本文介紹了了Webpack 4.x搭建react開發(fā)環(huán)境的方法步驟,分享給大家,也給自己留個(gè)筆記

必要依賴一覽(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以上的高級(jí)語(yǔ)法的編譯。但是因?yàn)閞eact有jsx這個(gè)東西存在,所以單純的babel是不夠的,此外要讓babel作用于webpack,需要給webpack添加一個(gè)loader(以前版本叫l(wèi)oader,4.x版本開始改用‘rules'),在工程根目錄新建webpack.config.js文件,并添加如下代碼:

var path = require('path');
var node_modules = path.resolve(__dirname, 'node_modules');
var deps = [ 
 ];

//以上代碼可以忽略,沒(méi)有必要不要添加noParse,因?yàn)橐蕾嚧a中可能會(huì)有環(huán)境的判斷,而瀏覽器中是拿不到process變量的,會(huì)報(bào)錯(cuò)!
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: {
   //上述的規(guī)則,loader就放在這里,這段沒(méi)什么好說(shuō)的,從Webpack官方文檔上直接拿來(lái)用
  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;

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

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

執(zhí)行npm run build-config可執(zhí)行打包操作,但是目前為止還是會(huì)報(bào)錯(cuò),因?yàn)槿鄙賐abel設(shè)置,webpack打包時(shí)無(wú)法識(shí)別jsx語(yǔ)法,什么時(shí)jsx語(yǔ)法?就是在js代碼中寫的類似于dom結(jié)構(gòu)的東西,如下:

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

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

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

這句主要是說(shuō)在babel參與打包時(shí),會(huì)啟用jsx轉(zhuǎn)換成js的插件。到這里你已經(jīng)可以成功打出你想要的bundle.js

> webpack

Hash: e716d360a6a752006c09
Version: webpack 4.16.5
Time: 973ms
Built at: 2018-08-14 15:19:14
  Asset   Size Chunks       Chunk Names
bundle.js 715 KiB  main [emitted] main
Entrypoint main = bundle.js
[./react/app.js] 2.74 KiB {main} [built]
  + 21 hidden modules

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

jsx-transform的坑

此外還有一點(diǎn)要說(shuō)一下,就是在引入React時(shí),請(qǐng)整個(gè)引入,要么就額外引入它在編譯后的代碼中可能會(huì)用到的api,否則會(huì)說(shuō)什么什么沒(méi)找到而導(dǎo)致頁(yè)面加載不出來(lái)??淳幾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()函數(shù)中的_react2會(huì)是React.createElement而React顯然是找不到這個(gè)變量的??吹骄幾g后的代碼,你可能更能理解,哦在jsx的dom中那樣寫原來(lái)是這個(gè)意思啊···

Vscode中開發(fā),需要配置好eslint

react中有大量的es6的寫法,如果不配置eslint你會(huì)看到大量飄紅,首先是在項(xiàng)目的開發(fā)環(huán)境安裝依賴:

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

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

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

參考:

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • React項(xiàng)目中axios的封裝與API接口的管理詳解

    React項(xiàng)目中axios的封裝與API接口的管理詳解

    Axios是一個(gè)npm軟件包,允許應(yīng)用程序?qū)TTP請(qǐng)求發(fā)送到Web API,下面這篇文章主要給大家介紹了關(guān)于React項(xiàng)目中axios的封裝與API接口的管理的相關(guān)資料,需要的朋友可以參考下
    2021-09-09
  • react拖拽組件react-sortable-hoc的使用

    react拖拽組件react-sortable-hoc的使用

    本文主要介紹了react拖拽組件react-sortable-hoc的使用,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-02-02
  • react性能優(yōu)化useMemo與useCallback使用對(duì)比詳解

    react性能優(yōu)化useMemo與useCallback使用對(duì)比詳解

    這篇文章主要為大家介紹了react性能優(yōu)化useMemo與useCallback使用對(duì)比詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-08-08
  • es6在react中的應(yīng)用代碼解析

    es6在react中的應(yīng)用代碼解析

    這篇文章主要介紹了es6在react中的應(yīng)用代碼解析,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下
    2017-11-11
  • react 中父組件與子組件雙向綁定問(wèn)題

    react 中父組件與子組件雙向綁定問(wèn)題

    這篇文章主要介紹了react 中父組件與子組件雙向綁定問(wèn)題,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2019-05-05
  • 使用react+redux實(shí)現(xiàn)計(jì)數(shù)器功能及遇到問(wèn)題

    使用react+redux實(shí)現(xiàn)計(jì)數(shù)器功能及遇到問(wèn)題

    使用redux管理數(shù)據(jù),由于Store獨(dú)立于組件,使得數(shù)據(jù)管理獨(dú)立于組件,解決了組件之間傳遞數(shù)據(jù)困難的問(wèn)題,非常好用,今天重點(diǎn)給大家介紹使用react+redux實(shí)現(xiàn)計(jì)數(shù)器功能及遇到問(wèn)題,感興趣的朋友參考下吧
    2021-06-06
  • 詳解React中合并單元格的正確寫法

    詳解React中合并單元格的正確寫法

    用表格進(jìn)行頁(yè)面布局,頁(yè)面布局在各種瀏覽器的的兼容性, 本文主要介紹了詳解React中合并單元格的正確寫法,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2019-01-01
  • React.js組件實(shí)現(xiàn)拖拽排序組件功能過(guò)程解析

    React.js組件實(shí)現(xiàn)拖拽排序組件功能過(guò)程解析

    這篇文章主要介紹了React.js組件實(shí)現(xiàn)拖拽排序組件功能過(guò)程解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-04-04
  • 關(guān)于React Native 無(wú)法鏈接模擬器的問(wèn)題

    關(guān)于React Native 無(wú)法鏈接模擬器的問(wèn)題

    許多朋友遇到React Native 無(wú)法鏈接模擬器的問(wèn)題,怎么解決呢,本文給大家分享完整簡(jiǎn)便解決方法及配置例題,對(duì)React Native 鏈接模擬器相關(guān)知識(shí)感興趣的朋友一起看看吧
    2021-06-06
  • 解決React報(bào)錯(cuò)Parameter 'props' implicitly has an 'any' type

    解決React報(bào)錯(cuò)Parameter 'props' implicitly&nb

    這篇文章主要為大家介紹了React報(bào)錯(cuò)Parameter 'props' implicitly has an 'any' type的解決處理方法,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-12-12

最新評(píng)論

承德县| 延寿县| 瑞安市| 屏东市| 蓝田县| 沁水县| 陵川县| 陆川县| 通山县| 澄迈县| 湘潭市| 阜平县| 越西县| 垦利县| 南雄市| 句容市| 嘉义市| 土默特右旗| 怀集县| 亳州市| 曲周县| 太原市| 阳山县| 张北县| 大丰市| 上饶市| 荆州市| 渝北区| 龙胜| 石河子市| 电白县| 揭西县| 泾源县| 广宗县| 枞阳县| 巫溪县| 西贡区| 海南省| 东海县| 鲜城| 八宿县|