js引入commonjs,Js引入split

本文目錄一覽:

CommonJS規範

Node應用由模塊組成,採用CommonJS規範。每一個文件就是一個模塊,有自己的作用域。在一個文件裡面定義的變數、函數、類都是私有的,對其他文件不可見。

引入模塊列印結果如下圖:

exports.xxx 是給exports對象添加屬性,可以多次添加.

引入模塊列印結果如下圖:

module.exports 是給module對象的exports屬性賦值,再次添加會將上次的值覆蓋掉,只能添加一次。

那CommonJS暴露的到底是什麼呢?

CommonJS規範規定,每個模塊內部,module變數表示當前模塊。這個變數是一個對象,它的exports屬性(module.exports)是對外的介面。暴露模塊的本質是:將exports對象暴露。載入某個模塊,其實是載入該模塊的exports屬性。

那在模塊中,我們並未看到定義module這個變數,這個變數到底是誰提供的呢?

我們通過在模塊中列印==argument.callee== 可以觀察到當前執行的函數對象

什麼是【CommonJs】

CommonJs 是一種 JavaScript 語言的模塊化規範,它通常會在服務端的 Nodejs 上使用。項目是由多個模塊組成的,模塊和模塊之間的調用,需要各個模塊有相同規範的 API,這樣一來在使用的過程中不會有那麼多的學習成本,並且對於單個模塊來說是類聚的。

在 CommonJs 的模塊化規範中,每一個文件就是一個模塊,擁有自己獨立的作用域、變數、以及方法等,對其他的模塊都不可見。CommonJS規範規定,每個模塊內部,module 變數代表當前模塊。這個變數是一個對象,它的 exports 屬性(module.exports)是對外的介面。載入某個模塊,其實是載入該模塊的 module.exports 屬性。require 方法用於載入模塊。

模塊化規範給項目帶來極大的好處,在業務複雜,模塊眾多的大型項目中,開發者都遵循相同的規則來開發各自的模塊,他們通過規範來約束模塊的定義,大家不需要太多的溝通或者大量的文檔來說明自己的模塊使用規則,成千上萬的模塊就這樣生產,並能夠容易的使用。它的意義不僅是讓模塊看起來很規範,在合作開發、社區中傳播中也起到了重大的作用。

CommonJS與ES6模塊化的具體使用方式

所以:只需要將需要暴露給外部的變數或者方法 設置為exports的屬性 就行,

可以把exports看做一個全局對象,把所有暴露出來的函數和變數都存放在裡面

1.先寫個6.js文件

CommonJS規範規定,每個模塊內部,module變數代表當前模板,這個變數是一個對象,他的 exports 屬性(相當於 module.exports )是對外的介面。 這裡詳情請看我的另一篇文章: module、exports 和 require的關係

載入某個模塊,其實是載入該模塊的module.exports屬性。require方法用於載入模塊

ES6模塊化的使用方法:(注!因為CommonJS類庫眾多,以及 CommonJS 和 ES6 之間的差異,所以無法直接兼容es6。)

直接/按需導出:可使用多個 用變數/常量的方式

導入:需要用按需導入 {解構} 的方式獲取

默認導出:只能使用一個 (default屬性只有es6才有)可以用引入對象定義多個屬性,但這樣在引入後調用的時候,更麻煩。

導入:優點:可以直接使用文件做接收參數且不用結構。

重命名export和import

如果導入的多個文件中,變數名字相同,即會產生命名衝突的問題,為了解決該問題,ES6為提供了重命名的方法,當你在導入名稱時可以這樣做:

如果想看CommonJS與ES6模塊化的原理 可以去看我另一篇文章

[秦圓圓]大佬寫的 require和import的區別

[大孩子氣]大佬寫的 require/exports、import/export 的區別

[七分sunshine!]大佬寫的# 前端模塊化工具 requireJs的使用;

原創文章,作者:IFYY,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/137567.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
IFYY的頭像IFYY
上一篇 2024-10-04 00:17
下一篇 2024-10-04 00:17

相關推薦

  • JS Proxy(array)用法介紹

    JS Proxy(array)可以說是ES6中非常重要的一個特性,它可以代理一個數組,監聽數據變化並進行攔截、處理。在實際開發中,使用Proxy(array)可以方便地實現數據的監…

    編程 2025-04-29
  • Split()函數在Python中的應用

    Python中split()函數是一個非常常用的字元串處理函數,它可以將一個字元串按照指定的分隔符進行分割,返回一個分割後的字元串列表。在這篇文章中,我們將從多個方面對split(…

    編程 2025-04-29
  • 解析js base64並轉成unit

    本文將從多個方面詳細介紹js中如何解析base64編碼並轉成unit格式。 一、base64編碼解析 在JavaScript中解析base64編碼可以使用atob()函數,它會將b…

    編程 2025-04-29
  • Node.js使用Body-Parser處理HTTP POST請求時,特殊字元無法返回的解決方法

    本文將解決Node.js使用Body-Parser處理HTTP POST請求時,特殊字元無法返回的問題。同時,給出一些相關示例代碼,以幫助讀者更好的理解並處理這個問題。 一、問題解…

    編程 2025-04-29
  • t3.js:一個全能的JavaScript動態文本替換工具

    t3.js是一個非常流行的JavaScript動態文本替換工具,它是一個輕量級庫,能夠很容易地實現文本內容的遞增、遞減、替換、切換以及其他各種操作。在本文中,我們將從多個方面探討t…

    編程 2025-04-28
  • JS圖片沿著SVG路徑移動實現方法

    本文將為大家詳細介紹如何使用JS實現圖片沿著SVG路徑移動的效果,包括路徑製作、路徑效果、以及實現代碼等內容。 一、路徑製作 路徑的製作,我們需要使用到SVG,SVG是可縮放矢量圖…

    編程 2025-04-27
  • 如何使用JS調用Python腳本

    本文將詳細介紹通過JS調用Python腳本的方法,包括使用Node.js、Python shell、child_process等三種方法,以及在Web應用中的應用。 一、使用Nod…

    編程 2025-04-27
  • 如何反混淆美團slider.js

    本文將從多個方面詳細闡述如何反混淆美團slider.js。在開始之前,需要明確的是,混淆是一種保護JavaScript代碼的方法,其目的是使代碼難以理解和修改。因此,在進行反混淆操…

    編程 2025-04-27
  • Python要學JS嗎?

    Python和JavaScript都是非常受歡迎的編程語言。然而,你可能會問,既然我已經學了Python,是不是也需要學一下JS呢?在本文中,我們將圍繞這個問題進行討論,並從多個角…

    編程 2025-04-27
  • 解決js ajax post 419問題

    對於使用ajax post請求時出現的419問題,我們需要進行以下幾個方面的闡述,包括返回碼的含義、可能出現的情況、解決方案等內容。 一、解析419返回碼 419返回碼錶示用戶超時…

    編程 2025-04-27

發表回復

登錄後才能評論