這次我們處理下 全局問題(比如 jq 的全局變量)
這個(gè)在網(wǎng)上的解決方案非常多 我隨便用一個(gè)應(yīng)付一下你們
先裝上 jq
yarn add jquery
然后修改 webpack.config.js 文件
const path = require('path');
+const webpack = require('webpack');
const HtmlWebpackPlugin = require('html-webpack-plugin');
const ExtractTextPlugin = require("extract-text-webpack-plugin");
module.exports = {
entry: './src/app.jsx',
output: {
path: path.join(__dirname, 'dist'),
filename: 'js/app.js'
},
module: {
rules: [
{
test: /\.jsx$/,
exclude: /(node_modules)/,
use: {
loader: 'babel-loader',
options: {
presets: ['env', 'es2015', 'react']
}
}
},
{
test: /\.css$/,
use: ExtractTextPlugin.extract({
fallback: "style-loader",
use: "css-loader"
})
},
{
test: /\.scss$/,
use: ExtractTextPlugin.extract({
fallback: 'style-loader',
use: ['css-loader', 'sass-loader']
})
},
{
test: /\.(png|jpg|gif)$/,
use: [
{
loader: 'url-loader',
options: {
limit: 8192,
name: 'resource/[name].[ext]'
}
}
]
},
{
test: /\.(svg|woff|woff2|eot|ttf|otf)$/,
use: [
{
loader: 'url-loader',
options: {
limit: 8192,
name: 'resource/[name].[ext]'
}
}
]
}
]
},
plugins: [
new HtmlWebpackPlugin({
title: 'MY-WEBPACK',
template: './src/index.html'
}),
new ExtractTextPlugin("css/[name].css"),
+ new webpack.ProvidePlugin({
+ $: 'jquery',
+ jQuery: 'jquery'
+ })
],
optimization: {
splitChunks: {
chunks: "all",
name: 'common'
}
},
};
修改 app.jsx 文件
import React from 'react';
import ReactDOM from 'react-dom';
import 'font-awesome/css/font-awesome.min.css';
import './index.css';
import './index.scss';
+ console.log($('#app'))
ReactDOM.render(
<div>
<i className="fa fa-camera-retro fa-5x"></i>
<h1>Hello, world!</h1>
</div>,
document.getElementById('app')
);
就這樣 打包之后打開瀏覽器在 console 里就可以看到 jq 選擇器生效了
但是你可能會(huì)看到一坨的報(bào)錯(cuò), 說找不到各種靜態(tài)資源文件
這個(gè)報(bào)錯(cuò)其實(shí)在我們整理 dist 文件夾之后就有了, 即時(shí)解決的方法不是沒有, 但是正常項(xiàng)目怎么可能有那個(gè)場(chǎng)景, 我覺得沒必要去解決
接著我們搞下最后一個(gè)需求 架設(shè) webpack 中間服務(wù)器(熱更新) 順便處理下找不到靜態(tài)資源文件的問題