欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Vue中webpack的使用詳解

 更新時間:2022年03月29日 15:52:31   作者:林中靜月下仙  
這篇文章主要為大家詳細(xì)介紹了Vue中webpack的使用,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助

1、什么是Webpack

本質(zhì)上, webpack是一個現(xiàn)代JavaScript應(yīng)用程序的靜態(tài)模塊打包器(module bundler) 。當(dāng)webpack處理應(yīng)用程序時, 它會遞歸地構(gòu)建一個依賴關(guān)系圖(dependency graph) , 其中包含應(yīng)用程序需要的每個模塊, 然后將所有這些模塊打包成一個或多個bundle.

Webpack是當(dāng)下最熱門的前端資源模塊化管理和打包工具, 它可以將許多松散耦合的模塊按照依賴和規(guī)則打包成符合生產(chǎn)環(huán)境部署的前端資源。還可以將按需加載的模塊進(jìn)行代碼分離,等到實際需要時再異步加載。通過 loader轉(zhuǎn)換, 任何形式的資源都可以當(dāng)做模塊, 比如Commons JS、AMD、ES 6、CSS、JSON、Coffee Script、LESS等;

伴隨著移動互聯(lián)網(wǎng)的大潮, 當(dāng)今越來越多的網(wǎng)站已經(jīng)從網(wǎng)頁模式進(jìn)化到了WebApp模式。它們運行在現(xiàn)代瀏覽器里, 使用HTML 5、CSS 3、ES 6等新的技術(shù)來開發(fā)豐富的功能, 網(wǎng)頁已經(jīng)不僅僅是完成瀏覽器的基本需求; WebApp通常是一個SPA(單頁面應(yīng)用) , 每一個視圖通過異步的方式加載,這導(dǎo)致頁面初始化和使用過程中會加載越來越多的JS代碼,這給前端的開發(fā)流程和資源組織帶來了巨大挑戰(zhàn)。

前端開發(fā)和其他開發(fā)工作的主要區(qū)別,首先是前端基于多語言、多層次的編碼和組織工作,其次前端產(chǎn)品的交付是基于瀏覽器的,這些資源是通過增量加載的方 式運行到瀏覽器端,如何在開發(fā)環(huán)境組織好這些碎片化的代碼和資源,并且保證他們在瀏覽器端快速、優(yōu)雅的加載和更新,就需要一個模塊化系統(tǒng),這個理想中的模 塊化系統(tǒng)是前端工程師多年來一直探索的難題。

2、模塊化的演進(jìn)

Script標(biāo)簽

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

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

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

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

CommonsJS

服務(wù)器端的NodeJS遵循CommonsJS規(guī)范,該規(guī)范核心思想是允許模塊通過require方法來同步加載所需依賴的其它模塊,然后通過exports或module.exports來導(dǎo)出需要暴露的接口。

require("module");
require("../module.js");
export.doStuff = function(){};
module.exports = someValue;
1234

優(yōu)點:

  • 服務(wù)器端模塊便于重用
  • NPM中已經(jīng)有超過45萬個可以使用的模塊包
  • 簡單易用

缺點:

  • 同步的模塊加載方式不適合在瀏覽器環(huán)境中,同步意味著阻塞加載,瀏覽器資源是異步加載的
  • 不能非阻塞的并行加載多個模塊

實現(xiàn):

  • 服務(wù)端的NodeJS
  • Browserify,瀏覽器端的CommonsJS實現(xiàn),可以使用NPM的模塊,但是編譯打包后的文件體積較大
  • modules-webmake,類似Browserify,但不如Browserify靈活
  • wreq,Browserify的前身

AMD

Asynchronous Module Definition規(guī)范其實主要一個主要接口define(id?,dependencies?,factory);它要在聲明模塊的時候指定所有的依 賴dependencies,并且還要當(dāng)做形參傳到factory中,對于依賴的模塊提前執(zhí)行。

define("module",["dep1","dep2"],functian(d1,d2){
	return someExportedValue;
});
require(["module","../file.js"],function(module,file){});
1234

優(yōu)點

  • 適合在瀏覽器環(huán)境中異步加載模塊
  • 可以并行加載多個模塊

缺點

  • 提高了開發(fā)成本,代碼的閱讀和書寫比較困難,模塊定義方式的語義不暢
  • 不符合通用的模塊化思維方式,是一種妥協(xié)的實現(xiàn)

實現(xiàn)

  • RequireJS
  • curl

CMD

Commons Module Definition規(guī)范和AMD很相似,盡保持簡單,并與CommonsJS和NodeJS的Modules規(guī)范保持了很大的兼容性。

define(function(require,exports,module){
	var $=require("jquery");
	var Spinning = require("./spinning");
	exports.doSomething = ...;
	module.exports=...;
});

優(yōu)點:

  • 依賴就近,延遲執(zhí)行
  • 可以很容易在NodeJS中運行缺點
  • 依賴SPM打包,模塊的加載邏輯偏重

實現(xiàn)

  • Sea.js
  • coolie

ES6模塊

EcmaScript 6標(biāo)準(zhǔn)增加了JavaScript語言層面的模塊體系定義。ES 6模塊的設(shè)計思想, 是盡量靜態(tài)化, 使編譯時就能確定模塊的依賴關(guān)系, 以及輸入和輸出的變量。Commons JS和AMD模塊,都只能在運行時確定這些東西。

import "jquery"
export function doStuff(){}
module "localModule"{}

優(yōu)點

  • 容易進(jìn)行靜態(tài)分析
  • 面向未來的Ecma Script標(biāo)準(zhǔn)

缺點

  • 原生瀏覽器端還沒有實現(xiàn)該標(biāo)準(zhǔn)
  • 全新的命令,新版的Node JS才支持

實現(xiàn)

  • Babel

大家期望的模塊  

系統(tǒng)可以兼容多種模塊風(fēng)格, 盡量可以利用已有的代碼, 不僅僅只是JavaScript模塊化, 還有CSS、圖片、字體等資源也需要模塊化。

3、安裝Webpack

WebPack是一款模塊加載器兼打包工具, 它能把各種資源, 如JS、JSX、ES 6、SASS、LESS、圖片等都作為模塊來處理和使用。

安裝:

npm install webpack -g
npm install webpack-cli -g

測試安裝成功

  • webpack -v
  • webpack-cli -v 

配置

創(chuàng)建 webpack.config.js配置文件

  • entry:入口文件, 指定Web Pack用哪個文件作為項目的入口
  • output:輸出, 指定WebPack把處理完成的文件放置到指定路徑
  • module:模塊, 用于處理各種類型的文件
  • plugins:插件, 如:熱更新、代碼重用等
  • resolve:設(shè)置路徑指向
  • watch:監(jiān)聽, 用于設(shè)置文件改動后直接打包
module.exports = {
	entry:"",
	output:{
		path:"",
		filename:""
	},
	module:{
		loaders:[
			{test:/\.js$/,;\loade:""}
		]
	},
	plugins:{},
	resolve:{},
	watch:true
}

直接運行webpack命令打包

4、使用webpack

1.創(chuàng)建項目

2.創(chuàng)建一個名為modules的目錄,用于放置JS模塊等資源文件

3.在modules下創(chuàng)建模塊文件,如hello.js,用于編寫JS模塊相關(guān)代碼

	//暴露一個方法:sayHi
	exports.sayHi = function(){
		document.write("<div>Hello Webpack</div>");
	}

在modules下創(chuàng)建一個名為main.js的入口文件,用于打包時設(shè)置entry屬性

//require 導(dǎo)入一個模塊,就可以調(diào)用這個模塊中的方法了
var hello = require("./hello");
hello.sayHi();

在項目目錄下創(chuàng)建webpack.config.js配置文件,使用webpack命令打包

module.exports = {
	entry:"./modules/main.js",
	output:{
		filename:"./js/bundle.js"
	}
 
}

在項目目錄下創(chuàng)建HTML頁面,如index.html,導(dǎo)入webpack打包后的JS文件

	<!doctype html>
	<html lang="en">
		<head>
			<meta charset="UTF-8">
			<title>狂神說Java</title>
		</head>
		<body>
			<script src="dist/js/bundle.js"></script>
		</body>
	</html>

1.在IDEA控制臺中直接執(zhí)行webpack;如果失敗的話,就使用管理員權(quán)限運行即可!

2.運行HTML看效果

說明

# 參數(shù)--watch 用于監(jiān)聽變化
webpack --watch

總結(jié)

本篇文章就到這里了,希望能夠給你帶來幫助,也希望您能夠多多關(guān)注腳本之家的更多內(nèi)容!

相關(guān)文章

  • Vue組件模板的幾種書寫形式(3種)

    Vue組件模板的幾種書寫形式(3種)

    這篇文章主要介紹了Vue組件模板的幾種書寫形式(3種),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-02-02
  • Vue實現(xiàn)實時更新sessionStorage數(shù)據(jù)的示例代碼

    Vue實現(xiàn)實時更新sessionStorage數(shù)據(jù)的示例代碼

    這篇文章主要為大家詳細(xì)介紹了Vue如何實現(xiàn)實時更新sessionStorage數(shù)據(jù),文中的示例代碼講解詳細(xì),具有一定的參考價值,需要的可以參考一下
    2023-06-06
  • element-ui循環(huán)顯示radio控件信息的方法

    element-ui循環(huán)顯示radio控件信息的方法

    今天小編就為大家分享一篇element-ui循環(huán)顯示radio控件信息的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-08-08
  • vue 組件中slot插口的具體用法

    vue 組件中slot插口的具體用法

    這篇文章主要介紹了vue 中slot 的具體用法,包括子組件父組件的代碼介紹,需要的朋友可以參考下
    2018-04-04
  • 一個可復(fù)用的vue分頁組件

    一個可復(fù)用的vue分頁組件

    這篇文章主要為大家詳細(xì)介紹了一個可復(fù)用的vue分頁組件,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-05-05
  • vue.js移動端tab組件的封裝實踐實例

    vue.js移動端tab組件的封裝實踐實例

    本篇文章主要介紹了vue.js移動端tab的封裝實踐實例,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-06-06
  • 基于vue 開發(fā)中出現(xiàn)警告問題去除方法

    基于vue 開發(fā)中出現(xiàn)警告問題去除方法

    下面小編就為大家分享一篇基于vue 開發(fā)中出現(xiàn)警告問題去除方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-01-01
  • 使用Vue.js中的過濾器實現(xiàn)冪方求值的方法

    使用Vue.js中的過濾器實現(xiàn)冪方求值的方法

    這篇文章主要介紹了使用Vue.js中的過濾器實現(xiàn)冪方求值的方法,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價值,需要的朋友可以參考下
    2019-08-08
  • Vue vxe-table使用問題收錄小結(jié)

    Vue vxe-table使用問題收錄小結(jié)

    這篇文章主要為大家介紹了Vue vxe-table使用問題收錄小結(jié),有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-09-09
  • vue使用echarts實現(xiàn)折線圖

    vue使用echarts實現(xiàn)折線圖

    這篇文章主要為大家詳細(xì)介紹了vue使用echarts實現(xiàn)折線圖,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-03-03

最新評論