Node.js如何優(yōu)雅的封裝一個實用函數(shù)的npm包的方法
為什么要封裝一個實用函數(shù)的 npm 包?
當你連續(xù)寫了多個 Node 應用, 都想要 console 漂亮一點, 你可能會像下面這樣封裝一個函數(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)
};
調用方式
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)每個項目都需要這么一個 log 文件, 是的! 我們此時可以考慮把這些常用的函數(shù)封裝集合到一個 npm 包里面了!
需要注意的事項有哪些
單元測試
考慮到代碼量的增加以及貢獻者的增加事先加入單元測試是很有必要的
- 測試框架 - Mocha 是一個功能豐富的Javascript測試框架,它能運行在Node.js和瀏覽器中,支持BDD、TDD、QUnit、Exports式的測試
- 斷言庫 - assert 是 Node 自帶的
持續(xù)集成

Travis CI 提供的是持續(xù)集成服務(Continuous Integration,簡稱 CI)。它綁定 Github 上面的項目,只要有新的代碼,就會自動抓取。然后,提供一個運行環(huán)境,執(zhí)行測試,完成構建,還能部署到服務器。

代碼層面
擴展開放, 修改關閉的設計原則
當 src 目錄新增一個實用函數(shù)文件, index.ts 能夠自動抓取然后掛載在 module.export 上
通過 getter 巧妙的實現(xiàn)懶加載導出的功能
Object.defineProperty(module.export, 'log', {
configurable: false,
enumerable: true,
get: () => require('./log')
});
項目地址
https://github.com/xiaoxiaojx/enhanced 歡迎 🌟 Star 🌟 和 Pr 和 在項目中使用~
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
相關文章
npm出現(xiàn)Cannot?find?module?'XXX\node_modules\npm\bin\np
最近在啟動項目的時候會報這個錯就是npm丟失,所以下面這篇文章主要給大家介紹了關于npm出現(xiàn)Cannot?find?module?'XXX\node_modules\npm\bin\npm-cli.js'錯誤的解決方法,需要的朋友可以參考下2022-08-08
解決koa2 ctx.render is not a function報錯問題
這篇文章主要介紹了解決koa2 ctx.render is not a function報錯問題,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-08-08
使用nodejs?spider爬取圖片及數(shù)據(jù)實現(xiàn)
這篇文章主要為大家介紹了使用nodejs?spider爬取圖片及數(shù)據(jù)實現(xiàn)詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2023-07-07

