《webpack學(xué)習(xí)》- 基本概念

模塊化

模塊化是將一個(gè)復(fù)雜的系統(tǒng)分解為多個(gè)模塊以方便編碼。
以前開(kāi)發(fā)通過(guò)命名空間的方式來(lái)組織代碼,例如JQuery,放在window.$下,但是存在一些缺點(diǎn):

  • 命名空間沖突,例如Zepto也被放在window.$下
  • 無(wú)法合理的管理項(xiàng)目的依賴(lài)和版本
  • 無(wú)法方便地控制依賴(lài)的加載順序

CommonJS

CommonJS(http://www.commonjs.org)是一種廣泛使用的JS模塊化規(guī)范,使用方式如下:

// 導(dǎo)入
const moduleA = requre(./moduleA);

// 導(dǎo)出
module.exports = moduleA.someFunc;

優(yōu)點(diǎn):

  • 代碼可復(fù)用于Node.js環(huán)境下并運(yùn)行,例如做同構(gòu)應(yīng)用
  • 通過(guò)NPM發(fā)布的很多第三方模塊都采用了CommonJS規(guī)范

缺點(diǎn):
 * 無(wú)法直接在瀏覽器環(huán)境下運(yùn)行,必須通過(guò)工具轉(zhuǎn)換成ES5

AMD

也是一種JS模塊化規(guī)范,與CommonJS不同在于,它采用了異步的方式去加載依賴(lài)的模塊。

// 定義一個(gè)模塊
define('module', ['dep'], function(dep){
  return exports;
});
// 導(dǎo)入和使用
require(['module'], funciton(module){
});

優(yōu)點(diǎn):

  • 可在不轉(zhuǎn)換代碼的情況下直接在瀏覽器中運(yùn)行
  • 可異步加載依賴(lài)
  • 可并行加載多個(gè)依賴(lài)
  • 代碼可運(yùn)行在瀏覽器環(huán)境和Node.js環(huán)境下

ES6 模塊化

它在語(yǔ)言層面上實(shí)現(xiàn)了模塊化。瀏覽器廠商和Node.js都宣布要原生支持該規(guī)范,它將逐漸取代CommonJS和AMD規(guī)范,成為瀏覽器和拂去起通用的模塊解決方案。

// 導(dǎo)入
import { readFile } from 'fs';
import React from 'react';

// 導(dǎo)出
export function hello() {};
export default {
// ...
};

缺點(diǎn):
目前無(wú)法直接運(yùn)行在大部分JS環(huán)境下,必須通過(guò)工具轉(zhuǎn)換成標(biāo)準(zhǔn)的ES5后才能正常運(yùn)行。

樣式中的模塊化

除了JS開(kāi)始進(jìn)行模塊化改造,前端開(kāi)發(fā)里的樣式文件也支持模塊化,例如SCSS、LESS等。

新框架

React、Vue、Angular

新語(yǔ)言

  • ES6
  • TS
  • Flow(類(lèi)TS,但更靈活)
  • SCSS、LESS

常見(jiàn)構(gòu)建工具

構(gòu)建工具的功能:

  • 代碼轉(zhuǎn)換
  • 文件優(yōu)化
  • 代碼分割
  • 模塊合并
  • 自動(dòng)刷新
  • 代碼校驗(yàn)
  • 自動(dòng)發(fā)布

常見(jiàn)構(gòu)建工具:

  • Npm Script
  • Grunt
  • Gulp
  • Fis3
  • Rollup
  • webpack(隨著時(shí)代的發(fā)展,webpack目前已經(jīng)具有統(tǒng)治的地位,其他的就不介紹了)
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容