首頁 web前端 js教程 如何能讓js模組變得更好用

如何能讓js模組變得更好用

Dec 04, 2017 am 09:28 AM
javascript 好用

很多人都使用過npm上分享過的JavaScript模組,但有時候使用的JavaScript模組感覺再好用點就好了,所以本文將站在模組使用者的角度總結一下,如何能讓模組變得更好用。

提供ES6 模組的入口

webpack 和rollup 都支援對ES6 模組做一些靜態最佳化(例如 Tree Shaking 和Scope Hoisting),它們都會優先讀取package.json 中的 module 欄位作為ES6 模組的入口,若沒有module 才會讀取main 欄位作為CommonJS 模組的入口。通常的做法是:使用 ES6 語法編寫原始碼,然後用模組打包工具結合語法轉換工具產生 CommonJS 模組和 ES6 模組,這樣就可以同時提供 main 和 module 欄位了。

提供TypeScript 的類型聲明文件

如果你的用戶使用了TypeScript 但你的模組沒有提供聲明文件,他們就必須在專案中加入一段程式碼避免TypeScript 的編譯錯誤;另外,這樣做並不只是對使用TypeScript 的用戶友好,因為大部分程式碼編輯器(Webstorm、VS Code 等)都能識別TypeScript 的類型聲明,它們可以據此提供更精準的程式碼提示並在使用者傳入錯誤的參數個數或類型時給予提示。

最好的做法是使用 TypeScript 寫你的模組,編譯時會自動產生型別宣告。除此之外,你也可以參考 文檔 手動維護一份聲明文件。你可以在你的模組根目錄下新增 index.d.ts 文件,或是在 package.json 中聲明 typings 欄位提供聲明文件的位置。

讓模組同時在Node.js 與瀏覽器中執行

你可以透過偵測是否有名為window 的全域變數(例如 !!typeof window )來判斷模組目前是運行在Node.js 還是瀏覽器中,然後使用不同的方式實作你的功能。

這種方法比較常見,但如果使用者使用了模組打包工具,這樣做會導致 Node.js 與瀏覽器的實作方式都會被包含在最終的輸出檔案中。針對這個問題,開源社群提出了在 package.json 中新增 browser 欄位的 提議 ,目前 webpack 和 rollup 都已經支援這個欄位了。

browser 欄位有兩種使用方式:

給browser 欄位提供一個檔案路徑作為在瀏覽器端使用時的模組入口,但需要注意的是,打包工具會優先使用browser 欄位指定的檔案路徑作為模組入口,所以你的module 欄位會被忽略,這會導致打包工具不會最佳化你的程式碼。詳細資訊請參考 這個問題 。

如果你只想替換其中一些文件,你可以聲明一個物件。

舉個例子,假設你的模組裡有兩個檔案: http.js 和 xhr.js ,第一個檔案使用Node.js 中的http 模組發起請求,另一個使用瀏覽器中的XMLHTTPRequest 實作了同樣的功能。為了使用適當的文件,你的模組程式碼中應該永遠 require('./path/to/http.js') ,並在package.json 中宣告:

{
 "browser": {
   "./path/to/http.js": "./path/to/xhr.js"
 }
}

這樣一來,當你的模組在打包工具中使用時,打包工具只會將xhr.js 的程式碼包含在最終的輸出檔中。

使用各種服務來武裝你的專案

大部分JavaScript 專案都是開源的,而開源社群也提供了許多針對開源專案的免費服務,它們可以給你的專案更有力的幫助,這裡列舉幾個比較常用的。

一個專案最常使用的服務就是持續整合了。持續整合服務能將測試、程式碼風格偵測、打包等任務放在伺服器上,並在你提交程式碼時自動執行,常用的有 Travis CI 、 CircleCI 和 AppVeyor 。 Travis CI 對開源專案免費,提供 Linux 與 OS X 運行環境;CircleCI 對開源與私有專案都免費,但每個月有 1500 分鐘的運行時間限制;AppVeyor 提供 Windows 運行環境,同樣對開源專案免費。

執行測試之後,你也可以將測試覆蓋率上傳到 Coveralls 。這個服務能讓你在線上瀏覽程式碼的測試覆蓋情況。

如果你想讓你的模組在各個版本的各種瀏覽器、平台下得到充分的測試,你還可以使用 Sauce Labs 和 BrowserStack ,它們都是對開源專案免費的,但需要發郵件申請。

最後, Shields IO 提供了各種圖標,這些圖標能為你的專案提供很多額外信息,包括但不限於npm 版本號、下載量、測試通過狀態、測試覆蓋率、檔案大小、依賴是否過期等。

雖然以上的建議大多屬於錦上添花,但這會讓你的模組對使用者更友好,希望以上的建議能在你開發自己的模組時給你一點幫助。

以上內容就是關於如何能讓js模組變得更好用的方法,希望能幫助大家。

相關推薦:

詳解JavaScript模組化程式設計

#javascript模組化程式設計詳解

詳解JavaScript模組化開發

#

以上是如何能讓js模組變得更好用的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

如何使用WebSocket和JavaScript實現線上語音辨識系統 如何使用WebSocket和JavaScript實現線上語音辨識系統 Dec 17, 2023 pm 02:54 PM

如何使用WebSocket和JavaScript實現線上語音辨識系統引言:隨著科技的不斷發展,語音辨識技術已成為了人工智慧領域的重要組成部分。而基於WebSocket和JavaScript實現的線上語音辨識系統,具備了低延遲、即時性和跨平台的特點,成為了廣泛應用的解決方案。本文將介紹如何使用WebSocket和JavaScript來實現線上語音辨識系

WebSocket與JavaScript:實現即時監控系統的關鍵技術 WebSocket與JavaScript:實現即時監控系統的關鍵技術 Dec 17, 2023 pm 05:30 PM

WebSocket與JavaScript:實現即時監控系統的關鍵技術引言:隨著互聯網技術的快速發展,即時監控系統在各個領域中得到了廣泛的應用。而實現即時監控的關鍵技術之一就是WebSocket與JavaScript的結合使用。本文將介紹WebSocket與JavaScript在即時監控系統中的應用,並給出程式碼範例,詳細解釋其實作原理。一、WebSocket技

如何利用JavaScript和WebSocket實現即時線上點餐系統 如何利用JavaScript和WebSocket實現即時線上點餐系統 Dec 17, 2023 pm 12:09 PM

如何利用JavaScript和WebSocket實現即時線上點餐系統介紹:隨著網路的普及和技術的進步,越來越多的餐廳開始提供線上點餐服務。為了實現即時線上點餐系統,我們可以利用JavaScript和WebSocket技術。 WebSocket是一種基於TCP協定的全雙工通訊協議,可實現客戶端與伺服器的即時雙向通訊。在即時線上點餐系統中,當使用者選擇菜餚並下訂單

Java模擬器推薦:這五款好用又實用! Java模擬器推薦:這五款好用又實用! Feb 22, 2024 pm 08:42 PM

Java模擬器是一種能夠在電腦或裝置上運行Java應用程式的軟體。它可以模擬Java虛擬機器並執行Java字節碼,使用戶能夠在不同平台上執行Java程式。 Java模擬器在軟體開發、學習和測試等方面有著廣泛的應用。本文將介紹五款好用且實用的Java模擬器,它們能夠滿足不同使用者的需求,幫助使用者更有效率地開發和執行Java程式。第一款模擬器是Eclipse。 Ecl

如何使用WebSocket和JavaScript實現線上預約系統 如何使用WebSocket和JavaScript實現線上預約系統 Dec 17, 2023 am 09:39 AM

如何使用WebSocket和JavaScript實現線上預約系統在當今數位化的時代,越來越多的業務和服務都需要提供線上預約功能。而實現一個高效、即時的線上預約系統是至關重要的。本文將介紹如何使用WebSocket和JavaScript來實作一個線上預約系統,並提供具體的程式碼範例。一、什麼是WebSocketWebSocket是一種在單一TCP連線上進行全雙工

usdt交易平台哪些好用?十大專業usdt交易平台推薦 usdt交易平台哪些好用?十大專業usdt交易平台推薦 Feb 10, 2024 pm 03:10 PM

usdt交易平台哪些好用?隨著加密貨幣的普及和市值的不斷增長,越來越多的人開始關注和參與數位貨幣交易。作為全球最大的穩定幣之一,USDT(泰達幣)受到了廣泛關注和使用。在選擇usdt交易平台時,以下是一些值得推薦的專業平台。 1.幣安幣安是全球最大的加密貨幣交易平台之一,同時也是最早支援usdt交易的交易所之一。幣安的技術團隊和安全措施備受讚譽,為用戶提供了全方位的交易功能和服務。 2.火幣火幣是一家領先的加密貨幣交易平台,提供豐富的交易對和多種工具,以其友善的介面和良好的用戶體驗而聞名。 3.OKE

JavaScript與WebSocket:打造高效率的即時天氣預報系統 JavaScript與WebSocket:打造高效率的即時天氣預報系統 Dec 17, 2023 pm 05:13 PM

JavaScript和WebSocket:打造高效的即時天氣預報系統引言:如今,天氣預報的準確性對於日常生活以及決策制定具有重要意義。隨著技術的發展,我們可以透過即時獲取天氣數據來提供更準確可靠的天氣預報。在本文中,我們將學習如何使用JavaScript和WebSocket技術,來建立一個高效的即時天氣預報系統。本文將透過具體的程式碼範例來展示實現的過程。 We

4個極好用的AI寫作軟體,來看看哪個對您更好! 4個極好用的AI寫作軟體,來看看哪個對您更好! Jan 16, 2024 pm 03:57 PM

隨著人工智慧技術的不斷發展,AI智能寫作軟體成為現代寫作的新選擇。這些軟體利用機器學習和自然語言處理等技術,能夠幫助使用者產生高品質的文章、部落格、新聞稿等內容。然而,在眾多的AI寫作軟體中,有哪些國內好用的呢?以下將為大家推薦4款優秀的AI寫作軟體內容重寫為:推薦一:人工智慧的製作之愛愛製作採用了先進的自然語言處理技術和深度學習演算法,能夠理解用戶的需求並產生高品質的文章。它可以自動產生各種類型的文章,例如行銷文案、影片腳本、各種文書報告等等,幫助用戶快速完成寫作任務。愛製作提供了166種寫作模板和

See all articles