1. 程式人生 > >【筆記】webpack4.0教程_配置詳解_圖文_新手入門_快速上手

【筆記】webpack4.0教程_配置詳解_圖文_新手入門_快速上手

前言

這篇筆記會從node安裝開始,到搭建基礎的webpack環境為止。中間每一步的配置和遇到的術語、名詞,我都會做簡單的解釋。
同時,這篇博文是一篇記錄我學習webpack的過程筆記,因為我也在學習過程,如果有記述錯誤之處,歡迎指正。
【注:全程系統環境為 Windows,webpack 版本號:4.8.3

一、安裝所需軟體

安裝node

node:node是一種javascript的執行環境,能夠使得javascript脫離瀏覽器執行(不做重點介紹)。

  • 1.開啟下載連結下載安裝包:點選下載
    node下載

  • 2.安裝好之後開啟 命令提示符 分別輸入

node -v
npm -v

檢視node版本
這裡可以看到剛剛安裝的node的版本號和npm的版本號(npm是node的附屬品)

使用 cnpm

npm:npm(Node Package Manager)是一個基於 node 的包管理器。
:凡是我們在前端專案中引用的檔案,都可稱為包(Package),比如JQuery、Bootstrap、Underscore。通過 npm 我們可以很方便的下載我們需要包的指定版本或者最新版本。我們要使用的 webpack 就是一個包。
cnpm:cnpm是淘寶團隊做的 NPM 映象,為什麼要做使用 cnpm ?因為國內網路從npm 包普遍會很慢,所以要使用 cnpm

  • 1.開啟 命令提示符
    ,輸入
npm install -g cnpm --registry=https://registry.npm.taobao.org
  • 2,檢驗cnpm代替成功:命令列輸入:
cnpm -v

只要不提示 不是內部或外部命令 ,就代表你可以使用 cnpm 了。

二、初始化並安裝 webpack

初始化 npm

  • 1.選擇一個你準備建立前端專案的目錄,按住 shift 鍵點選滑鼠右鍵—>選擇 在此處開啟命令視窗
  • 2.輸入 npm init -y 在當前目錄初始化 npm 並且使用預設配置,此時會在該目錄下建立有個npm配置檔案 package.json

瞭解 webpack

首先,簡單瞭解一下webpack:先看官網的介紹圖。
webpack介紹
webpack:webpack的作用就是把我們專案中所有需要的資源合併打包到一起。官方介紹就是讓一切變得簡單,具體想深入瞭解webpack的特點,推薦閱讀官方文件:

安裝 webpack

這裡,我們需要明確一點,webpack屬於一個npm的包,所以使用npm進行安裝。

  • 1.開啟命令視窗,輸入
cnpm install webpack webpack-cli --save-dev

回車後就會在當前目錄下安裝webpack,並且會在該目錄下多出一個資料夾 node_modules 後續,你通過 npm 安裝的所有包都會被放在這個資料夾中。

  • 2.開啟 package.json , 看到有如下三行,就代表以及安裝成功
"devDependencies": {//開發模式
    "webpack": "^4.8.3",//外掛名和版本號
    "webpack-cli": "^2.1.4"//外掛名和版本號
}

需要補充的是,剛才輸入的 --save-dev 的含義是:
①將所安裝的包分類到開發模式下
②將安裝過的包寫入到 package.json 配置檔案

三、使用 webpack

建立專案並使用 webpack 打包

  • 1.首先,建立如下的目錄結構和檔案
    這裡寫圖片描述

  • 2.其次,每個檔案中的程式碼如下
    ./index.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
</head>
<body>
    <script src="./dist/main.js"></script>
    <!-- src引入的檔案將在接下來由 webpack 打包建立 -->
</body>
</html>

./src/index.js

import {name} from './init';//引入 init.js 存於 name , (js字尾可以省略)

alert(name);

./src/init.js

var name = "newApp";

export {//ECMAScript 6 語法 , 向外暴露介面供其他檔案呼叫時使用
    name//將變數 name 指定為向外暴露成員
};
  • 3.在當前目錄下—>按住 shift 點選滑鼠右鍵—>選擇 在此處開啟命令視窗—>輸入:
npx webpack

這一行的含義是啟用 webpack 進行打包。打包過程中會提醒錯誤,忽略掉就好,這是因為沒有選擇打包模式,雖然提示了錯誤,但 webpack 預設會採取生產者模式打包。

  • 4.啟動 index.html , 此時會在瀏覽器彈出輸出 “newApp”。
    至此,我們已經掌握 webpack 的安裝-基礎使用。

*【練習 】使用並打包 JQuery

通過這個小練習,目的是為了大家理解包(Package)這個概念,新手往往會在這裡有混淆,同時,還有一個目的就是接觸 es6 語法。
我推薦在看完我這篇筆記後,去了解並熟悉一下 es6 的使用。

  • 1.使用 npm 安裝 jquery 包。在你專案根目錄下啟動 命令視窗 , 輸入
cnpm i jquery --D

這行命令中, iinstall 的縮寫。 --D--save-dev 的縮寫。

  • 2.修改 ./src/index.js 裡的內容
import $ from 'jquery';//引入Jquery

$(function(){  
    $("body").html("Hello <b>world</b>!");  
})  
  • 3.在命令列中輸入 npx webpack 進行打包,然後開啟 index.html ,網頁中顯示文字 “Hello world!” 說明 jquery
    已經使用

練習小結

  • 我們通過npm 安裝了 jquerywebpack ,這兩個都是 npm 的包。
  • 包與包之間是平行關係,但對於開發來說, webpack 是一個工具, jquery 是專案中使用的功能
  • 我們使用 webpack 這個包來管理其他的包 (jquery

四、深入配置 webpack

學習使用 webpack 配置檔案

我們已經知道,weboack 是一個管理其他包的工具,那麼想要更加靈活自如的管理其它包,我們就需要某些設定,接下來我們來建立配置檔案。

  • 1.在專案根目錄建立檔案 webpack.congig.js
const path = require('path');//設定路徑

module.exports = {//配置正式開始
  entry: './src/index.js',//設定入口
  output: {//設定打包出口
    path: path.resolve(__dirname, 'dist'),//打包檔案放在這個目錄下
    filename: 'main.js'//打包檔名
  },
  module: {},//loader 相關配置
  plugins:[],//外掛 相關配置
  mode: 'development'//設定模式為開發者模式
};

配置項其實也就只有五個,分別是 : 入口 entry 、 出口 output 、Loader loader 、 外掛 plugins 、 模式 mode
入口和出口,分別制定在哪裡尋找專案依賴的資原始檔,把資原始檔打包後放在哪個目錄下面。

外掛:外掛用來增加一些特定功能,比如,程式碼壓縮。再比如,觀察現在的專案,正個打包過程,都沒有 html 檔案參與進來。如果我們希望 html 檔案也參與進來,就需要一個特定外掛 html-webpack-plugin

瞭解並使用 loader

我們不詳細介紹外掛,但 loader 還是要講講。
我們前面提到,webpack 是用來打包專案依賴的資源的,但我們專案中的資源可謂是各式各樣, webpack 預設只認得 js 檔案,想讓其他資原始檔也參與進來,就需要使用 loader

接下來,我們就嘗試用 style-loadercss-loader 來處理 css 資源

  • 1.在專案目錄下啟動 命令視窗 , 輸入 cnpm i style-loader css-0loader --D
    【注】這裡需要註釋一下,無論是 loader 還是 外掛 ,相對 npm 來說都是一個包。這裡初學者自己理一下關係,我們到目前為止,用到的 jquerywebpackstule-loadercss-loader 還有將來要用到的 webpack 的外掛,都屬於 npm 的包。

  • 2.修改 webpack 配置檔案 webpack.congig.js

const path = require('path');

module.exports = {
  entry: './src/index.js',
  output: {
    path: path.resolve(__dirname, 'dist'),
    filename: 'main.js'
  },
  module: {//配置 loader
    rules: [//相關規則寫在這裡
      {
        test: /\.css$/,//正則表示式:根據字尾為 .css 的檔案來匹配 css 檔案
        use: [//匹配搭配 css 檔案後,打包時使用以下 loader 來處理檔案
          { loader: 'style-loader' },//loader 名稱
          {
            loader: 'css-loader',//loader 名稱
            options: {
              modules: true
            }
          }
        ]
      }
    ]
  },
  plugins:[],
  mode: 'development'
};
  • 3.建立css檔案: css/main.css
html{
    background-color: aqua;
}

此時專案下目錄結構為
這裡寫圖片描述

  • 4/修改 js 入口檔案 src/index.js
import $ from 'jquery';
import '../css/main.css';//引入css檔案

$(function(){  
    $("body").html("Hello <b>world</b>!");  
})  
  • 5.使用 webpack 進行打包,打包後訪問 index.html ,你會看到剛才的樣式已經引用進去了。那麼現在我們已經成功使用 loaderwebpack 能夠識別 css 格式的資原始檔,並且打包到專案中了。

瞭解並使用 watch

watch:啟動 watchwebpack 可以監聽檔案變化,當它們修改後會重新編譯。

  • 1.打包時在 命令視窗 輸入 npx webpack --watch 即可啟動 watch 模式。之後再修改資原始檔, webpack 會自動打包。

結束語

本筆記旨在記錄自己學習過程,同時初學者參考本筆記後可以從 node 安裝開始,到搭建可以使用 loader並自動打包的 webpack 環境。
我使用的 webpack 版本為 4.8.3
因為我也是初學者,如果在筆記中有描述錯誤或者不到位的地方,歡迎指正,我會及時修改的。
๛ก(ー̀ωー́ก)

相關推薦

筆記webpack4.0教程_配置_圖文_新手入門_快速上手

前言 這篇筆記會從node安裝開始,到搭建基礎的webpack環境為止。中間每一步的配置和遇到的術語、名詞,我都會做簡單的解釋。 同時,這篇博文是一篇記錄我學習webpack的過程筆記,因為我也在學習過程,如果有記述錯誤之處,歡迎指正。 【注:全程系統環境

SpringSpring MVC原理及配置

進行 return sub sca scrip uil 線程安全 松耦合 必須 1.Spring MVC概述: Spring MVC是Spring提供的一個強大而靈活的web框架。借助於註解,Spring MVC提供了幾乎是POJO的開發模式,使得控制器的開發和測試更加簡

Mybatis Generator最完整配置

<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE generatorConfiguration   PUBLIC "-//mybatis.org//DTD MyBatis Generator Confi

筆記從架構到演算法,美團外賣訂單分配內部機制

1)採用迭代的方式,通過訂單分配優化演算法進行初始的訂單分配,然後通過騎手路徑優化演算法獲取各騎手的最佳行駛路線,進而,訂單分配優化演算法根據騎手路徑優化結果調整分配方案。這兩個層次不斷反覆迭代,最終獲得比較滿意的解 (adsbygoogle = window.adsbygoogle

筆記linux下的nginx配置(做動態服務)

上一篇,我們介紹了nginx配置靜態服務的方法(https://blog.csdn.net/oceanyang520/article/details/83107595), 這一篇,我們來介紹動態服務的方法 nginx動態代理,主要是反向代理,這一篇,我們來介紹下如何用域名訪問你的應用。

筆記kafka權威指南-常用配置和要點記錄

Kafka 的應用場景 訊息佇列 Kafka有更好的吞吐量,內建的分割槽,冗餘及容錯性,這讓Kafka成為了一個很好的大規模訊息處理應用的解決方案。 行為跟蹤和日誌收集。 敏感操作和日誌,都可以寫到 kafka 裡進行統一,分情況的監控、

go 語言環境安裝goland語言環境安裝配置

1、下載go 下載地址: https://golang.google.cn/dl/ 開啟網址,由於我的電腦是win64,所以下載第一個。 2、安裝go 2.1、UNIX/Linux/Mac OS X, 和 FreeBSD 安裝 以下介紹了在UNIX/Linux/Mac OS

文字檢測SSD+Tensorflow 300&512 配置

SSD_300_vgg和SSD_512_vgg weights下載連結【需要科學上網~】: Model Training data Testing data mAP FPS VOC07+12+COCO trainval VOC07

LinuxLinux定時任務Crontab命令

星期幾 ima 默認 定時 最好 表示 時間 path 配置文件 linux 系統則是由 cron (crond) 這個系統服務來控制的。Linux 系統上面原本就有非常多的計劃性工作,因此這個系統服務是默認啟動的。另 外, 由於使用者自己也可以設置計劃任務,所以, Lin

MySQL官方教程及各平臺的安裝教程配置入口

www 官方 apt源 nbsp chrom 版本選擇 rom gui apt 官方文檔入口: https://dev.mysql.com/doc/ 一般選擇MySQL服務器版本入口: https://dev.mysql.com/doc/refman/en/

轉載linux下的mount命令

文件的 flag 自動加載 網絡文件系統 解決問題 選項 lock home 多個參數 以下內容來自:http://blog.csdn.net/clozxy/article/details/5299054 http://linux.chinaunix.net/techdo

C語言文件操作

pri void rfi 識別 archive format 隨機 stat 文本文 轉自:http://www.cnblogs.com/likebeta/archive/2012/06/16/2551780.html C語言中沒有輸入輸出語句,所有的輸入輸出功能都用

AndroidAndroid六種布局

spec rec 默認 bottom ron ado 居中 右下角 控制 這篇就對LinearLayout、RelativeLayout、自定義ViewGroup、FrameLayout、TableLayout、AbsoluteLayout六種布局進行詳細的講解。 1

C++拷貝構造函數

簡單的 之間 其他 創建 變量 tac 動態分配空間 data 產生 一. 什麽是拷貝構造函數 首先對於普通類型的對象來說,它們之間的復制是很簡單的,例如: int a = 100; int b = a; 而類對象與普通對象不同,類對象內部結構一般較為復雜,

轉載 c++中static的用法

ostream 並不會 style 轉載 程序員 都是 note 每次 reference 出處: http://blog.csdn.net/majianfei1023/article/details/45290467 C 語言的 static 關鍵字有三種(具體來說是

shellLinux shell for 循環

linux shell編程 for循環 運維 for 循環格式 for i in 條件 do 內容 done 實例循環1到10並打印 #!/bin/bash - for i in `seq 10` do echo $i done 版權所有:arppinging

轉載Maven依賴中的scope

lan 無需 而已 ref targe 周期 包含 配置 com Maven的一個哲學是慣例優於配置(Convention Over Configuration), Maven默認的依賴配置項中,scope的默認值是compile,項目中經常傻傻的分不清,直接默認了。今天梳

java的動態代理機制

bar 同時 @override returns 復制 exce ins com hello 在學習Spring的時候,我們知道Spring主要有兩大思想,一個是IoC,另一個就是AOP,對於IoC,依賴註入就不用多說了,而對於Spring的核心AOP來說,我們不但要知道怎

Pythonhasattr() getattr() setattr() 使用方法

att err value ror 綜合 設置 pytho clas rec 本文轉自 https://www.cnblogs.com/cenyu/p/5713686.html hasattr(object, name)判斷一個對象裏面是否有name屬性或者name方法,返

Oracle 11g Dataguard 參數

異步模式 正常 10g enable ffi sys 過程 tnsnames async 轉自:https://www.jb51.net/article/52269.htm 這篇文章主要介紹了Oracle 11g Dataguard參數詳解,包含了獨立參數、主庫參數、備