国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

CommonJs規(guī)范和ES 模塊系統(tǒng)

這篇具有很好參考價值的文章主要介紹了CommonJs規(guī)范和ES 模塊系統(tǒng)。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報違法"按鈕提交疑問。

一、CommonJs規(guī)范

CommonJS 是一種模塊化規(guī)范,用于在 JavaScript 應(yīng)用程序中組織和管理代碼的模塊。它定義了模塊的導(dǎo)入和導(dǎo)出機(jī)制,使得開發(fā)者可以將代碼分割成可復(fù)用的模塊,并在不同的文件中引用和使用這些模塊。

CommonJS 規(guī)范有以下幾個主要特點(diǎn)用途

  1. 模塊化組織代碼:CommonJS 允許將代碼按功能或邏輯分類成獨(dú)立的模塊,每個模塊只負(fù)責(zé)特定的功能,使代碼更加可維護(hù)和可復(fù)用。
  2. 隔離命名空間:每個模塊都有自己獨(dú)立的作用域,不會與其他模塊中的變量和函數(shù)沖突,有效避免命名沖突。
  3. 代碼加載管理:CommonJS 規(guī)范提供了模塊的加載和緩存機(jī)制,可以確保模塊只會被加載一次,避免重復(fù)加載和執(zhí)行,提高性能。
  4. 跨平臺使用:CommonJS 規(guī)范不限于在瀏覽器中使用,也可以在其他 JavaScript 運(yùn)行環(huán)境中使用,如 Node.js 等。

在開發(fā)中,我們可以使用 CommonJS 規(guī)范來創(chuàng)建和使用模塊。下面是一個使用 CommonJS 規(guī)范的示例

  1. 創(chuàng)建模塊
    假設(shè)我們有一個 “math.js” 的模塊,用于封裝常用的數(shù)學(xué)函數(shù)。我們可以創(chuàng)建一個 “math.js” 文件,并在其中定義我們的模塊代碼。
// math.js

function add(a, b) {
  return a + b;
}

function subtract(a, b) {
  return a - b;
}

module.exports = {
  add,
  subtract
};

在上述代碼中,我們定義了兩個函數(shù) addsubtract,并使用 module.exports 將它們導(dǎo)出為模塊的接口。

  1. 導(dǎo)入模塊
    我們可以在其他文件中導(dǎo)入并使用 “math.js” 模塊的代碼。
// main.js

const math = require('./math.js');

console.log(math.add(5, 3));  // 輸出結(jié)果: 8
console.log(math.subtract(10, 4));  // 輸出結(jié)果: 6

在上述代碼中,我們使用 require 函數(shù)導(dǎo)入 “math.js” 模塊,并將其賦值給 math 變量。然后,我們就可以通過 math 對象使用模塊中的函數(shù)。

以上就是使用 CommonJS 規(guī)范在開發(fā)中創(chuàng)建和使用模塊的簡要示例。通過使用 CommonJS 規(guī)范,我們可以更好地組織代碼,提高代碼的可維護(hù)性和可復(fù)用性。

二、ES 模塊系統(tǒng)

ES 模塊系統(tǒng)是 ECMAScript(JavaScript)的官方模塊系統(tǒng)。它允許開發(fā)者將代碼分割為多個模塊,并且可以通過導(dǎo)入和導(dǎo)出語法來共享模塊之間的代碼。

ES 模塊系統(tǒng)有以下幾個優(yōu)點(diǎn)

  1. 模塊化:ES 模塊系統(tǒng)采用了顯式的導(dǎo)入和導(dǎo)出語法,可以將代碼分割為多個模塊,使代碼結(jié)構(gòu)更加清晰和可維護(hù)。

  2. 作用域:每個模塊都有自己的作用域,模塊內(nèi)部的變量和函數(shù)不會被外部訪問,從而避免了全局命名沖突和污染。

  3. 異步加載:ES 模塊系統(tǒng)支持動態(tài)導(dǎo)入,可以在需要的時候異步加載模塊,提高了應(yīng)用的性能。

  4. 靜態(tài)分析:ES 模塊系統(tǒng)能夠在編譯時進(jìn)行靜態(tài)分析,使得工具和編譯器可以更好地優(yōu)化代碼。

如何使用?

  1. 默認(rèn)導(dǎo)入和導(dǎo)出

默認(rèn)導(dǎo)出允許一個模塊只導(dǎo)出一個變量、函數(shù)或者類,而不需要指定一個具體的名字??梢允褂?code>export default語法進(jìn)行默認(rèn)導(dǎo)出,其他模塊可以通過import語法來導(dǎo)入默認(rèn)導(dǎo)出的內(nèi)容。

示例代碼中,假設(shè)有一個名為math.js的模塊,它默認(rèn)導(dǎo)出了一個計(jì)算兩個數(shù)之和的函數(shù):

// math.js
export default function add(a, b) {
  return a + b;
}

// main.js
import add from './math.js';

console.log(add(2, 3)); // 輸出 5
  1. 多個變量或函數(shù)的導(dǎo)入導(dǎo)出

在一個模塊中,可以導(dǎo)出多個變量或函數(shù),其他模塊可以通過import語法導(dǎo)入其中的某個或全部導(dǎo)出的變量或函數(shù)。

示例代碼中,假設(shè)有一個名為math.js的模塊,它導(dǎo)出了兩個函數(shù)addsubtract

// math.js
export function add(a, b) {
  return a + b;
}

export function subtract(a, b) {
  return a - b;
}

// main.js
import { add, subtract } from './math.js';

console.log(add(2, 3)); // 輸出 5
console.log(subtract(5, 2)); // 輸出 3
  1. 默認(rèn)和多個變量一起導(dǎo)入導(dǎo)出的情況

在一個模塊中,既可以進(jìn)行默認(rèn)導(dǎo)出,也可以導(dǎo)出多個變量或函數(shù)。其他模塊可以通過import語法同時導(dǎo)入默認(rèn)導(dǎo)出和其他的變量或函數(shù)。

示例代碼中,假設(shè)有一個名為math.js的模塊,它默認(rèn)導(dǎo)出了一個函數(shù)add,同時導(dǎo)出了一個函數(shù)subtract

// math.js
export default function add(a, b) {
  return a + b;
}

export function subtract(a, b) {
  return a - b;
}

// main.js
import defaultAdd, { subtract } from './math.js';

console.log(defaultAdd(2, 3)); // 輸出 5
console.log(subtract(5, 2)); // 輸出 3

這樣,開發(fā)者可以根據(jù)需要選擇使用默認(rèn)導(dǎo)入導(dǎo)出、多個變量或函數(shù)的導(dǎo)入導(dǎo)出,以滿足不同的開發(fā)需求。

三、CommonJs規(guī)范和ES 模塊系統(tǒng)的對比

CommonJS ES 模塊系統(tǒng)
常用場景 服務(wù)器端、命令行工具、后端開發(fā) 前端開發(fā)、瀏覽器環(huán)境
引入方式 require() import
導(dǎo)出方式 module.exports export
靜態(tài)解析 不支持靜態(tài)解析,只能在運(yùn)行時加載和解析模塊 支持靜態(tài)解析,可以在編譯時進(jìn)行模塊解析
模塊的加載方式 同步加載,阻塞執(zhí)行 異步加載,非阻塞執(zhí)行
模塊的綁定方式 模塊加載返回的是一個對象,可以動態(tài)地修改和擴(kuò)展其屬性 模塊加載返回的是一個只讀對象,無法動態(tài)修改其屬性
循環(huán)依賴解決方式 只能通過在運(yùn)行時檢測到循環(huán)依賴并返回未完全加載的模塊對象來解決 支持動態(tài)導(dǎo)入,可以在需要時請求模塊的加載,解決循環(huán)依賴問題
導(dǎo)入導(dǎo)出的方式是否統(tǒng)一 導(dǎo)入和導(dǎo)出的方式不統(tǒng)一,導(dǎo)入是直接引用整個模塊對象,導(dǎo)出是賦值對象上的屬性 導(dǎo)入和導(dǎo)出的方式統(tǒng)一,都是通過標(biāo)準(zhǔn)的 import 和 export 關(guān)鍵字來實(shí)現(xiàn)
代碼的可讀性和可維護(hù)性 代碼可讀性較差,需要通過查看模塊對象上的屬性來確定導(dǎo)入的內(nèi)容 代碼可讀性較好,導(dǎo)入導(dǎo)出的部分直觀明了,更易于理解和維護(hù)
兼容性 在服務(wù)器端和命令行工具中廣泛使用,但在瀏覽器端需要依賴額外的打包工具進(jìn)行轉(zhuǎn)換 瀏覽器端支持較好,不需要額外的打包工具來進(jìn)行轉(zhuǎn)換
執(zhí)行順序 模塊會按照導(dǎo)入的順序依次加載和執(zhí)行,但加載和執(zhí)行是同步的 模塊的加載和執(zhí)行是異步的,執(zhí)行順序可以根據(jù)依賴關(guān)系來確定
動態(tài)導(dǎo)入 不支持動態(tài)導(dǎo)入,導(dǎo)入的路徑必須是靜態(tài)字符串 支持動態(tài)導(dǎo)入,可以在運(yùn)行時根據(jù)條件來決定導(dǎo)入哪些模塊

以上是CommonJS規(guī)范和ES 模塊系統(tǒng)的一些優(yōu)劣對比。在具體應(yīng)用中,可以根據(jù)場景和需求選擇合適的模塊系統(tǒng)。文章來源地址http://www.zghlxwxcb.cn/news/detail-526429.html

到了這里,關(guān)于CommonJs規(guī)范和ES 模塊系統(tǒng)的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請點(diǎn)擊違法舉報進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • JavaScript:模塊化【CommonJS與ES6】

    在 JavaScript 編程中,隨著項(xiàng)目的復(fù)雜性增加,代碼的組織和管理變得至關(guān)重要。模塊化是一種強(qiáng)大的編程概念,它允許我們將代碼劃分為獨(dú)立的模塊,提高了可維護(hù)性和可擴(kuò)展性。本文將詳細(xì)介紹 CommonJS 和 ES6 模塊,幫助你理解它們的特點(diǎn)和用法。 1. CommonJS 模塊化 CommonJS 是

    2024年02月13日
    瀏覽(92)
  • elasticsearch(ES)分布式搜索引擎04——(數(shù)據(jù)聚合,自動補(bǔ)全,數(shù)據(jù)同步,ES集群)

    elasticsearch(ES)分布式搜索引擎04——(數(shù)據(jù)聚合,自動補(bǔ)全,數(shù)據(jù)同步,ES集群)

    **聚合(aggregations)**可以讓我們極其方便的實(shí)現(xiàn)對數(shù)據(jù)的統(tǒng)計(jì)、分析、運(yùn)算。例如: 什么品牌的手機(jī)最受歡迎? 這些手機(jī)的平均價格、最高價格、最低價格? 這些手機(jī)每月的銷售情況如何? 實(shí)現(xiàn)這些統(tǒng)計(jì)功能的比數(shù)據(jù)庫的sql要方便的多,而且查詢速度非常快,可以實(shí)現(xiàn)近

    2024年02月08日
    瀏覽(36)
  • 前端面試:【前端工程化】CommonJS 與 ES6 模塊

    嗨,親愛的前端開發(fā)者!在現(xiàn)代Web開發(fā)中,模塊化是構(gòu)建可維護(hù)和可擴(kuò)展應(yīng)用程序的關(guān)鍵。本文將深入探討兩種主要的JavaScript模塊系統(tǒng):CommonJS 和 ES6 模塊,以幫助你了解它們的工作原理、用法以及如何選擇合適的模塊系統(tǒng)。 1. CommonJS: 用途: CommonJS 是一種模塊系統(tǒng),最初

    2024年02月11日
    瀏覽(103)
  • Elasticsearch (ES) 搜索引擎: 數(shù)據(jù)類型、動態(tài)映射、多類型(子字段)

    原文鏈接:https://xiets.blog.csdn.net/article/details/132348634 版權(quán)聲明:原創(chuàng)文章禁止轉(zhuǎn)載 專欄目錄:Elasticsearch 專欄(總目錄) ES 映射字段的 數(shù)據(jù)類型 ,官網(wǎng)文檔參考:Field data types。 下面是 ES 常用的一些基本數(shù)據(jù)類型。 字符串 類型: keyword :類型。 text :文本類型。

    2024年03月23日
    瀏覽(38)
  • ES搜索引擎入門+最佳實(shí)踐(九):項(xiàng)目實(shí)戰(zhàn)(二)--elasticsearch java api 進(jìn)行數(shù)據(jù)增刪改查

    ? ? ? ? 本篇是這個系列的最后一篇了,在這之前可以先看看前面的內(nèi)容: ES搜索引擎入門+最佳實(shí)踐(一)_flame.liu的博客-CSDN博客 ES搜索引擎入門+最佳實(shí)踐(二)_flame.liu的博客-CSDN博客 ES搜索引擎入門+最佳實(shí)踐(三)_flame.liu的博客-CSDN博客 ES搜索引擎入門+最佳實(shí)踐(四)_flame.liu的博客

    2024年02月12日
    瀏覽(28)
  • 前端框架前置課Node.js學(xué)習(xí)(1) fs,path,模塊化,CommonJS標(biāo)準(zhǔn),ECMAScript標(biāo)準(zhǔn),包

    前端框架前置課Node.js學(xué)習(xí)(1) fs,path,模塊化,CommonJS標(biāo)準(zhǔn),ECMAScript標(biāo)準(zhǔn),包

    目錄 什么是Node.js 定義 作用: 什么是前端工程化 Node.js為何能執(zhí)行Js fs模塊-讀寫文件 模塊 語法: 1.加載fs模塊對象 2.寫入文件內(nèi)容 3.讀取文件內(nèi)容 Path模塊-路徑處理 為什么要使用path模塊 語法 URL中的端口號 http模塊-創(chuàng)建Web服務(wù) 需求 步驟: 案例:瀏覽時鐘 步驟: 什么是模塊化 定

    2024年01月16日
    瀏覽(54)
  • Java SpringBoot API 實(shí)現(xiàn)ES(Elasticsearch)搜索引擎的一系列操作(超詳細(xì))(模擬數(shù)據(jù)庫操作)

    Java SpringBoot API 實(shí)現(xiàn)ES(Elasticsearch)搜索引擎的一系列操作(超詳細(xì))(模擬數(shù)據(jù)庫操作)

    小編使用的是elasticsearch-7.3.2 基礎(chǔ)說明: 啟動:進(jìn)入elasticsearch-7.3.2/bin目錄,雙擊elasticsearch.bat進(jìn)行啟動,當(dāng)出現(xiàn)一下界面說明,啟動成功。也可以訪問http://localhost:9200/ 啟動ES管理:進(jìn)入elasticsearch-head-master文件夾,然后進(jìn)入cmd命令界面,輸入npm?run?start?即可啟動。訪問http

    2024年02月04日
    瀏覽(34)
  • 使用Logstash同步mysql數(shù)據(jù)到Elasticsearch(親自踩坑)_將mysql中的數(shù)據(jù)導(dǎo)入es搜索引擎利用logstash(1)

    使用Logstash同步mysql數(shù)據(jù)到Elasticsearch(親自踩坑)_將mysql中的數(shù)據(jù)導(dǎo)入es搜索引擎利用logstash(1)

    先自我介紹一下,小編浙江大學(xué)畢業(yè),去過華為、字節(jié)跳動等大廠,目前阿里P7 深知大多數(shù)程序員,想要提升技能,往往是自己摸索成長,但自己不成體系的自學(xué)效果低效又漫長,而且極易碰到天花板技術(shù)停滯不前! 因此收集整理了一份《2024年最新大數(shù)據(jù)全套學(xué)習(xí)資料》,

    2024年04月28日
    瀏覽(27)
  • 前端10年進(jìn)化 Node.js、模塊化、CommonJS、AMD、CMD、Webpack、Vue-cli、Electron-vue

    模塊化的概念在軟件開發(fā)領(lǐng)域已經(jīng)存在很長時間,但在?JavaScript?中的模塊化發(fā)展相對較晚。以下是對您提出的問題的回答: 提出時間:JavaScript?中的模塊化概念相對較早地提出于?CommonJS?規(guī)范。CommonJS?是一種?JavaScript?模塊化規(guī)范,最早在?2009?年由?Ryan?Dahl?和其他社區(qū)成

    2024年02月11日
    瀏覽(25)
  • ElasticSearch內(nèi)容分享(四):ES搜索引擎

    ElasticSearch內(nèi)容分享(四):ES搜索引擎

    目錄 ES搜索引擎 1. DSL設(shè)置查詢條件 1.1 DSL查詢分類 1.2 全文檢索查詢 1.2.1 使用場景 1.2.2 match查詢 1.2.3 mulit_match查詢 1.3 精準(zhǔn)查詢 1.3.1 term查詢 1.3.2 range查詢 1.4 地理坐標(biāo)查詢 1.4.1 矩形范圍查詢 1.4.2 附近(圓形)查詢 1.5 復(fù)合查詢 1.5.0 復(fù)合查詢歸納 1.5.1 相關(guān)性算分 1.5.2 算分函數(shù)查

    2024年02月05日
    瀏覽(25)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包