IT学习网是免费的终身在线学习平台,现在主要提供IT(互联网)方面的教程,博客等方面的内容
主页 > 前端 > > 正文

趣味编程挑选 npm 模块很费事?掌握这些技巧就能事半功倍!

来源:IT学习网整理 发布时间:2020-02-14 18:31 标签:这些掌握模块技巧挑选就能费事事半功倍
浏览:
熟悉 Node 或前端 JavaScript 工作的同学都知道,社区中的可用模块有数十万之多趣味编程。开发人员经常会提问或抱怨,比如说:在谈到这些问题时,你通常会得到十个不同的答案趣味编程。每个人都会向你推荐他最宝贝的模块 "/>挑选 npm 模块很费事?掌握这些技巧就能事半功倍!

前端开发前端导航工具/手册更多栏目

折扣返利

网站投稿

书籍/周边

站内搜索

fly63前端网

提交

我要投稿

挑选 npm 模块很费事?掌握这些技巧就能事半功倍!

时间: 2019-08-09阅读: 258标签: npm

熟悉 Node 或前端 JavaScript 工作的同学都知道,社区中的可用模块有数十万之多。开发人员经常会提问或抱怨,比如说:

“开发易,选模块难…”

“X 模块和 Y 模块区别在哪里,哪一个更好?”

“npm 很好用,可是那些模块指不定半年一年多就没用了,具体看它们的支持情况。”

在谈到这些问题时,你通常会得到十个不同的答案。每个人都会向你推荐他最宝贝的模块,然后大家就会为哪个模块是最好的这个话题吵得不可开交。

选择 npm 模块时容易遇到“分析瘫痪”这种情况。可选项实在太多了,还总有一大堆新模块被吹成是“你,值得拥有”,想要为自己的项目选出合适的模块实在不是件容易的事情。而且许多模块做的事情都是差不多(或者完全一样)的,更给人添乱。

其实你用不着浪费时间在谷歌或 npmjs.org 上乱搜一通,影响你的应用构建工作;你要做的就是知道在什么时候选择哪些模块。


精选列表

为了帮你解决这个问题,本文针对各种最常见的问题类型制作了一份模块列表(例如 Web 框架、模板、身份验证等),并告诉你这些模块应该何时使用。

有一些注意事项:有些模块你可能已经很熟悉了,但有时你会遇到完全陌生的技术栈(比如说身份验证或 Web Socket 之类),这时候你需要知道用哪些模块可以完成工作。你可能觉得某款模块更出色。也可能你的用例 / 需求不在下面的列表里。我并没有在每个分类下塞一堆选项,而是尽量精简,避免陷入分析瘫痪的陷阱。如果你的场景比较特殊,那么就得自己做些调查来做补充了;这个列表的目的是让你更快地投身工作。

这些模块是基于下面的原则挑选出来的:

它们完成工作的能力如何。

社区规模(对支持 / 故障排除很重要)。

积极维护

如果你还是觉得信息不足,难下决定,我建议使用 slant.co 和 nodejs.libhunt.com 来做比较。npmtrends.com 这个网站可以对比不同包的下载量 / 问题数 /GitHub 星数,也很有用(感谢 Bill 推荐)。

注意:为了控制范围,记住这些模块都是服务端的。很多模块既能在客户端也能在服务端使用,但总的来说是“服务端优先”原则。


HTTP 请求

Request:

需要发起基于回调的 HTTP 请求时使用,例如从一个 REST 服务到另一个 REST 服务。

Axios:

需要发起基于 Promise 的 HTTP 请求时使用。

注意:可以使用 request-promise,但 axios 的依赖项更少,而且是基于原生 Promise 的。


Web 框架

Express:

你的 API、网站或单页应用需要一个轻量级 Web 框架时用它。

你不介意使用开箱即用的回调来实现异步。

你希望有一个搭配框架使用的丰富的模块生态系统。

你希望框架有一个大型社区来提供支持并排除故障。

Koa:

你想要比 Express 还轻量的框架时就选它。

Koa 更像是一个中间件层,不提供开箱即用的模板或路由,更适合 API 开发。

你想要开箱即用的 async/await 支持。

Hapi:

你想要一个比 Express 或 Koa 有更多“部件”的框架时选它,但它集成的东西没 Sails 那么多。

Sails:

你想要像 Rails 之类的东西时就用它,它集成了一大堆东西(但其中有很多可能是你用不着的)。


验证

Ajv:

在需要验证 JSON 时使用(例如来自一个 Web 请求的 JSON)。

你想与应用程序的非 JS 部分共享这些 schema(它是 JSON,所以你可以这样做)。

Joi:

你需要验证输入并且喜欢它下面这种样式时就用它

const schema = joi.object().keys({ id: joi.string().guid().required(), username: joi.string().alphanum().min(8).required() });

它不是在 JSON 中定义 schema

你正在使用 Hapi(Joi 自带它,开箱即用)


身份验证

Passport:

需要为你的网站或 API 使用身份验证中间件时用它。

你希望能选择多种身份验证类型(Oauth,Facebook 等)。

你需要管理会话。


异步

Async(库):

你需要使用只支持回调,不支持 Promise 的旧版 Node 时选它

ES6 原生 Promise(原生 JS,不是 npm):

使用 Node 0.12 以上版本时用它。

还要考虑你的团队是否熟悉 Promise。现在大多数开发者应该都很熟悉了。

async/await(原生 JS,不是 npm):

你好容易逃离了回调地狱,结果又掉进 Promise 地狱的时候用它。

你有很多来自 Promise 的.then 和.catch


数据库:

热门文章

  • C++构造函数初始化列表
    C++构造函数初始化列表

    C++构造函数初始化列表

    构造函数的一项重要功能是对成员变量进行初始化,为了达到这个目的,可以在构造函数的函数体中对成员变量一一赋值,还可以采用 初始化列表 。 C +...

  • 抢占超声医学影像产业学习it的网站C位
    抢占超声医学影像产业学习it的网站C位

    抢占超声医学影像产业学习it的网站C位

    随着全球AI人工智能技术的快速发展与应用 全球医疗领域的智能化 科技化成为大势所趋 据相关资料数据统计 2016年全...

  • “编程从娃娃抓起”:逃得过“奥数” 又
    “编程从娃娃抓起”:逃得过“奥数” 又

    “编程从娃娃抓起”:逃得过“奥数” 又

    您所在的位置: 杭州网 > 新闻中心 > 国内新闻 “编程从娃娃抓起”:逃得过“奥数” 又要被编程套住 2019-03-22 09:18:07;杭州网 新华网 少儿编程火了,打开手机...

  • coreldraw教程网Photoshop iPad完整版本正式上
    coreldraw教程网Photoshop iPad完整版本正式上

    coreldraw教程网Photoshop iPad完整版本正式上

    Photoshop iPad完整版本正式上架苹果App Store...

  • 51自学网ps视频教程走在时尚前端的猎豹
    51自学网ps视频教程走在时尚前端的猎豹

    51自学网ps视频教程走在时尚前端的猎豹

    当消费者发现汽车一味的“大”并不能完全解决出行需求,反而影响了在城市中穿梭的便捷性之后,更加贴合年轻人...

后端

更多 >
后端趣味编程unzip命令 传zip到linux并解压
后端计算机程序设计设置FTP传输软件xftp默认打
后端计算机编程语言有哪些Java实现Linux grep命
后端趣味编程linux安装mysql5.7
后端儿童编程学习linux入门系列8--shell编程入门

工具资源

更多 >