webpack4.0(第一章)項目從入門到理解。

首先我們忘記webpack,然後我們現在搭建一個項目

項目結構

webpack-demo
+ |- index.html
+ |- index.js
+ |- style.less
  • 項目就這麼簡單,一個html入口,包含一個js文件和一個css文件,簡單就構造一個前端項目了。
    index.html
<!DOCTYPE html>
<html>

<head>
  <meta charset="utf-8">
  <title>一個webpack項目</title>
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <link rel="stylesheet" href="./style.less">
</head>

<body>
  <h1>hello world</h1>
  <div class="box">
    <p>我是一個div</p>
  </div>
  <script src="./index.js"></script>
</body>

</html>

index.js

// 引入js資源
import $ from 'jquery';
// 引入樣式資源
import './index.less';
// 引入圖片、字體等其他資源

$('#box1').click(() => {
  $('#box1').css('backgroundColor', 'deeppink');
});

style.less

body {
  .box {
    background-color: red;
    color: white;
  }
}
  • 問題來了,這玩意兒能跑起來?當然不能,麻雀雖小卻五臟俱全哈,從less到箭頭函數,從jquery到Es6哈。怎麼跑起來呢?構建工具就誕生了!
    我們需要一個構建工具來整合整個項目,把es6的東西轉換成es5,把less轉換成css,下載其他依賴,這樣把整個項目運行起來。

構建工具

  • 市場上的構建工具比較廣爲人知的就三四個,gulp,grunt,webpack,而前兩者更輕量,目前已經開始走另外的路了,webpack已經成爲當下最流行的構建工具了,所以我們今天就學最流行的。

webpack入門

核心概念:(可點擊跳轉官網哈。)

安裝webpack

  • 這一步大家自己去找,官網上也有安裝步驟,無非是node.js npm webpack-cli

項目配置webpack依賴

1、配置,直接回車回車回車。
npm init
運行成功後我們的項目應該變成了這樣:

webpack-demo
+ |- index.html
+ |- index.js
+ |- style.less
+ |- package.json

package.json

{
  "name": "webpack-demo",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "author": "z_d_f",
  "license": "ISC"
}

節省時間直接給你建立一個比較齊全且配置不錯的項目

項目結構

webpack-demo
+ |- dist
+ |- src
+     |- index.js
+     |- style.less
+ |- index.html
+ |- package.json
+ |- webpack.config.json

src/index.html

<!DOCTYPE html>
<html>

<head>
  <meta charset="utf-8">
  <title>一個webpack項目</title>
  <meta name="viewport" content="width=device-width, initial-scale=1">
</head>

<body>
  <h1>hello world</h1>
  <div class="box">
    <p>我是一個div</p>
  </div>
</body>

</html>

src/style.less

body {
  .box {
    background-color: red;
    color: white;
  }
}

webpack.config.json

/*
  webpack.config.js  webpack的配置文件
    作用: 指示 webpack 幹哪些活(當你運行 webpack 指令時,會加載裏面的配置)

    所有構建工具都是基於nodejs平臺運行的~模塊化默認採用commonjs。
*/

// resolve用來拼接絕對路徑的方法
const { resolve } = require('path');
const HtmlWebpackPlugin = require('html-webpack-plugin');
const { CleanWebpackPlugin } = require('clean-webpack-plugin');

module.exports = {
  // webpack配置
  // 入口起點
  entry: './src/index.js',
  // 輸出
  output: {
    // 輸出文件名
    filename: 'bundle.js',
    // 輸出路徑
    // __dirname nodejs的變量,代表當前文件的目錄絕對路徑
    path: resolve(__dirname, 'dist')
  },
  // loader的配置
  module: {
    rules: [
      // 詳細loader配置
      // 不同文件必須配置不同loader處理
      {
        // 匹配哪些文件
        test: /\.css$/,
        // 使用哪些loader進行處理
        use: [
          // use數組中loader執行順序:從右到左,從下到上 依次執行
          // 創建style標籤,將js中的樣式資源插入進行,添加到head中生效
          'style-loader',
          // 將css文件變成commonjs模塊加載js中,裏面內容是樣式字符串
          'css-loader'
        ]
      },
      {
        test: /\.less$/,
        use: [
          'style-loader',
          'css-loader',
          // 將less文件編譯成css文件
          // 需要下載 less-loader和less
          'less-loader'
        ]
      }
    ]
  },
  // plugins的配置
  plugins: [
    // 詳細plugins的配置
    new CleanWebpackPlugin(),
    // plugins的配置
    // html-webpack-plugin
    // 功能:默認會創建一個空的HTML,自動引入打包輸出的所有資源(JS/CSS)
    // 需求:需要有結構的HTML文件
    new HtmlWebpackPlugin({
      // 複製 './index.html' 文件,並自動引入打包輸出的所有資源(JS/CSS)
      template: './index.html',
      title: '一個簡單的webpack應用程序',
    })
  ],
  // 模式
  mode: 'development', // 開發模式
  // mode: 'production'
}

package.json

{
  "name": "webpack-demo",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "author": "z_d_f",
  "license": "ISC",
  "devDependencies": {
    "clean-webpack-plugin": "^4.0.0-alpha.0",
    "css-loader": "^5.2.6",
    "html-webpack-plugin": "^5.3.1",
    "jquery": "^3.6.0",
    "less": "^4.1.1",
    "less-loader": "^9.1.0",
    "style-loader": "^2.0.0",
    "webpack-cli": "^4.7.2"
  }
}

npm安裝的依賴

npm i jquery -D
npm i clean-webpack-plugin -D
npm i html-webpack-plugin -D
npm i less less-loader -D
npm i css-loader style-loader -D

運行webpack成功的話應該如下

可以看到整個項目的js文件,less文件都被打包到了一個html界面。非常nice吧,這就是構建工具,能理解webpack是幹啥的了嗎?

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章