如何在JavaScript中實現模塊化

2020-12-11 CoderDesign

JavaScript是目前web前端開發中的核心語言,隨著我們前端頁面功能複雜化之後,前端也進入了工程化開發。今天我和大家談談如何在JavaScript中實現模塊化。

JavaScript模塊化

首先我們來談談為何要在JavaScript中模塊化?因為我們的頁面功能變得越來越複雜,頁面的每個部分可能都要進行組件化開發,多人協作才能使我們的項目進展得更快。多人協作就會帶來很多問題,比如說變量名、函數名,大家一起開發避免不了重名的問題,還有作用域的問題。那麼如何解決這些問題呢?早期JavaScript採取自執行函數來封裝代碼,但是又會出現文件依賴的問題,所以就是一大堆的問題。JavaScript模塊化就是來解決重名、作用域、文件依賴這些問題的。什麼才是JavaScript的模塊化?相信很多人肯定會說,AMD模塊化、CMD模塊化、CommJS模塊化,對這些都是JavaScript的模塊化,不過這都是歷史了,對還有UMD模塊化這個還是不錯的。如若你還沒了解過的,請搜索相應的關鍵字自己看看,對了解我們JavaScript模塊化還是很有幫助的。但是今天我要和大家討論的是ES6這個JavaScript原生自帶的模塊化。如何學習ES6的模塊化?一般我們開發頁面都是先寫一個html頁面,然後才開始寫js得,那麼我今天就和大家說說這個傳統開發中如何使用模塊化(工程化開發又是另一種寫法)。step1:建立一個html頁面保存好,然後在頁面中插入如下代碼:<script type="module" src="a.js"></script>注意這裡的type="module"就是告訴瀏覽器,我們是採取模塊化的方式來加載a.js這個模塊的。step2:編寫a.js這個模塊要想真正的編寫一個ES6的模塊文件,我們還是要弄懂三個關鍵字:export、default、import。這三個關鍵字是用來編寫模塊的導入導出的,export導出的意思,export default默認導出,import導入的意思。a.js這個模塊應該怎麼寫呢?首先我們要搞清楚,這個模塊現在已經被加載進入html頁面了,其實我們就大可不必寫export導出了,因為導出是要給另外的模塊使用的,而我們現在已經在頁面中使用了這個模塊,當然你要導出給別的模塊使用也是可以的。那麼我們就考慮導入了,因為我們a.js這個模塊可能要使用其他模塊中的東西(變量、函數、類)。那麼如何導入呢?import {var function class} from './b.js';這段代碼就是編寫導入的基本寫法,當然還有其他寫法,暫時不一一介紹了。注意這的var代表你要填寫的變量名,function代表你要填寫的函數名,class代表你要填寫的類名。特別要提醒的是'./b.js'這裡的寫法不能隨便寫(有時間下次再解釋)。step3:編寫b.js模塊因為a.js模塊中想使用b.js模塊中的變量和函數及類,那麼我們在編寫b.js模塊的時候就要導出這些東西。所以為了簡單期間我不做解釋,直接寫點代碼如下:export var a=10;export function fn(){ console.log('我是b模塊中的函數'); }export class Myclass{省略……}step4:修改a.js中的代碼如下import { a , fn , Myclass } from './b.js';console.log(a);fn();這樣我們就簡單地實現了ES6的模塊化了。如果想詳細了解還是要多看資料。

相關焦點

  • JavaScript 模塊化的歷史進程
    從以上的嘗試中,可以歸納出 JavaScript 模塊化需要解決哪些問題:如何給模塊一個唯一標識?如何在模塊中使用依賴的外部模塊?如何安全地(不汙染模塊外代碼)包裝一個模塊?如何優雅地(不增加全局變量)把模塊暴漏出去?圍繞著這些問題,JavaScript 模塊化開始了一段曲折的探索之路。
  • 用javascript實現select的美化
    首頁 > 教程 > 關鍵詞 > 最新資訊 > 正文 用javascript實現select的美化
  • JavaScript 實現 JSON 解析器
    AST,但是我還沒有詳細介紹如何實現解析器。這是因為在一篇文章中實現JavaScript編譯器對我來說是一項艱巨的任務。好吧,不用擔心。JSON 也是一種語言。它具有自己的語法,您可以從規範[5]中參考。編寫 JSON 解析器所需的知識和技術可以轉移到編寫 JS 解析器中。因此,讓我們開始編寫 JSON 解析器!理解語法如果您查看了規範頁面,會發現有2個圖。
  • 什麼是模塊化?如何使用模塊化?
    js文件,而這個時候就會出現各種命名衝突,如果js也可以像java一樣,把不同功能的文件放在不同的package中,需要引用某個函數或功能的時候,import下相關的包,這樣可以很好的解決命名衝突等各種問題,但是js中沒有模塊的概念,又怎麼實現模塊化呢模塊化開發是一種管理方式,是一種生產方式,一種解決問題的方案,一個模塊就是實現特定功能的文件
  • Javascript 實現複製(Copy)動作大全
    來源 | https://www.liqingbo.cn/blog-1412.html1、實現點擊按鈕,複製文本框中的的內容<script type="text/javascript">function copyUrl2(){ var Url2=document.getElementById("biao1"); Url2.select(); document.execCommand("Copy");
  • 前端:用javascript實現一個轉盤小遊戲?
    本文轉載自【微信公眾號:趣談前端,ID:beautifulFront】經微信公眾號授權轉載,如需轉載與原文作者聯繫本文主要介紹如何使用原生javascript和Css3來實現一個在各大移動應用中經常出現的轉盤遊戲,由於改實現可以有不同方式,如果熟悉canvas的話也可以用canvas實現,本文採用js和css實現主要考慮到複雜度較小性能較好
  • JavaScript支持計時事件,如何實現超時調用和間隔調用?
    JavaScript開發-計時事件#JavaScript#在瀏覽器中,我們能夠實現動畫效果,例如時鐘,可以實現秒數一直在走。其實這個功能只需要使用JavaScript中的間隔調用就可以實現,另外,還有超時調用,在設定一段時間之後,就會執行某個函數或某段代碼。能夠在指定時間後執行代碼或重複執行代碼的函數,我們稱為計時事件,在JavaScript中,有2個計時事件,分別為:(1). 超時調用:使用setTimeout()方法表示。(2).
  • 如何在javascript中創建一個對象?
    javascript是一門基於對象而不是面向對象的語言,由於它的這個缺陷,在javascript中實現面向對象時十分彆扭,就比如創建對象,由於在ES6之前沒有class關鍵字,想要創建對象必須依賴以下幾種間接方式。
  • 如何使用JavaScript實現前端導入和導出excel文件
    1.2 實現一鍵導入excel文件並生成table表格導入excel文件的功能我們可以用javascript原生的方式實現解析, 比如可以用fileReader這些原生api,但考慮到開發效率和後期的維護, 筆者這裡採用antd的Upload組件和XLSX來實現上傳文件並解析的功能.
  • 詳解 JavaScript 閉包
    閉包是javascript語言的一大特點,主要應用閉包場合主要是為了:設計私有的方法和變量。一般函數執行完畢後,局部活動對象就被銷毀,內存中僅僅保存全局作用域。但閉包的情況不同!閉包會使變量始終保存在內存中,如果不當使用會增大內存消耗。javascript的垃圾回收原理(1)、在javascript中,如果一個對象不再被引用,那麼這個對象就會被GC回收;(2)、如果兩個對象互相引用,而不再被第3者所引用,那麼這兩個互相引用的對象也會被回收。
  • 與moment.js整合使用的javascript日期選擇期 - Pikaday
    與moment.js整合使用的javascript日期選擇期 - Pikaday 在線演示Pikaday是一款超輕量級的javascript日期選擇器
  • 如何正確地在XHTML文檔中使用JavaScript和CSS
    首頁 > 教程 > 關鍵詞 > CSS最新資訊 > 正文 如何正確地在XHTML文檔中使用JavaScript和CSS
  • 使用HTML5畫布實現的超棒javascript動畫儀錶板:gauge.js
    使用HTML5畫布實現的超棒javascript動畫儀錶板:gauge.js 在線演示今天我們分享來自guage.js的超棒動畫儀錶板實現,這個類庫使用
  • 利用CSS、JavaScript及Ajax實現圖片預加載的三大方法
    如果JavaScript無法在用戶的瀏覽器中正常運行,會發生什麼?很簡單,圖片不會被預加載,當頁面調用圖片時,正常顯示即可。方法二:僅使用JavaScript實現預加載上述方法有時確實很高效,但我們逐漸發現它在實際實現過程中會耗費太多時間。相反,我更喜歡使用純JavaScript來實現圖片的預加載。
  • JavaScript引擎實現JVM 支持運行Java
    Java虛擬機(Java Virtual Machine,簡稱JVM)是一個虛擬的機器,在計算機上通過軟體模擬來實現。Java虛擬機有自己虛擬的硬體,如處理器、堆棧、寄存器等,還具有相應的指令系統。  Java語言的一個非常重要的特點就是平臺的無關性。而使用JVM是實現這一特點的關鍵。一般的高級語言如果要在不同的平臺上運行,至少需要編譯成不同的目標代碼。
  • 每日一課 | JavaScript中的數組
    JavaScript中的數組具有length屬性,該屬性返回該數組的大小。我們僅初始化數組,並且未在數組中添加任何元素。如何檢索數組中的第一個和最後一個元素? 在javascript中,數組不是其他語言(例如c#,java)的定長數組類型,即使它們聲明為定長,它也會動態增長。
  • 七天學會javascript第一天javascript介紹
    javascript介紹javascript數據類型javascript運算符javascript對象javascriptDate對象javascript String對象JavaScript常用於實現一些前端效果。
  • 12 個 GitHub 上超火的 JavaScript 奇技淫巧項目,找到寫 JavaScript 的靈感!
    平時如何發現好的開源項目,可以看看這篇文章:GitHub 上能挖礦的神仙技巧 - 如何發現優秀開源項目以下為【前端GitHub】的第 12 期精華內容。JavaScript 中實現睡眠功能?它不是必備,但在未來學習(JavaScript)中,可以作為一篇指南。
  • 笛卡爾乘積的javascript版實現和應用
    本文轉載自【微信公眾號:趣談前端,ID:beautifulFront】經微信公眾號授權轉載,如需轉載與原文作者聯繫笛卡爾乘積是指在數學中,兩個集合X和Y的笛卡尓積,又稱直積,表示為X × Y,第一個對象是X的成員而第二個對象是Y的所有可能有序對的其中一個成員 。
  • javascript如何執行調試
    javascript中執行調試的方法有:使用console.log()方法,或者使用關鍵字「debugger」。有時代碼可能會包含某些錯誤。而作為腳本語言,JavaScript無法在瀏覽器中顯示任何錯誤消息。但是,這些錯誤卻會影響輸出。