Node.js如何优雅的封装一个实用函数的npm包的方法

 更新时间:2019年04月29日 10:12:08   作者:萧萧fe  
这篇文章主要介绍了Node.js如何优雅的封装一个实用函数的npm包的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

为什么要封装一个实用函数的 npm 包?

当你连续写了多个 Node 应用, 都想要 console 漂亮一点, 你可能会像下面这样封装一个函数

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!")

慢慢的发现每个项目都需要这么一个 log 文件, 是的! 我们此时可以考虑把这些常用的函数封装集合到一个 npm 包里面了!

需要注意的事项有哪些

单元测试

考虑到代码量的增加以及贡献者的增加事先加入单元测试是很有必要的

  • 测试框架 - Mocha 是一个功能丰富的Javascript测试框架,它能运行在Node.js和浏览器中,支持BDD、TDD、QUnit、Exports式的测试
  • 断言库 - assert 是 Node 自带的

持续集成

Travis CI 提供的是持续集成服务(Continuous Integration,简称 CI)。它绑定 Github 上面的项目,只要有新的代码,就会自动抓取。然后,提供一个运行环境,执行测试,完成构建,还能部署到服务器。

代码层面

扩展开放, 修改关闭的设计原则

当 src 目录新增一个实用函数文件, index.ts 能够自动抓取然后挂载在 module.export 上

通过 getter 巧妙的实现懒加载导出的功能

Object.defineProperty(module.export, 'log', {
  configurable: false,
  enumerable: true,
  get: () => require('./log')
});

项目地址

https://github.com/xiaoxiaojx/enhanced 欢迎 🌟 Star 🌟 和 Pr  和 在项目中使用~

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • npm出现Cannot find module 'XXX\node_modules\npm\bin\npm-cli.js'错误的解决方法

    npm出现Cannot find module 'XXX\node_modules\npm\bin\np

    最近在启动项目的时候会报这个错就是npm丢失,所以下面这篇文章主要给大家介绍了关于npm出现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动态创建二维码的方法

    nodejs动态创建二维码的方法

    这篇文章主要为大家详细介绍了nodejs动态创建二维码的方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-08-08
  • Node.js进行文件读取与复制的系统总结

    Node.js进行文件读取与复制的系统总结

    这篇文章主要为大家详细介绍了Node.js中文件读取与复制相关内容的系统总结,包括 同步读取,异步读取,复制操作等,有需要的小伙伴可以跟随小编一起了解下
    2025-04-04
  • Node.js 使用jade模板引擎的示例

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

    本篇文章主要介绍了Node.js 使用jade模板引擎的示例,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-05-05
  • 浅谈手写node可读流之流动模式

    浅谈手写node可读流之流动模式

    这篇文章主要介绍了浅谈手写node可读流之流动模式,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    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报错问题,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-08-08
  • 使用nodejs spider爬取图片及数据实现

    使用nodejs spider爬取图片及数据实现

    这篇文章主要为大家介绍了使用nodejs spider爬取图片及数据实现详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-07-07

最新评论