Node.js如何優(yōu)雅的封裝一個(gè)實(shí)用函數(shù)的npm包的方法
為什么要封裝一個(gè)實(shí)用函數(shù)的 npm 包?
當(dāng)你連續(xù)寫了多個(gè) Node 應(yīng)用, 都想要 console 漂亮一點(diǎn), 你可能會(huì)像下面這樣封裝一個(gè)函數(shù)
import chalk from "chalk"; function noop(msg: string): string { return msg } function log(fn: Function): (msg: string) => void { return (msg: string): void => { console.log(fn(msg)); }; } export default { success: log(chalk.green), error: log(chalk.red), warn: log(chalk.yellow), info: log(chalk.cyan), log: log(noop) };
調(diào)用方式
import log from './log' log.success("hello green message!") log.error("hello red message!") log.warn("hello yellow message!") log.info("hello cyan message!") log.log("hello normal message!")
慢慢的發(fā)現(xiàn)每個(gè)項(xiàng)目都需要這么一個(gè) log 文件, 是的! 我們此時(shí)可以考慮把這些常用的函數(shù)封裝集合到一個(gè) npm 包里面了!
需要注意的事項(xiàng)有哪些
單元測(cè)試
考慮到代碼量的增加以及貢獻(xiàn)者的增加事先加入單元測(cè)試是很有必要的
- 測(cè)試框架 - Mocha 是一個(gè)功能豐富的Javascript測(cè)試框架,它能運(yùn)行在Node.js和瀏覽器中,支持BDD、TDD、QUnit、Exports式的測(cè)試
- 斷言庫 - assert 是 Node 自帶的
持續(xù)集成
Travis CI 提供的是持續(xù)集成服務(wù)(Continuous Integration,簡稱 CI)。它綁定 Github 上面的項(xiàng)目,只要有新的代碼,就會(huì)自動(dòng)抓取。然后,提供一個(gè)運(yùn)行環(huán)境,執(zhí)行測(cè)試,完成構(gòu)建,還能部署到服務(wù)器。
代碼層面
擴(kuò)展開放, 修改關(guān)閉的設(shè)計(jì)原則
當(dāng) src 目錄新增一個(gè)實(shí)用函數(shù)文件, index.ts 能夠自動(dòng)抓取然后掛載在 module.export 上
通過 getter 巧妙的實(shí)現(xiàn)懶加載導(dǎo)出的功能
Object.defineProperty(module.export, 'log', { configurable: false, enumerable: true, get: () => require('./log') });
項(xiàng)目地址
https://github.com/xiaoxiaojx/enhanced 歡迎 🌟 Star 🌟 和 Pr 和 在項(xiàng)目中使用~
以上就是本文的全部內(nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Node.js數(shù)據(jù)流Stream之Duplex流和Transform流用法
這篇文章介紹了Node.js數(shù)據(jù)流Stream之Duplex流和Transform流的用法,文中通過示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-07-07Mac OS X 系統(tǒng)下安裝和部署Egret引擎開發(fā)環(huán)境
之前的文章,我們已經(jīng)介紹了Windows 系統(tǒng)下安裝和部署Egret的開發(fā)環(huán)境,那么,這篇文檔中,我們主要介紹在Mac環(huán)境中安裝Egret以及部署2014-09-09Dapr+NestJs編寫Pub及Sub裝飾器實(shí)戰(zhàn)示例
這篇文章主要為大家介紹了Dapr+NestJs編寫Pub及Sub裝飾器的實(shí)戰(zhàn)示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-08-08Node.js 使用request模塊下載文件的實(shí)例
今天小編就為大家分享一篇Node.js 使用request模塊下載文件的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2018-09-09Nodejs對(duì)postgresql基本操作的封裝方法
今天小編就為大家分享一篇Nodejs對(duì)postgresql基本操作的封裝方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2019-02-02nodejs基于WS模塊實(shí)現(xiàn)WebSocket聊天功能的方法
這篇文章主要介紹了nodejs基于WS模塊實(shí)現(xiàn)WebSocket聊天功能的方法,結(jié)合實(shí)例形式分析了nodejs使用WS模塊進(jìn)行WebSocket通信實(shí)現(xiàn)聊天功能的具體操作技巧,需要的朋友可以參考下2018-01-01