最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Node.js如何優(yōu)雅的封裝一個實用函數(shù)的npm包的方法

 更新時間:2019年04月29日 10:12:08   作者:蕭蕭fe  
這篇文章主要介紹了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\npm-cli.js'錯誤的解決方法

    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
  • mac中利用NVM管理不同node版本的方法詳解

    mac中利用NVM管理不同node版本的方法詳解

    這篇文章主要給大家介紹了關于在mac中利用NVM管理不同node版本的相關資料,文中詳細介紹了nvm的安裝和卸載、nvm安裝node的方法,以及nvm如何管理node版本,需要的朋友可以參考借鑒,下面隨著小編來一起學習學習吧。
    2017-11-11
  • nodejs動態(tài)創(chuàng)建二維碼的方法

    nodejs動態(tài)創(chuàng)建二維碼的方法

    這篇文章主要為大家詳細介紹了nodejs動態(tài)創(chuàng)建二維碼的方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-08-08
  • Node.js進行文件讀取與復制的系統(tǒng)總結

    Node.js進行文件讀取與復制的系統(tǒng)總結

    這篇文章主要為大家詳細介紹了Node.js中文件讀取與復制相關內容的系統(tǒng)總結,包括 同步讀取,異步讀取,復制操作等,有需要的小伙伴可以跟隨小編一起了解下
    2025-04-04
  • Node.js 使用jade模板引擎的示例

    Node.js 使用jade模板引擎的示例

    本篇文章主要介紹了Node.js 使用jade模板引擎的示例,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-05-05
  • 淺談手寫node可讀流之流動模式

    淺談手寫node可讀流之流動模式

    這篇文章主要介紹了淺談手寫node可讀流之流動模式,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-06-06
  • Node.js模塊加載詳解

    Node.js模塊加載詳解

    這篇文章主要介紹了Node.js模塊加載詳解,本文講解了加載核心模塊、加載文件模塊、加載目錄模塊、從文件加載模塊等內容,需要的朋友可以參考下
    2014-08-08
  • Node.js中SerialPort(串口)模塊使用

    Node.js中SerialPort(串口)模塊使用

    本文主要介紹了Node.js中SerialPort(串口)模塊使用,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-11-11
  • 解決koa2 ctx.render is not a function報錯問題

    解決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)

    這篇文章主要為大家介紹了使用nodejs?spider爬取圖片及數(shù)據(jù)實現(xiàn)詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-07-07

最新評論

昭觉县| 鄂伦春自治旗| 乌拉特后旗| 遂平县| 嘉荫县| 克东县| 仁怀市| 日照市| 郸城县| 迁安市| 阜阳市| 兴隆县| 望江县| 神木县| 淮滨县| 辉县市| 赞皇县| 寻乌县| 泽普县| 耿马| 阿坝| 青海省| 二手房| 镇巴县| 柳林县| 东阳市| 长兴县| 怀远县| 扶绥县| 榕江县| 都江堰市| 息烽县| 新民市| 延安市| 丹巴县| 陆川县| 濮阳县| 玛纳斯县| 揭阳市| 明水县| 大港区|