今回は、webpack2+React の使用方法について詳しく説明します。webpack2+React を使用する際の 注意事項 は何ですか?実際の事例を見てみましょう。
1. 関連するプラグインは npm install によってインストールする必要があります。2.html-webpack-plugin は webpack バンドルを提供する HTML ファイルを作成します。
3.clean-webpack-plugin は dist ディレクトリ内の重複ファイルをクリアします。 .extract-text-webpack-plugin は CSS ファイルを分割します。
りー
var path = require('path');
var webpack = require('webpack');
var HtmlWebpackPlugin = require('html-webpack-plugin');
var CleanWebpackPlugin = require('clean-webpack-plugin');
var ExtractTextPlugin = require("extract-text-webpack-plugin");
var UglifyJsPlugin = webpack.optimize.UglifyJsPlugin;
var config = {
context: path.resolve(dirname, './src'),
entry: {
app: './main.js'
},
output: {
path: path.resolve(dirname, './dist'),
filename: '[name].bundle.js'
},
devtool: 'cheap-module-eval-source-map',
module: {
rules: [
{
test: /\.jsx?$/,
exclude: /node_modules/,
loader: 'babel-loader'
},
{
test: /\.css$/,
use: ExtractTextPlugin.extract({
fallback: "style-loader",
use: ["css-loader","postcss-loader"]
})
},
{
test: /\.less$/,
use: ["style-loader","css-loader","less-loader"]
},
{
test: /\.(png|jpg)$/,
loader: 'url-loader',
options: {
limit: 8129
}
}
]
},
devServer:{
historyApiFallback: true,
host:'0.0.0.0',
hot: true, //HMR模式
inline: true,//实时刷新
port: 8181 // 修改端口,一般默认是8080
},
resolve: {
extensions: ['.js', '.jsx', '.css'],
modules: [path.resolve(dirname, './src'), 'node_modules']
},
plugins: [
new webpack.HotModuleReplacementPlugin(),
new UglifyJsPlugin({
sourceMap: true
}),
new webpack.LoaderOptionsPlugin({
minimize: true,
debug: true
}),
new HtmlWebpackPlugin({
template:'./templateIndex.html'
}),
new ExtractTextPlugin({
filename: '[name].[hash].css',
disable: false,
allChunks: true,
}),
new CleanWebpackPlugin(['dist'])
],
}
module.exports = config;
// webpack里面配置的bundle.js需要手动打包才会变化,目录可以由自己指定;
// webpack-dev-server自动检测变化自动打包的是开发环境下的bundle.js,打包路径由contentBase决定,两个文件是不一样的.
module.exports = {
plugins: {
'autoprefixer': {browsers: 'last 5 version'}
}
}
// 兼容最新的5个浏览器版本
りー
6.package.jsonnpm install または Yarn -> モジュールのインストール、npm ビルド -> localhost:8181
{ "presets": ['es2015','react','stage-3'] }
7.main.js:
エントリーファイル<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>React Project</title>
</head>
<body>
<p id="content"></p>
<script src="app.bundle.js"></script>
</body>
</html>
パッケージ化されたテンプレート インデックス ファイル。プラグイン html-webpack-plugin のテンプレートで指定されたディレクトリ。
りー9.デモ
デモ1.js
りぃデモ1.css
{ "name": "reactproject", "version": "1.0.0", "description": "", "main": "index.js", "dependencies": { "jquery": "^3.1.1", "react": "^15.3.2" }, "devDependencies": { "autoprefixer": "^7.1.2", "babel-core": "^6.14.0", "babel-loader": "^6.2.5", "babel-plugin-syntax-async-functions": "^6.13.0", "babel-plugin-transform-async-to-generator": "^6.16.0", "babel-preset-es2015": "^6.14.0", "babel-preset-react": "^6.11.1", "babel-preset-stage-3": "^6.17.0", "bootstrap": "^4.0.0-alpha.2", "clean-webpack-plugin": "^0.1.16", "css-loader": "^0.25.0", "extract-text-webpack-plugin": "^3.0.0-rc.2", "file-loader": "^0.9.0", "html-webpack-plugin": "^2.29.0", "jshint": "^2.9.3", "jshint-loader": "^0.8.3", "json-loader": "^0.5.4", "less": "^2.7.1", "less-loader": "^2.2.3", "moment": "^2.15.1", "node-sass": "^3.10.0", "postcss-loader": "^2.0.6", "react-bootstrap": "^0.30.5", "react-dom": "^15.3.2", "sass-loader": "^4.0.2", "style-loader": "^0.13.1", "url-loader": "^0.5.7", "webpack": "^3.3.0", "webpack-dev-server": "^2.5.1" }, "scripts": { "start": "webpack-dev-server --hot --inline --progress --colors --content-base .", "build": "webpack --progress --colors" }, "keywords": [ "reactcode" ], "author": "xhh", "license": "ISC" }
demo2.js: 親子コンポーネント
ライフサイクル<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <title>Template Index html</title> </head> <body> <p id="content"></p> </body> </html>
この方法を習得したと思います。さらに興味深い情報については、php 中国語 Web サイトの他の関連記事に注目してください。
推奨読書:
Vue Router+Vuex はバックステート保存を実装しますBootStrap はファイルのアップロード時の進行状況の表示を実装します以上がwebpack2+Reactの使い方を詳しく解説の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。