成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

常見,但是總回答不好的面試題:JS 模塊化以及模塊打包器

開發(fā) 前端
JS 中的模塊化指的是 代碼和邏輯分割 的一種方式。通常,我們可以簡單的把一個js文件理解為一個模塊。最初的 JS 中并不支持模塊化,因此延伸出來很多社區(qū)模塊化方案,比如:AMD、UMD,但是目前除了 UMD 之外,其他都已經(jīng)很少見了。

Hello,大家好,我是 Sunday。

如今的前端已經(jīng)是一套非常復(fù)雜的體系了,甚至延伸出來了所謂“微前端”的概念。而支撐這些復(fù)雜邏輯的前提就是 模塊化 的概念。

但是,我在和很多的同學(xué)溝通(做技術(shù)摸底)的過程中,卻發(fā)現(xiàn):很多同學(xué)并不清楚模塊化的知識。

這個說實話,開發(fā)天天用,但是猛地這么一背問,很多同學(xué)都沒有回答的很好。

所以說,今天咱們就借助這邊文章,來說一說:模塊化 以及 模塊打包器!

什么是模塊?

在 JavaScript 中,模塊就像一個單獨的代碼包,我們可以在程序的不同部分中使用它。

該包被封裝在指定的范圍內(nèi),可重用且易于維護。

圖片圖片

如上圖所示:它可以通過將代碼分解為更易于使用的、更小的部分 來幫助保持代碼的組織性。

通常情況下:每一個 JS 文件都將是一個模塊! 所以,我們可以 簡單的 把一個模塊理解為一個 js 文件(注意:這只是簡單的理解)

JS 的模塊化體系

最初的時候,JS 是不支持任何模塊系統(tǒng)的。所以,就產(chǎn)生了很多 社區(qū)模塊化規(guī)范,比較常見的有:

  1. AMD
  2. CMD
  3. UMD
  4. ...

不過好處是,這些模塊化規(guī)范,在現(xiàn)在的開發(fā)中幾乎已經(jīng)不可見了。除了 UMD 規(guī)范,在庫打包中依然存在。

所以,從目前來看,我們不需要深入了解它們。

雖然,以上的社區(qū)化規(guī)范,我們不需要深入了解。但是,目前常用的 兩種 模塊化方式,大家必須要知道:

  1. CommonJS:主要應(yīng)用在 Node 端。以 module.exports 導(dǎo)出,以 require 導(dǎo)入。
module.exports = {
  name: '張三'
}
-----
const {name} = require('路徑')
  1. ES6 Module:主要應(yīng)用在 瀏覽器端。以 export(按需導(dǎo)出) 或者 export default(默認導(dǎo)出) 導(dǎo)出,以 import 導(dǎo)入
export const name = '張三' // 可以寫多個

// 一個模塊(JS文件)只能寫一個
export default {
  name: '李四'
}
-----
import {name} from '路徑' // 按需導(dǎo)入
import obj from '路徑' // 默認導(dǎo)入

模塊打包器

常見的模塊打包器有很多,比如:Webpack、Vite、Rollup、Parcel、Browserify 等等。

他們的作用主要是:把一個或多個模塊,按照執(zhí)行的順序添加到 html 文件中。打包出來的的內(nèi)容,一般被稱為 bundle

圖片圖片

而隨著前端項目的復(fù)雜度越來越高,這些打包器也被賦予了更多的能力,比如:

  • 使用Tree Shaking過程從包中刪除未使用的代碼
  • 通過減少獲取模塊所需的 HTTP 請求數(shù)量來優(yōu)化 Javascript 的加載
  • 還包括代碼壓縮、捆綁包分割和代碼分塊等功能,以進一步優(yōu)化捆綁包大小
  • 甚至還而已自定義 loader 或 plugin 來賦予它們更多的能力

答案

那么最后,讓我們回答這個問題:

JS 中的模塊化指的是 代碼和邏輯分割 的一種方式。通常,我們可以簡單的把一個js文件理解為一個模塊。

最初的 JS 中并不支持模塊化,因此延伸出來很多社區(qū)模塊化方案,比如:AMD、UMD,但是目前除了 UMD 之外,其他都已經(jīng)很少見了。

現(xiàn)在,常用的模塊化主要有兩種:CJS(Node 端)、ESM(瀏覽器端)。

隨著前端項目越來越復(fù)雜,又延伸出來模塊打包器的概念。特別是在一些框架的使用中,這是非常有用的。

責(zé)任編輯:武曉燕 來源: 程序員Sunday
相關(guān)推薦

2019-08-28 16:18:39

JavaScriptJS前端

2016-10-09 11:03:41

Javascript模塊化Web

2012-11-08 09:45:44

JavaScriptrequireJS

2012-11-08 10:21:41

JSrequireJavaScript

2020-09-17 10:30:21

前端模塊化組件

2020-09-18 09:02:32

前端模塊化

2010-05-13 17:36:50

2010-08-18 09:03:07

模塊化路由器

2010-08-16 13:49:39

模塊化路由器

2023-11-13 07:37:36

JS面試題線程

2022-09-05 09:01:13

前端模塊化

2009-11-30 09:00:48

模塊化路由器

2013-08-20 15:31:18

前端模塊化

2017-05-18 10:23:55

模塊化開發(fā)RequireJsJavascript

2015-10-10 11:29:45

Java模塊化系統(tǒng)初探

2022-03-11 13:01:27

前端模塊

2015-09-29 09:24:22

Node.js面試題

2009-06-16 14:03:16

Hibernate面試Hibernate面試

2022-09-21 11:51:26

模塊化應(yīng)用

2009-12-03 20:15:13

模塊化路由器
點贊
收藏

51CTO技術(shù)棧公眾號

主站蜘蛛池模板: 男人的天堂亚洲 | 中文字幕日韩一区 | 亚洲国产精品一区二区第一页 | 伊人网99 | 超碰人人91 | 成人在线播放 | 日韩欧美一区二区三区四区 | 影音先锋久久 | 日韩视频免费在线 | 久久精品国产99国产精品亚洲 | 精品视频一区二区 | 中文字幕日韩在线 | 日日夜夜天天 | www国产成人免费观看视频,深夜成人网 | 久久国产精品免费一区二区三区 | 久久综合九九 | 亚洲成人精品久久久 | 国产在线不卡视频 | 亚洲精品国产电影 | 亚洲精品麻豆 | 在线视频一区二区 | 成人福利视频网站 | 一级黄片一级毛片 | 日韩视频国产 | 精品国产乱码久久久久久牛牛 | av在线一区二区三区 | 亚洲天堂一区 | 91久久北条麻妃一区二区三区 | 日韩精品在线一区 | 午夜小电影 | 中文字幕a√ | 青青草在线播放 | 国产成人jvid在线播放 | 一级欧美黄色片 | 国产精品1区2区3区 中文字幕一区二区三区四区 | 久久婷婷香蕉热狠狠综合 | 在线天堂免费中文字幕视频 | 狠狠草视频 | 国产成人福利 | 北条麻妃99精品青青久久 | 欧美黄色网络 |