React基礎(chǔ)篇(三)之 webpack打包項目配制

1里逆、本篇章配置一個 webpack 打包項目
2夺欲、簡述 jsx 語法配置支持

1 初始化項目

使用 IDE 打開目錄
在命令行中初化化項目

 npm init -y

然后安裝 webpack

 cnpm i webpack -D

然后安裝 webpack-cli

webpack-cli 用來執(zhí)行webpack相關(guān)命令

 cnpm i webpack-cli -D

創(chuàng)建 源代碼src目錄嫂伞、打包輸出目錄 dist目錄
然后在 src 目錄中

創(chuàng)建 index.js 文件 目前是一個空的 js 文件

創(chuàng)建 index.html

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>首頁面</title>
</head>
<body>

</body>
</html>

創(chuàng)建 webpack的配制文件webpack.config.js

module.exports = {
  mode: 'development',// production development
};

目前項目目錄如下:


image

然后在命令行中執(zhí)行 webpack 打包項目


在這里插入圖片描述

打包完成后涨岁,在dist 目錄下就生成了打包后的 main.js 文件

然后配制 webpack-dev-server

cnpm i webpack-dev-server -D
在這里插入圖片描述

然后配制 package.json

{
  "name": "demo2",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1",
    // --open 打包完成后 在瀏覽器中打開
    "dev": "webpack-dev-server --open --port 8080 --hot --progress --compress"
  },
  "keywords": [],
  "author": "",
  "license": "ISC",
  "devDependencies": {
    "webpack": "^4.4.1",
    "webpack-cli": "^3.3.10"
  }
}

然后命令行執(zhí)行

npm run dev 
在這里插入圖片描述

然后配制

npm i html-webpack-plugin -D

在 webpack.config.js 中



const path = require('path');
//導(dǎo)入插件
const  HtmlWebPackPlugin = require('html-webpack-plugin');
//創(chuàng)建插件
const  htmlPlugin = new HtmlWebPackPlugin({
  template:path.join(__dirname,'./src/index.html'),//源文件
  filename: 'index.html' //生成內(nèi)存中首頁面的名稱
});


//Node.js 兩種導(dǎo)出模塊的方式:module.exports和exports
//module和exports是Node.js給每個js文件內(nèi)置的兩個對象
module.exports = {
  mode: 'development',// production development
  //引用插件
  plugins: [
      htmlPlugin
  ]
};

然后再次運行

npm run dev 

在瀏覽器中


在這里插入圖片描述

2 在項目中使用 React

2.1 安裝 react

 cnpm i react react-dom -s
  • react 專門用于創(chuàng)建組件和虛擬DOM仍翰,同時組件的生命周期都在這個包中
  • react-dom 專門進行DOM操作的憔鬼,最主要的應(yīng)用場景就是 ReactDom.render()

2.2 在 index.html 中創(chuàng)建容器

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>首頁面</title>
</head>
<body>
<!--容器龟劲, 使用React 創(chuàng)建的虛擬DOM元素,都會被渲染到這個指定的容器中-->
<div id="app"></div>
</body>
</html>

2.3 在 index.js 中使用 react

//第一步 導(dǎo)入依賴
//這兩個導(dǎo)入進轴或,接收的成員變量名稱必須這樣寫

//用來創(chuàng)建組件昌跌、虛擬DOM元素 生命周期
import React from 'react';
//所創(chuàng)建好的組件和虛擬DOM放到頁面上展示
import ReactDOM from 'react-dom';


//第二步 創(chuàng)建 虛擬DOM 元素
//參數(shù)一 創(chuàng)建元素的類型,字符串照雁,表示元素的名稱
//參數(shù)二 是一個對象或null 表示當(dāng)前這個 DOM元素的屬性
//參數(shù)三 子節(jié)點

// 這里創(chuàng)建的DOM元素等效于 <h1 id="hx1" title="這是title">
const elementH1 = React.createElement('h1', {id: 'hx1', title: '這是title'}, '這是一個H1標(biāo)簽');


//第三步 使用ReactDOM 把虛擬DOM 渲染到頁面上
// 參數(shù)一 要渲染的虛擬DOM元素
// 參數(shù)二 指定頁面上的容器
ReactDOM.render(elementH1, document.getElementById('app'));

然后 運行項目

npm run dev 
在這里插入圖片描述

在上述代碼中我們使用的是 React.createElement 來創(chuàng)建的DOM元素蚕愤,這種在實際開發(fā)中不太適用

在 js 文件中默認不可以書寫 類似于 HTML 這樣的標(biāo)記語言,否則會打包失敗,如果需要這樣寫萍诱,可以使用 babel 來轉(zhuǎn)換

在 JS 中混合寫入類似于 HTML 的語法悬嗓,叫做 JSX 語法,符合 XML 的 JS

啟用 JSX 語法裕坊,運行安裝 babel 插件

 cnpm i babel-core babel-loader babel-plugin-transform-runtime -D
 cnpm i babel-preset-env babel-preset-stage-0 -D

安裝能夠識別轉(zhuǎn)換 jsx 語法的包

cnpm i babel-preset-react -D

添加 .babelrc 配置文件,在項目跟目錄下創(chuàng)建 .babelrc 文件


{
  "presets": ["env","stage-0","react"],
  "plugins": ["transform-runtime"]
}

在 webpack.config.js 中配置 匹配規(guī)則


const path = require('path');
//導(dǎo)入插件
const  HtmlWebPackPlugin = require('html-webpack-plugin');
//創(chuàng)建插件
const  htmlPlugin = new HtmlWebPackPlugin({
  template:path.join(__dirname,'./src/index.html'),//源文件
  filename: 'index.html' //生成內(nèi)存中首頁面的名稱
});


//Node.js 兩種導(dǎo)出模塊的方式:module.exports和exports
//module和exports是Node.js給每個js文件內(nèi)置的兩個對象
//webpack 默認只能打包處理 .js 后綴名類型的文件
module.exports = {
  mode: 'development',// production development
  //引用插件
  plugins: [
      htmlPlugin
  ],
  //所有的第三方模塊的配置規(guī)則
  module: {
    //匹配規(guī)則
    rules: [
      {test:/\.js|jsx$/,use:'babel-loader',exclude:/node_modules/}
    ]

  }
};

然后在 index.js 文件中我們使用 jsx語法

//第一步 導(dǎo)入依賴
//這兩個導(dǎo)入進包竹,接收的成員變量名稱必須這樣寫

//用來創(chuàng)建組件、虛擬DOM元素 生命周期
import React from 'react';
//所創(chuàng)建好的組件和虛擬DOM放到頁面上展示
import ReactDOM from 'react-dom';


//第二步 創(chuàng)建 虛擬DOM 元素
//參數(shù)一 創(chuàng)建元素的類型籍凝,字符串映企,表示元素的名稱
//參數(shù)二 是一個對象或null 表示當(dāng)前這個 DOM元素的屬性
//參數(shù)三 子節(jié)點


//在JS 文件中 HTML 這樣的標(biāo)記語法 為 jsx 語法
const elementDiv = <div id="mydiv" title="div"> 這是一個 DIV </div>

// 這里創(chuàng)建的DOM元素等效于 <h1 id="hx1" title="這是title">
const elementH1 = React.createElement('div', {id: 'hx1', title: '這是title'}, '這是一個父div標(biāo)簽',elementDiv);





//第三步 使用ReactDOM 把虛擬DOM 渲染到頁面上
// 參數(shù)一 要渲染的虛擬DOM元素
// 參數(shù)二 指定頁面上的容器
ReactDOM.render(elementH1, document.getElementById('app'));

然后運行

npm run dev 

瀏覽器中


在這里插入圖片描述
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市静浴,隨后出現(xiàn)的幾起案子堰氓,更是在濱河造成了極大的恐慌,老刑警劉巖苹享,帶你破解...
    沈念sama閱讀 218,682評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件双絮,死亡現(xiàn)場離奇詭異,居然都是意外死亡得问,警方通過查閱死者的電腦和手機囤攀,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,277評論 3 395
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來宫纬,“玉大人焚挠,你說我怎么就攤上這事±焐В” “怎么了蝌衔?”我有些...
    開封第一講書人閱讀 165,083評論 0 355
  • 文/不壞的土叔 我叫張陵,是天一觀的道長蝌蹂。 經(jīng)常有香客問我噩斟,道長,這世上最難降的妖魔是什么孤个? 我笑而不...
    開封第一講書人閱讀 58,763評論 1 295
  • 正文 為了忘掉前任剃允,我火速辦了婚禮,結(jié)果婚禮上齐鲤,老公的妹妹穿的比我還像新娘斥废。我一直安慰自己,他們只是感情好给郊,可當(dāng)我...
    茶點故事閱讀 67,785評論 6 392
  • 文/花漫 我一把揭開白布牡肉。 她就那樣靜靜地躺著,像睡著了一般丑罪。 火紅的嫁衣襯著肌膚如雪荚板。 梳的紋絲不亂的頭發(fā)上凤壁,一...
    開封第一講書人閱讀 51,624評論 1 305
  • 那天吩屹,我揣著相機與錄音跪另,去河邊找鬼。 笑死煤搜,一個胖子當(dāng)著我的面吹牛免绿,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播擦盾,決...
    沈念sama閱讀 40,358評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼嘲驾,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了迹卢?” 一聲冷哼從身側(cè)響起辽故,我...
    開封第一講書人閱讀 39,261評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎腐碱,沒想到半個月后誊垢,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,722評論 1 315
  • 正文 獨居荒郊野嶺守林人離奇死亡症见,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,900評論 3 336
  • 正文 我和宋清朗相戀三年喂走,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片谋作。...
    茶點故事閱讀 40,030評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡芋肠,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出遵蚜,到底是詐尸還是另有隱情帖池,我是刑警寧澤,帶...
    沈念sama閱讀 35,737評論 5 346
  • 正文 年R本政府宣布吭净,位于F島的核電站碘裕,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏攒钳。R本人自食惡果不足惜帮孔,卻給世界環(huán)境...
    茶點故事閱讀 41,360評論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望不撑。 院中可真熱鬧文兢,春花似錦、人聲如沸焕檬。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,941評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽实愚。三九已至兼呵,卻和暖如春兔辅,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背击喂。 一陣腳步聲響...
    開封第一講書人閱讀 33,057評論 1 270
  • 我被黑心中介騙來泰國打工维苔, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人懂昂。 一個月前我還...
    沈念sama閱讀 48,237評論 3 371
  • 正文 我出身青樓介时,卻偏偏與公主長得像,于是被迫代替她去往敵國和親凌彬。 傳聞我的和親對象是個殘疾皇子沸柔,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,976評論 2 355

推薦閱讀更多精彩內(nèi)容