日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術(shù)文章
文章詳情頁

開發(fā)更好用的 JavaScript 模塊

瀏覽:27日期:2023-11-11 16:17:39

開發(fā)更好用的 JavaScript 模塊

不少人都曾經(jīng)在 npm 上發(fā)布過自己開發(fā)的 JavaScript 模塊,而在使用一些模塊的過程中,我經(jīng)常產(chǎn)生“這個(gè)模塊很有用,但如果能 xxx 就更好了”的想法。所以,本文將站在模塊使用者的角度總結(jié)一下,如何能讓模塊變得更好用。

提供 ES6 模塊的入口

webpack 和 rollup 都支持對(duì) ES6 模塊做一些靜態(tài)優(yōu)化(例如 Tree Shaking 和Scope Hoisting),它們都會(huì)優(yōu)先讀取 package.json 中的 module 字段作為 ES6 模塊的入口,若沒有 module 才會(huì)讀取 main 字段作為 CommonJS 模塊的入口。通常的做法是:使用 ES6 語法編寫源碼,然后用模塊打包工具結(jié)合語法轉(zhuǎn)換工具生成 CommonJS 模塊和 ES6 模塊,這樣就可以同時(shí)提供 main 和 module 字段了。

提供 TypeScript 的類型聲明文件

如果你的用戶使用了 TypeScript 但你的模塊沒有提供聲明文件,他們就不得不在項(xiàng)目中添加一段代碼避免 TypeScript 的編譯錯(cuò)誤;另外,這樣做并不只是對(duì)使用 TypeScript 的用戶友好,因?yàn)榇蟛糠执a編輯器(Webstorm、VS Code 等)都能識(shí)別 TypeScript 的類型聲明,它們可以據(jù)此提供更精準(zhǔn)的代碼提示并在用戶傳入錯(cuò)誤的參數(shù)個(gè)數(shù)或類型時(shí)給出提示。

最好的做法是使用 TypeScript 編寫你的模塊,編譯時(shí)會(huì)自動(dòng)生成類型聲明。除此之外,你也可以參照 文檔 手動(dòng)維護(hù)一份聲明文件。你可以在你的模塊根目錄下添加 index.d.ts 文件,或者在 package.json 中聲明 typings 字段提供聲明文件的位置。

讓模塊同時(shí)在 Node.js 與瀏覽器中運(yùn)行

你可以通過檢測(cè)是否有名為 window 的全局變量(例如 !!typeof window )來判斷模塊當(dāng)前是運(yùn)行在 Node.js 還是瀏覽器中,然后使用不同的方式實(shí)現(xiàn)你的功能。

這種方法比較常見,但如果用戶使用了模塊打包工具,這樣做會(huì)導(dǎo)致 Node.js 與瀏覽器的實(shí)現(xiàn)方式都會(huì)被包含在最終的輸出文件中。針對(duì)這個(gè)問題,開源社區(qū)提出了在 package.json 中添加 browser 字段的 提議 ,目前 webpack 和 rollup 都已經(jīng)支持這個(gè)字段了。

browser 字段有兩種使用方式:

給 browser 字段提供一個(gè)文件路徑作為在瀏覽器端使用時(shí)的模塊入口,但需要注意的是,打包工具會(huì)優(yōu)先使用 browser 字段指定的文件路徑作為模塊入口,所以你的 module 字段會(huì)被忽略,這會(huì)導(dǎo)致打包工具不會(huì)優(yōu)化你的代碼。詳細(xì)信息請(qǐng)參考 這個(gè)問題 。 如果你只想替換其中一些文件,你可以聲明一個(gè)對(duì)象。

舉個(gè)例子,假設(shè)你的模塊里有兩個(gè)文件: http.js 和 xhr.js ,第一個(gè)文件使用 Node.js 中的 http 模塊發(fā)起請(qǐng)求,另一個(gè)使用瀏覽器中的 XMLHTTPRequest 實(shí)現(xiàn)了同樣的功能。為了使用適當(dāng)?shù)奈募愕哪K代碼中應(yīng)該始終 require(’./path/to/http.js’) ,并在 package.json 中聲明:

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

這樣一來,當(dāng)你的模塊在打包工具中使用時(shí),打包工具只會(huì)將 xhr.js 的代碼包含在最終的輸出文件中。

使用各種服務(wù)武裝你的項(xiàng)目

大部分 JavaScript 項(xiàng)目都是開源的,而開源社區(qū)也提供了很多針對(duì)開源項(xiàng)目的免費(fèi)服務(wù),它們可以給你的項(xiàng)目提供更有力的幫助,這里列舉幾個(gè)比較常用的。

一個(gè)項(xiàng)目最常使用的服務(wù)就是持續(xù)集成了。持續(xù)集成服務(wù)能將測(cè)試、代碼風(fēng)格檢測(cè)、打包等任務(wù)放在服務(wù)器上,并在你提交代碼時(shí)自動(dòng)運(yùn)行,常用的有 Travis CI 、 CircleCI 和 AppVeyor 。Travis CI 對(duì)開源項(xiàng)目免費(fèi),提供 Linux 與 OS X 運(yùn)行環(huán)境;CircleCI 對(duì)開源與私有項(xiàng)目都免費(fèi),但每個(gè)月有 1500 分鐘的運(yùn)行時(shí)間限制;AppVeyor 提供 Windows 運(yùn)行環(huán)境,同樣對(duì)開源項(xiàng)目免費(fèi)。

運(yùn)行完測(cè)試之后,你還可以將測(cè)試覆蓋率上傳到 Coveralls 。這個(gè)服務(wù)能讓你在線瀏覽代碼的測(cè)試覆蓋情況。

如果你想讓你的模塊在各個(gè)版本的各種瀏覽器、平臺(tái)下得到充分的測(cè)試,你還可以使用 Sauce Labs 和 BrowserStack ,它們都是對(duì)開源項(xiàng)目免費(fèi)的,但需要發(fā)郵件申請(qǐng)。

最后, Shields IO 提供了各種圖標(biāo),這些圖標(biāo)能為你的項(xiàng)目提供很多額外信息,包括但不限于 npm 版本號(hào)、下載量、測(cè)試通過狀態(tài)、測(cè)試覆蓋率、文件大小、依賴是否過期等。

雖然以上的建議大多屬于錦上添花,但這會(huì)讓你的模塊對(duì)用戶更加友好,希望以上的建議能在你開發(fā)自己的模塊時(shí)給你一點(diǎn)幫助。

來自:https://zhuanlan.zhihu.com/p/31499310

標(biāo)簽: JavaScript
相關(guān)文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
69堂免费精品视频在线播放| 国产韩日影视精品| 亚洲资源在线| 91精品国产自产精品男人的天堂| 青青国产91久久久久久| 精品国产日韩欧美精品国产欧美日韩一区二区三区 | 国产精品任我爽爆在线播放| 国产精品久久亚洲不卡| 女生影院久久| 亚洲免费影视| 欧美视频一区| 91亚洲国产高清| 不卡在线一区| 青青草91视频| 亚洲伦乱视频| 中文无码日韩欧| 欧美国产中文高清| 中文字幕一区久| 一区在线观看| 国产精品欧美在线观看| 成人羞羞视频播放网站| 亚洲制服欧美另类| 精品国产精品国产偷麻豆| 婷婷综合社区| 国产欧美日韩影院| 精品在线99| 久久国产麻豆精品| 久久久精品久久久久久96 | 麻豆国产欧美一区二区三区| 999国产精品视频| 国产麻豆综合| 九九99久久精品在免费线bt| 日韩午夜av在线| 久久不见久久见中文字幕免费| 欧美肉体xxxx裸体137大胆| 欧美日韩午夜| 亚洲欧美视频| 日本蜜桃在线观看视频| 婷婷亚洲成人| 日韩欧美自拍| 91久久精品无嫩草影院| 蜜桃一区二区三区| 国产三级精品三级在线观看国产| 香蕉精品久久| 久久香蕉网站| 免费欧美在线视频| 久久久久久美女精品| 黑丝一区二区| www.51av欧美视频| 欧美日本久久| 丝袜脚交一区二区| 亚洲综合在线电影| 老司机精品视频网| 亚洲精品伊人| 欧美日韩国产一区二区三区不卡| 国产精品久一| 日韩国产一区二| 国产精品毛片一区二区三区| caoporn视频在线| 国产毛片一区二区三区| 狠狠色综合网| 久久久久久久久丰满| 精品国产精品国产偷麻豆| 日韩精品福利一区二区三区| 国精品一区二区| 毛片在线网站| 欧美aa在线视频| 日韩高清一区| 蜜臀av一区二区三区| 美女网站一区| 久久国产影院| 日韩免费福利视频| 高清日韩欧美| 精品三区视频| 91精品观看| 日韩精品电影| 97精品国产福利一区二区三区| 国产精品久久久久77777丨| 日韩激情精品| 婷婷精品在线| 自拍自偷一区二区三区| 国产精品社区| 91精品二区| 女同性一区二区三区人了人一| 91精品蜜臀一区二区三区在线| 中文字幕在线官网| 日韩在线第七页| 99精品网站| 麻豆精品99| 国产一区二区三区亚洲综合| 国产精品草草| 国产在线视频欧美一区| 国产91在线精品| yellow在线观看网址| 天堂а√在线最新版中文在线| 精品美女在线视频| 成人午夜网址| 亚洲欧洲美洲av| 亚洲精品.com| 狠狠色狠狠色综合日日tαg| 免播放器亚洲| 日韩av一级片| 精品视频网站| 久久久影院免费| 老色鬼久久亚洲一区二区| 国产精品日本| 日韩av网站免费在线| 国产乱码精品一区二区三区亚洲人 | 免费成人网www| 国产女优一区| 日韩精品免费观看视频| 88久久精品| 精品国产不卡一区二区| 日韩在线第七页| 亚洲专区在线| 日韩免费精品| 精品国产乱码久久久| 99久久夜色精品国产亚洲狼| 日韩中文字幕麻豆| 久久国产人妖系列| 日韩国产网站| 日av在线不卡| 欧美激情日韩| 香蕉久久99| 日本免费在线视频不卡一不卡二| 久久中文精品| 悠悠资源网久久精品| 97精品资源在线观看| 蜜臀国产一区| 综合国产在线| 精品视频99| 亚洲美洲欧洲综合国产一区| 日韩精品亚洲专区在线观看| 成人在线视频区| 乱人伦精品视频在线观看| 欧美aa在线视频| 9色国产精品| 国产精品hd| 欧美不卡高清| 欧美精品国产| 激情综合网站| 久久精品99久久久| 国户精品久久久久久久久久久不卡| 日韩国产精品久久久久久亚洲| 国产精品99视频| 在线免费观看亚洲| 国产精品精品| 日韩高清在线一区| 亚洲一级少妇| 国产日韩欧美一区二区三区在线观看| 色爱综合av| 国产乱码精品一区二区亚洲| 欧美另类专区| 国产h片在线观看| 日本va欧美va精品发布| 亚洲国产专区| 精品福利久久久| 蜜芽一区二区三区| 日本在线精品| 麻豆传媒一区二区三区| 免费在线观看日韩欧美| 极品av在线| 国产精品免费99久久久| 一区二区三区四区日韩| 91精品久久久久久久久久不卡| 国产精品传媒麻豆hd| 免费不卡在线观看| 久久天堂精品| 久久亚洲国产精品尤物| 婷婷久久免费视频| 五月天综合网站| 黄色在线观看www| 国产精品任我爽爆在线播放| 日本欧洲一区二区| 欧美福利在线| 正在播放日韩精品| 日韩成人在线看| 久久av在线| 久久影院一区| 亚洲精品福利电影| 久久久亚洲欧洲日产| 日韩不卡一区二区| 蜜臀国产一区二区三区在线播放| 欧美日韩国产v| 成人在线免费观看91| 欧美国产先锋| 国产麻豆精品| 欧美精品三级在线| 日本亚洲最大的色成网站www | 尤物网精品视频| 久久婷婷av| 欧美sm一区| 桃色av一区二区| 日韩欧美不卡| 亚洲天堂一区二区| 人人香蕉久久| 久久精品影视| 久久亚洲精品中文字幕蜜潮电影| 捆绑调教日本一区二区三区| 精品三级av|