webpack入門+react環(huán)境配置
小結(jié)放在前:這篇文章主要是為下一篇的react提前鋪好路,webpack是一個(gè)前端資源模塊化管理和打包工具,說(shuō)白了就是方便我們管理自己的常用的一些代碼,比如你開發(fā)中用到sass以及jade同時(shí)用到es6,開發(fā)時(shí)你不可能改動(dòng)某個(gè)地方就挨個(gè)命令去轉(zhuǎn)換在到瀏覽器去看效果,那樣效率是非常低的。所以webpack幫我們省去了那些多余的步驟
webpack 基本安裝
開始前還是萬(wàn)萬(wàn)不能缺少的安裝:
npm install webpack -g
安裝完接著是建個(gè)文件夾新建一個(gè)package.json依賴管理文件
npm init //運(yùn)行后 按提示填寫 當(dāng)然嫌麻煩 就直接下一步 下一步就好 無(wú)傷大礙
現(xiàn)在安裝我們的webpack
npm install webpack --save-dev //--save-dev 的意思是將這個(gè)安裝過(guò)程記錄到我們的package.json依賴管理文件里
完后新建一個(gè)文件并命名為webpack.config.js(如同我們的常規(guī)的 gulpfile.js、Gruntfile.js),就是一個(gè)配置項(xiàng),告訴 webpack 它需要做什么。
打開webpack.config.js引入webpack
var webpack = require('webpack');
webpack 基本入門
webpack主要結(jié)構(gòu)分三個(gè):入口文件配置(entry)、入口文件輸出配置(output)、加載器配置(module)、其他配置(resolve)
入口文件配置
entry: { index : './src/main.js' },
入口文件輸出配置
//配置編譯成功后文件存放的位置 output: { path: 'dist/js', //編譯后文件所在的文件夾 filename: '[name].js' //根據(jù)入口文件名命名編譯后的文件名,編譯后文件還是叫main.js },
加載器配置
module: { //最關(guān)鍵的一塊配置,它告知 webpack 每一種文件都需要使用什么加載器來(lái)處理 loaders: [ { test: /\.css$/, loader: 'style-loader!css-loader' }, { test: /\.js$/, loader: 'jsx-loader?harmony' }, { test: /\.scss$/, loader: 'style!css!sass?sourceMap'}, { test: /\.(png|jpg)$/, loader: 'url-loader?limit=8192'} ] },
其他配置
resolve: { //自動(dòng)擴(kuò)展文件后綴名,意味著我們r(jià)equire模塊可以省略不寫后綴名 extensions: ['', '.js', '.json', '.scss'] }
ok!好記憶不如爛筆頭,現(xiàn)在我們來(lái)自己搭建一個(gè)react的開發(fā)環(huán)境吧!
先參考我的目錄結(jié)構(gòu)
build存放編譯后的文件,development存放react代碼的文件夾,components存放react組件的文件夾,node_modules存放安裝的依賴
我們先要安裝一些項(xiàng)目依賴:
npm install --save-dev react react-dom npm install --save-dev babel-core babel-loader babel-preset-es2015 babel-preset-react npm install --save-dev style-loader css-loader sass-loader url-loader npm install --save-dev webpack-dev-server //自動(dòng)刷新修改后的結(jié)果,在webpack.config.js中配置webpack-dev-server, //在這里需要修改下entry的路徑,給它加一個(gè)webpack/hot/dev-server,后文會(huì)提到
要是安裝失敗那就分開一個(gè)個(gè)裝,還不行就用淘寶的cnpm裝 ,還不行就看看你的node和npm的環(huán)境變量等配置(親身體會(huì)T_T)
npm install cnpm -g
行!接下來(lái)是文件的內(nèi)容
webpack.config.js文件的配置如下:
var path = require('path'); var webpack = require('webpack'); //加載webpack依賴包 module.exports = { entry: ['webpack/hot/dev-server', path.resolve(__dirname, './development/main.js')], //入口文件并添加了熱加載 output: { path: path.resolve(__dirname, './build'), filename: 'bundle.js' //輸出文件 }, module: { loaders: [ { test: /\.js?$/, exclude: /(node_modules|bower_components)/, loader: 'babel', query: { presets: ['es2015', 'react'] } //將react編譯成js文件 }, { test: /\.css$/, loader: 'style-loader!css-loader' }, //打包c(diǎn)ss文件 { test: /\.scss$/, loader: 'style!css!sass?sourceMap'}, //編譯sass文件 { test: /\.(png|jpg)$/, loader: 'url-loader?limit=8192'} //對(duì)圖片進(jìn)行打包 ] }, plugins: [ new webpack.HotModuleReplacementPlugin() ], resolve: { //自動(dòng)擴(kuò)展文件后綴名 extensions: ['', '.js', '.json', '.scss', '.ts'] } };
main.js內(nèi)容如下:
let React = require('react'); let ReactDOM = require('react-dom'); let AppComponent = require('./components/index.js'); ReactDOM.render(<AppComponent />, document.getElementById('content'));
index.js內(nèi)容如下:
var React = require('react'); var ProductBox; ProductBox = React.createClass({ render: function () { return ( <div className="productBox"> hello react&es2015&webpack!!! </div> ); } }); module.exports = ProductBox;
index.html內(nèi)容如下:
<!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8"> <title>React Project</title> </head> <body> <script src="http://localhost:8080/webpack-dev-server.js"></script> <div id="content"></div> <script src="./bundle.js"></script> </body> </html>
將上面的文件寫好后并放到對(duì)應(yīng)文件夾內(nèi)運(yùn)行命令npm run build dev,成功后瀏覽器訪問地址location:8080,就會(huì)顯示出對(duì)應(yīng)界面
結(jié)果:
hello react&es2015&webpack!!!
以上就是本文的全部?jī)?nèi)容,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作能帶來(lái)一定的幫助,同時(shí)也希望多多支持腳本之家!
- windows下vue-cli及webpack搭建安裝環(huán)境
- vue+node+webpack環(huán)境搭建教程
- 詳解webpack+angular2開發(fā)環(huán)境搭建
- 詳解基于webpack搭建react運(yùn)行環(huán)境
- karma+webpack搭建vue單元測(cè)試環(huán)境的方法示例
- 詳解webpack與SPA實(shí)踐之開發(fā)環(huán)境搭建
- webpack 2.x配置reactjs基本開發(fā)環(huán)境詳解
- 淺談Webpack下多環(huán)境配置的思路
- 詳解webpack4多入口、多頁(yè)面項(xiàng)目構(gòu)建案例
- 如何用webpack4帶你實(shí)現(xiàn)一個(gè)vue的打包的項(xiàng)目
- webpack4.x開發(fā)環(huán)境配置詳解
相關(guān)文章
解決React報(bào)錯(cuò)The?tag?is?unrecognized?in?this?browser
這篇文章主要為大家介紹了解決React報(bào)錯(cuò)The?tag?is?unrecognized?in?this?browser示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-12-12useEffect如何通過(guò)form.getFieldValue(‘xxx‘)監(jiān)聽Form表單變化
這篇文章主要介紹了useEffect如何通過(guò)form.getFieldValue(‘xxx‘)監(jiān)聽Form表單變化問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-03-03React報(bào)錯(cuò)之Object?is?possibly?null的問題及解決方法
這篇文章主要介紹了React報(bào)錯(cuò)之Object?is?possibly?null的問題,造成 "Object is possibly null"的錯(cuò)誤是因?yàn)閡seRef()鉤子可以傳遞一個(gè)初始值作為參數(shù),而我們傳遞null作為初始值,本文給大家分享詳細(xì)解決方法,需要的朋友可以參考下2022-07-07如何在React項(xiàng)目中優(yōu)雅的使用對(duì)話框
在項(xiàng)目中,對(duì)話框和確認(rèn)框是使用頻率很高的組件,下面這篇文章主要給大家介紹了關(guān)于如何在React項(xiàng)目中優(yōu)雅的使用對(duì)話框的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2022-05-05TypeScript在React中的應(yīng)用技術(shù)實(shí)例解析
這篇文章主要為大家介紹了TypeScript在React中的應(yīng)用技術(shù)實(shí)例解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-04-04React Native中的RefreshContorl下拉刷新使用
本篇文章主要介紹了React Native中的RefreshContorl下拉刷新使用,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-10-10react函數(shù)組件useState異步,數(shù)據(jù)不能及時(shí)獲取到的問題
這篇文章主要介紹了react函數(shù)組件useState異步,數(shù)據(jù)不能及時(shí)獲取到的問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-08-08