国产99久久精品_欧美日本韩国一区二区_激情小说综合网_欧美一级二级视频_午夜av电影_日本久久精品视频

最新文章專題視頻專題問答1問答10問答100問答1000問答2000關鍵字專題1關鍵字專題50關鍵字專題500關鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關鍵字專題關鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
當前位置: 首頁 - 科技 - 知識百科 - 正文

關于webpack2和模塊打包的新手指南(小結)

來源:懂視網 責編:小采 時間:2020-11-27 22:33:14
文檔

關于webpack2和模塊打包的新手指南(小結)

關于webpack2和模塊打包的新手指南(小結):webpack已成為現代Web開發中最重要的工具之一。它是一個用于JavaScript的模塊打包工具,但是它也可以轉換所有的前端資源,例如HTML和CSS,甚至是圖片。它可以讓你更好地控制應用程序所產生的HTTP請求數量、允許你使用其他資源的特性(例如Jade、Sass
推薦度:
導讀關于webpack2和模塊打包的新手指南(小結):webpack已成為現代Web開發中最重要的工具之一。它是一個用于JavaScript的模塊打包工具,但是它也可以轉換所有的前端資源,例如HTML和CSS,甚至是圖片。它可以讓你更好地控制應用程序所產生的HTTP請求數量、允許你使用其他資源的特性(例如Jade、Sass

webpack已成為現代Web開發中最重要的工具之一。它是一個用于JavaScript的模塊打包工具,但是它也可以轉換所有的前端資源,例如HTML和CSS,甚至是圖片。它可以讓你更好地控制應用程序所產生的HTTP請求數量、允許你使用其他資源的特性(例如Jade、Sass和ES6)。webpack還可以讓你輕松地從npm下載包。

本文主要針對那些剛接觸webpack的同學,將介紹初始設置和配置、模塊、加載器、插件、代碼分割和熱模塊替換。

在繼續學習下面的內容之前需要確保你的電腦中已經安裝了Node.js。

初始配置

使用npm初始化一個新項目并安裝webpack:

mkdir webpack-demo
cd webpack-demo
npm init -y
npm install webpack@beta --save-dev
mkdir src
touch index.html src/app.js webpack.config.js

編寫下面這些文件:

<!-- index.html -->
<!DOCTYPE html>
<html lang="en">
 <head>
 <meta charset="utf-8">
 <title>Hello webpack</title>
 </head>
 <body>
 <div id="root"></div>
 <script src="dist/bundle.js"></script>
 </body>
</html>
// src/app.js
const root = document.querySelector('#root')
root.innerHTML = `<p>Hello webpack.</p>`
// webpack.config.js
const webpack = require('webpack')
const path = require('path')

const config = {
 context: path.resolve(__dirname, 'src'),
 entry: './app.js',
 output: {
 path: path.resolve(__dirname, 'dist'),
 filename: 'bundle.js'
 },
 module: {
 rules: [{
 test: /\.js$/,
 include: path.resolve(__dirname, 'src'),
 use: [{
 loader: 'babel-loader',
 options: {
 presets: [
 ['es2015', { modules: false }]
 ]
 }
 }]
 }]
 }
}

module.exports = config

上面的配置是一個普通的出發點,它通知webpack將入口文件src/app.js編譯輸出到文件/dist/bundle.js中、使用babel將所有的.js文件從ES2015轉換成ES5。

為了讓它可以轉換到ES5格式的JS文件,我們需要安裝三個包:babel-core、webpack加載器babel-loader和預置babel-preset-es2015。使用{ modules: false }讓Tree Shaking 從打包文件中刪除未使用的導出項(exports)以減少文件大小。

npm install babel-core babel-loader babel-preset-es2015 --save-dev

最后,用以下內容替換package.json的scripts部分:

"scripts": {
 "start": "webpack --watch",
 "build": "webpack -p"
},

在命令行中運行npm start將以監視模式啟動webpack,當src目錄中的.js文件更改時,它將重新編譯bundle.js。控制臺中的輸出展示了打包文件的信息,注意打包文件的數量和大小十分重要。

現在當你在瀏覽器中加載index.html頁面時會看到"Hello webpack."。

open index.html

打開dist/bundle.js文件看看webpack都做了哪些事情,頂部是webpack的模塊引導代碼,底部是我們的模塊。到目前為止,你可能對于這個還沒有一個深刻的印象。但是現在你可以開始編寫ES6模塊,webpack將生成適用于所有瀏覽器的打包文件。

使用Ctrl + C停止webpack,運行npm run build以生產模式編譯我們的bundle.js

注意,打包文件的大小從2.61 kB減少到了585字節。再看一下dist/bundle.js文件,你會看到大量難懂的代碼,因為我們使用UglifyJS壓縮了它。這樣的話,我們可以使用更少的代碼達到與之前一樣的效果。

模塊

優秀的webpack知道如何使用各種格式的JavaScript模塊,最著名的兩個是:

  • ES2015 import語句
  • CommonJS require()語句
  • 我們可以通過安裝、導入lodash來測試這些格式的模塊。

    npm install lodash --save
    // src/app.js
    import {groupBy} from 'lodash/collection'
    
    const people = [{
     manager: 'Jen',
     name: 'Bob'
    }, {
     manager: 'Jen',
     name: 'Sue'
    }, {
     manager: 'Bob',
     name: 'Shirley'
    }, {
     manager: 'Bob',
     name: 'Terrence'
    }]
    const managerGroups = groupBy(people, 'manager')
    
    const root = document.querySelector('#root')
    root.innerHTML = `<pre>${JSON.stringify(managerGroups, null, 2)}</pre>`
    
    

    運行npm start啟動webpack并刷新index.html,你可以看到一個根據manager分組的數組。

    讓我們將這個數組轉移到它自己的模塊people.js中。

    // src/people.js
    const people = [{
     manager: 'Jen',
     name: 'Bob'
    }, {
     manager: 'Jen',
     name: 'Sue'
    }, {
     manager: 'Bob',
     name: 'Shirley'
    }, {
     manager: 'Bob',
     name: 'Terrence'
    }]
    
    export default people
    

    我們可以在app.js中使用相對路徑輕松的導入它。

    // src/app.js
    import {groupBy} from 'lodash/collection'
    import people from './people'
    
    const managerGroups = groupBy(people, 'manager')
    
    const root = document.querySelector('#root')
    root.innerHTML = `<pre>${JSON.stringify(managerGroups, null, 2)}</pre>`
    

    注意:像lodash/collection這樣沒有相對路徑的導入是導入安裝在/node_modules的模塊,你自己的模塊需要一個類似./people的相對路徑,你可以以此區分它們。

    加載器

    我們已經介紹過,你可以通過配置像babel-loader這樣的加載器來告訴webpack在遇到不同文件類型的導入時該怎么做。你可以將多個加載器組合在一起,應用到很多文件轉換中。在JS中導入.sass文件是一個非常的例子。

    Sass

    這種轉換涉及三個單獨的加載器和node-sass庫:

    npm install css-loader style-loader sass-loader node-sass --save-dev

    在配置文件中為.scss文件添加新規則。

    // webpack.config.js
    rules: [{
     test: /\.scss$/,
     use: [
     'style-loader',
     'css-loader',
     'sass-loader'
     ]
    }, {
     // ...
    }]

    注意: 任何時候更改webpack.config.js中的任意一個加載規則都需要使用Ctrl + Cnpm start重新啟動構建。

    加載器序列以相反的順序進行處理:

  • sass-loader 將Sass轉換為CSS。
  • css-loader 將CSS解析為JavaScript并解析所有依賴。
  • style-loader將我們的CSS輸出到文檔中的
  • 聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

    文檔

    關于webpack2和模塊打包的新手指南(小結)

    關于webpack2和模塊打包的新手指南(小結):webpack已成為現代Web開發中最重要的工具之一。它是一個用于JavaScript的模塊打包工具,但是它也可以轉換所有的前端資源,例如HTML和CSS,甚至是圖片。它可以讓你更好地控制應用程序所產生的HTTP請求數量、允許你使用其他資源的特性(例如Jade、Sass
    推薦度:
    • 熱門焦點

    最新推薦

    猜你喜歡

    熱門推薦

    專題
    Top
    主站蜘蛛池模板: 国产精品美女久久久久 | 日韩欧美在线综合网高清 | 国产亚洲欧美日韩俺去了 | 亚洲伊人久久大香线蕉综合图片 | 免费国产小视频在线观看 | 久久麻豆精品 | 亚洲欧美在线观看视频 | 亚洲欧美经典 | 一区二区三区91 | 在线免费观看国产精品 | 中文字幕久久久久一区 | 在线观看亚洲专区 | 欧美精品国产一区二区 | 国产一区在线视频观看 | 91精品久久久久久久久网影视 | 国产午夜久久影院 | 欧美日韩大尺码免费专区 | 亚洲欧美一区二区三区久本道 | 91亚洲国产成人久久精品网址 | 欧美 国产 日韩 第一页 | 欧美日韩1区| 一卡二卡在线 | 青青国产成人久久91网 | 国产欧美日韩中文字幕 | 国产第一页在线播放 | 日韩视频免费 | 免费观看黄色网址 | 亚洲色图另类 | 伊人黄| 国产在线一区二区 | 国产亚洲精品成人婷婷久久小说 | 国产美女一区二区 | 国产成人一区二区三区 | 伊人久久精品久久亚洲一区 | 久久99九九精品免费 | 特级全黄一级毛片视频 | 国内精品免费视频 | 香蕉久久一区二区三区 | 国产日韩欧美中文 | 国产日韩在线视频 | 成人欧美一区二区三区 |