為什么要封裝一個(gè)實(shí)用函數(shù)的 npm 包?
成都創(chuàng)新互聯(lián)公司專業(yè)為企業(yè)提供丹鳳網(wǎng)站建設(shè)、丹鳳做網(wǎng)站、丹鳳網(wǎng)站設(shè)計(jì)、丹鳳網(wǎng)站制作等企業(yè)網(wǎng)站建設(shè)、網(wǎng)頁設(shè)計(jì)與制作、丹鳳企業(yè)網(wǎng)站模板建站服務(wù),十余年丹鳳做網(wǎng)站經(jīng)驗(yàn),不只是建網(wǎng)站,更提供有價(jià)值的思路和整體網(wǎng)絡(luò)服務(wù)。
當(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)有哪些
單元測試
考慮到代碼量的增加以及貢獻(xiàn)者的增加事先加入單元測試是很有必要的
持續(xù)集成
Travis CI 提供的是持續(xù)集成服務(wù)(Continuous Integration,簡稱 CI)。它綁定 Github 上面的項(xiàng)目,只要有新的代碼,就會(huì)自動(dòng)抓取。然后,提供一個(gè)運(yùn)行環(huán)境,執(zhí)行測試,完成構(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í)有所幫助,也希望大家多多支持創(chuàng)新互聯(lián)。