亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 開發 > JS > 正文

詳解webpack模塊化管理和打包工具

2024-05-06 16:43:50
字體:
來源:轉載
供稿:網友

本篇文章主要介紹了詳解webpack模塊化管理和打包工具,小編覺得挺不錯的,現在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧

Webpack簡介

webpack是當下最熱門的前端資源模塊化管理和打包工具。 它可以將許多松散的模塊按照依賴和規則打包成符合生產環境部署的前端資源。還可以將按需加載的模塊進行代碼分隔,等到實際

需要的時候再異步加載。通過 loader  的轉換,任何形式的資源都可以視作模塊,比如 CommonJs 模塊、 AMD 模塊、 ES6 模塊、CSS、圖片、 JSON、Coffeescript、 LESS 等。

模塊系統的演進<script>標簽

<script src="module1.js"></script><script src="module2.js"></script><script src="libraryA.js"></script><script src="module3.js"></script>

這是最原始的 JavaScript 文件加載方式,如果把每一個文件看做是一個模塊,那么他們的接口通常是暴露在全局作用域下,也就是定義在 window  對象中,

不同模塊的接口調用都是一個作用域中,一些復雜的框架,會使用命名空間的概念來組織這些模塊的接口,典型的例子如 YUI  庫。

這種原始的加載方式暴露了一些顯而易見的弊端:

  1. 全局作用域下容易造成變量沖突
  2. 文件只能按照   <script>  的書寫順序進行加載
  3. 開發人員必須主觀解決模塊和代碼庫的依賴關系
  4. 在大型項目中各種資源難以管理,長期積累的問題導致代碼庫混亂不堪

CommonJS規范

CommonJS 是以在瀏覽器環境之外構建 JavaScript 生態系統為目標而產生的項目,比如在服務器和桌面環境中。

CommonJS 規范是為了解決 JavaScript 的作用域問題而定義的模塊形式,可以使每個模塊它自身的命名空間中執行。該規范的主要內容是,模塊必須通過 module.exports  導出對外的變量 或接口,通過   require()  來導入其他模塊的輸出到當前模塊作用域中。

一個直觀的例子

// moduleA.jsmodule.exports = function( value ){  return value * 2;}// moduleB.jsvar multiplyBy2 = require('./moduleA');var result = multiplyBy2(4);

AMD規范

AMD(異步模塊定義)是為瀏覽器環境設計的,因為 CommonJS 模塊系統是同步加載的,當前瀏覽器環境還沒有準備好同步加載模塊的條件。

模塊通過 define  函數定義在閉包中,格式如下:

define(id?: String, dependencies?: String[], factory: Function|Object);

id  是模塊的名字,它是可選的參數。

factory  是最后一個參數,它包裹了模塊的具體實現,它是一個函數或者對象。如果是函數,那么它的返回值就是模塊的輸出接口或值。

一些用例

定義一個名為 myModule  的模塊,它依賴   jQuery  模塊:

define('myModule', ['jquery'], function($) {  // $ 是 jquery 模塊的輸出  $('body').text('hello world');}); // 使用 require(['myModule'], function(myModule) {});

注意 :在 webpack 中,模塊名只有局部作用域,在 Require.js 中模塊名是全局作用域,可以在全局引用。

定義一個沒有 id  值的匿名模塊,通常作為應用的啟動函數:

define(['jquery'], function($) {  $('body').text('hello world');});

AMD 也采用require()語句加載模塊,但不同于CommonJS,他要求兩個參數

第一個參數[module],是一個數組,里面的成員就是要加載的模塊; 第二個參數callback,則是加載成功之后的回調函數。如果將前面的代碼改寫成AMD形式,就是下面這樣:

math.add()與math模塊加載不是同步的,瀏覽器不會發生假死。所以很顯然,AMD比較適合瀏覽器環境

目前,主要有兩個Javascript庫實現了AMD規范: require.js 和 curl.js

 require(['math'], function (math) {    math.add(2, 3);  });

什么是 Webpack

Webpack 是一個模塊打包器。它將根據模塊的依賴關系進行靜態分析,然后將這些模塊按照指定的規則生成對應的靜態資源。

Webpack 的特點

  1. 代碼拆分
  2. Loader
  3. 智能解析
  4. 插件系統
  5. 快速運行

webpack基本使用

創建項目根目錄

初始化

npm init 或 npm init -y

全局安裝

npm install webpack -g

局部安裝,在項目目錄下安裝

npm install webpack --save-dev

--save: 將安裝的包的信息保存在package中

--dev:開發版本,只是項目構建的時候使用,項目構建完成后并不依賴的文件

如果使用web開發工具,單獨安裝

npm install webpack-dev-server --save-dev

基本使用

首先創建一個靜態頁面 index.html 和一個 JS 入口文件 entry.js:

<!-- index.html --><html><head><meta charset="utf-8"></head><body><script src="bundle.js"></script></body></html>

創建entry.js

// entry.js : 在頁面中打印出一句話document.write('It works.')

然后編譯 entry.js并打包到 bundle.js文件中

// 使用npm命令 webpack entry.js bundle.js

使用模塊

1.創建模塊module.js,在內部導出內容

module.exports = 'It works from module.js'

2.在entry.js中使用自定義的模塊

//entry.jsdocument.write('It works.')document.write(require('./module.js')) // 添加模塊

加載css模塊

1.安裝css-loader

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

2.創建css文件

//style.cssbody { background: yellow; }

3.修改 entry.js:

require("!style-loader!css-loader!./style.css") // 載入 style.cssdocument.write('It works.')document.write(require('./module.js'))

創建配置文件webpack.config.js

1.創建文件

var webpack = require('webpack')module.exports = { entry: './entry.js', output: {  path: __dirname,  filename: 'bundle.js' }, module: {  loaders: [    //同時簡化 entry.js 中的 style.css 加載方式:require('./style.css')   {test: //.css$/, loader: 'style-loader!css-loader'}  ] }}

2.修改 entry.js 中的 style.css 加載方式:require('./style.css')

3.運行webpack

在命令行頁面直接輸入webpack

插件使用

1.插件安裝

//添加注釋的插件npm install --save-devbannerplugin

2.配置文件的書寫

var webpack = require('webpack')module.exports = {  entry: './entry.js',  output: {    path: __dirname,    filename: 'bundle.js'  },  module: {    loaders: [      //同時簡化 entry.js 中的 style.css 加載方式:require('./style.css')      {        test: //.css$/,        loader: 'style-loader!css-loader'      }    ],    plugins: [      //添加注釋的插件      new webpack.BannerPlugin('This file is created by zhaoda')    ]  }}

3.運行webpack

// 可以在bundle.js的頭部看到注釋信息/*! This file is created by zhaoda */

開發環境

webpack

--progress : 顯示編譯的進度

--colors : 帶顏色顯示,美化輸出

--watch : 開啟監視器,不用每次變化后都手動編譯

12.4.7.1. webpack-dev-server

開啟服務,以監聽模式自動運行

1.安裝包

npm install webpack-dev-server -g --save-dev

2.啟動服務

實時監控頁面并自動刷新

webpack-dev-server --progress --colors

自動編譯

1.安裝插件

npm install --save-dev html-webpack-plugin

2.在配置文件中導入包

var htmlWebpackPlugin = require('html-webpack-plugin')

3.在配置文件中使用插件

plugins: [    //添加注釋的插件    new webpack.BannerPlugin('This file is created by zhaoda'),    //自動編譯    new htmlWebpackPlugin({      title: "index",      filename: 'index.html', //在內存中生成的網頁的名稱      template: './index.html' //生成網頁名稱的依據    })  ]

4.運行項目

webpack--save-dev

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持VeVb武林網。


注:相關教程知識閱讀請移步到JavaScript/Ajax教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
另类专区欧美制服同性| 欧美高清videos高潮hd| 亚洲午夜久久久久久久| 91网在线免费观看| 欧美成人精品一区二区三区| 欧美激情在线狂野欧美精品| 91在线中文字幕| 日韩免费av在线| 粉嫩老牛aⅴ一区二区三区| 国产精品激情av电影在线观看| 亚洲第一精品自拍| 欧美老女人性生活| 国内精品视频一区| 欧美午夜激情在线| 国产男女猛烈无遮挡91| 国产一区二区三区高清在线观看| 亚洲综合在线小说| 97精品在线视频| 国产综合在线观看视频| 亚洲综合社区网| 俺去啦;欧美日韩| 日韩精品免费综合视频在线播放| 国产精品久久久久7777婷婷| 按摩亚洲人久久| 国产一区二区黄| 亚洲人成啪啪网站| 中文日韩在线观看| 国产日韩换脸av一区在线观看| 亚洲免费视频在线观看| 日韩精品一二三四区| 亚洲国产私拍精品国模在线观看| 久久精品亚洲精品| 97国产精品视频| 亚洲综合自拍一区| 欧美精品午夜视频| 亚洲女人被黑人巨大进入| 欧美另类高清videos| 欧美性受xxxx白人性爽| 国产精品jizz在线观看麻豆| 久久精品久久久久久国产 免费| 伊人久久男人天堂| 久久久999成人| 成人网在线视频| 国产视频999| 国产极品精品在线观看| 亚洲国产另类 国产精品国产免费| 欧美大尺度在线观看| 色av吧综合网| 欧美亚洲国产成人精品| www.日韩视频| 青青草成人在线| 77777亚洲午夜久久多人| 久久免费高清视频| 国产亚洲视频在线观看| 日韩中文字幕网址| 色狠狠av一区二区三区香蕉蜜桃| 日韩中文字幕欧美| 欧美另类在线观看| 国产精品久久久久aaaa九色| 日韩美女写真福利在线观看| 亚洲精品少妇网址| 一区二区三区视频在线| 国内精品400部情侣激情| 中文日韩在线视频| 亚洲欧美一区二区三区情侣bbw| 懂色av影视一区二区三区| 国产97在线观看| 亚洲视频国产视频| 亚洲欧美国产高清va在线播| 日韩第一页在线| 欧美视频在线观看免费网址| 欧美激情一区二区三区久久久| 国产精品日韩欧美| 欧洲s码亚洲m码精品一区| 久久精品99久久久香蕉| www国产91| 国产精品 欧美在线| 精品国内亚洲在观看18黄| 欧美综合第一页| 91欧美日韩一区| 亚洲精品国产精品乱码不99按摩| 欧美成人免费一级人片100| 国产精品视频一区国模私拍| 欧美怡红院视频一区二区三区| 亚洲精品一区中文字幕乱码| 日产精品久久久一区二区福利| 欧美性开放视频| 欧美日韩国产精品一区二区三区四区| 国产一区二区三区在线免费观看| 日韩精品一区二区视频| 国色天香2019中文字幕在线观看| 亚洲免费视频在线观看| 国产精品三级在线| 97久久超碰福利国产精品…| 亚洲人成电影网站色xx| 26uuu国产精品视频| 国a精品视频大全| xvideos成人免费中文版| 91在线观看免费高清| 亚洲精品一区二区三区不| 亚洲人在线观看| 欧美精品videosex牲欧美| 国产精品99蜜臀久久不卡二区| 美女999久久久精品视频| 亚洲精品在线观看www| 精品久久久久久久久中文字幕| 久久久久99精品久久久久| 欧美性猛交xxxxx免费看| 精品视频在线播放色网色视频| 国产网站欧美日韩免费精品在线观看| 亚洲第一网站男人都懂| 日韩在线中文视频| 欧美另类高清videos| 国产精品久久久久久久久久三级| 欧美激情图片区| yellow中文字幕久久| 亲子乱一区二区三区电影| 久久久久久久亚洲精品| 日韩精品一二三四区| 国产精品人人做人人爽| 亚洲激情在线观看视频免费| 久久91亚洲人成电影网站| 精品偷拍各种wc美女嘘嘘| 中文字幕久久久| 深夜福利亚洲导航| 国产精品福利在线观看| 91在线视频精品| 欧美成人久久久| 亚洲成年人在线| 精品无码久久久久久国产| 国产一区二区三区三区在线观看| 亚洲精品xxxx| 国产欧美日韩免费看aⅴ视频| 国产成人精品久久亚洲高清不卡| 91视频国产高清| 亚洲视频在线观看视频| 久久久国产精品视频| 91av视频在线观看| 国产精品白嫩初高中害羞小美女| 日韩电视剧在线观看免费网站| 亚洲色图国产精品| 久久久久久久久久久网站| 国产91精品青草社区| 亚洲精品美女久久久| 国产网站欧美日韩免费精品在线观看| 亚洲欧美一区二区三区在线| 8090成年在线看片午夜| 国模私拍视频一区| 亚洲综合在线做性| 伊人成人开心激情综合网| 国产精品久久久久久久av电影| 国产精品亚洲网站| 欧美日韩第一视频| 456国产精品| 乱亲女秽乱长久久久| xxxx欧美18另类的高清| 91在线免费视频| 国产做受69高潮| 激情av一区二区| 3344国产精品免费看| 丝袜美腿精品国产二区| 51午夜精品视频| 在线精品国产成人综合| 一区二区三区四区精品|