大家好,我是若川。最近组织了源码共读活动,感兴趣的可以点此加我微信ruochuan12 进群参与,每周大家一起学习200行左右的源码,共同进步。已进行4个月了,很多小伙伴表示收获颇丰。

源码群有群友提问我是怎么找到那么多npm包的,觉得这篇文章不错,分享给大家。


假设我需要一个 React 的弹框组件,我应该如何快速选择一个合适的 npm 库?

一、搜索

在正确的网址进行搜索:

  • npm 官网: 官方网站,权威网站

  • yarn 官网

  • Github

使用正确的关键词进行搜索: react modal

如果不出所料,这里可以选出一个或多个比较合适的第三方库。那对于一个选择困难症,如何从中挑选一个更好的库呢?

npm search

二、选型

你有没有参与过业务技术选型,你们是如何考虑技术选型的呢?这是工作了三五年的前端出去面试时经常会碰到的问题。

答:使用最流行的技术方案。最流行的技术方案往往拥有更丰富的生态与更多的从业人员,既方便找轮子,又好招人。

而最流行的技术方案指的是 「挑选下载量最高的库,而非 Star 最高的库」。当然这句话有些太绝对,但适用于大部分场景。

那还有一些小场景呢?再考虑几个关键要素: PQM

  1. P: 考察其流行度,周下载量多少,Github Stars 多少,是否无人问津

  2. Q: 考察其质量性,是否含有测试、Type等

  3. M: 考察其维护性,如最后一次更新时间,是否长时间未更新,如 Issues 的个数,是否有好多问题悬而未决

这里推荐一个选型必备网站: npm trends,它可以很直白地把这些指标放在一起进行对比,并且能够推荐「与该 Package 所有相似的包」

npm trend

三、文档

要多看文档!

我向我女朋友强调了这点,她问我,那应该如何去找到它的文档呢?

  1. npmjs.com 某个库详情页面的右侧,有 Homepage 字段指向官方文档

  2. github.com 某个 repo 详情页面的右上角,有官网链接

  3. 如果以上两者都没有,那 Readme.md 就是文档

其次,某个 package 的官网、Github 信息都会在 package.json 中声明

{"homepage": "https://lodash.com/","repository": {"type": "git","url": "git+https://github.com/lodash/lodash.git"}
}

接下来再送几个小技巧

# 快速找到并打开 react 的文档
$ npm docs react# 快速找到并打开 react 的仓库
$ npm repo react

四、示例

文档看完就进入了实操阶段,可按照以下步骤学会使用该库

  • 文档中的示例: 如 lodash及一众较小体积的库

  • 仓库中的示例: 如 redux、nextjs 与 koa

  • 仓库中的测试: 适用于一些边界的示例

为了某一个待调研的库,在本地新建一次性文件进行学习是一件不推荐的事情,以下三个工具帮你搞定所有的试验性调研

  • npm devtool: 在浏览器控制台用以调试较小提交的库,如 lodash/ms/joi 之类

  • codesandbox: 用以调试 Vue/React 等周边库

  • stackblitz: 用以调试 NodeJs 相关库

五、源码

# 快速找到并打开 react 的仓库
$ npm repo react

把代码下载到本地,去跑通、去运行、去测试、去调试。

最近组建了一个江西人的前端交流群,如果你是江西人可以加我微信 ruochuan12 私信 江西 拉你进群。

推荐阅读

整整4个月了,尽全力组织了源码共读活动~
我历时3年才写了10余篇源码文章,但收获了100w+阅读

老姚浅谈:怎么学JavaScript?

我在阿里招前端,该怎么帮你(可进面试群)

················· 若川简介 ·················

你好,我是若川,毕业于江西高校。现在是一名前端开发“工程师”。写有《学习源码整体架构系列》10余篇,在知乎、掘金收获超百万阅读。
从2014年起,每年都会写一篇年度总结,已经写了7篇,点击查看年度总结。
同时,最近组织了源码共读活动,帮助1000+前端人学会看源码。公众号愿景:帮助5年内前端人走向前列。

识别方二维码加我微信、拉你进源码共读

今日话题

略。分享、收藏、点赞、在看我的文章就是对我最大的支持~

源码群友问:你这么多项目是怎么进行技术选型的?相关推荐

  1. VB源码之友终于开发完毕了

    VB源码之友是一款VB IDE插件,是继API浏览器之后,叶帆软件系列家族中又一款VB程序开发辅助软件. 主要有以下几个功能: 1.程序注释自动生成: 2.变量自动添加前缀(符合匈牙利命名规则.也可以 ...

  2. app商城源码_海量的SpringBoot和SSM项目【附带源码+视频教程】快速成为全栈

    为了帮助更多的小伙伴进行项目的锻炼,孟哥整理较多的实战项目,包括SSM.Springboot.Springcloud.小程序等. 各种项目还在不断的更新中--仅限制学习使用,若有侵权,请联系删除. 点 ...

  3. java源码系列:HashMap底层存储原理详解——4、技术本质-原理过程-算法-取模具体解决什么问题

    目录 简介 取模具体解决什么问题? 通过数组特性,推导ascii码计算出来的下标值,创建数组非常占用空间 取模,可保证下标,在HashMap默认创建下标之内 简介 上一篇文章,我们讲到 哈希算法.哈希 ...

  4. 【源码及课件分享】Java实战项目之进销存管理系统_Java项目开发_Java项目实战

    还没有搞定毕设的小伙伴一定要看鸭~ Java实战项目--进销存管理系统![源码及课件分享]Java实战项目之进销存管理系统_Java项目开发_Java项目实战_Java毕业设计https://www. ...

  5. openedge-hub模块请求处理源码浅析——百度BIE边缘侧openedge项目源码阅读(2)

    前言 在openedge-hub模块启动源码浅析--百度BIE边缘侧openedge项目源码阅读(1)一文中浅析了openedge-hub模块的启动过程,openedge-hub为每一个连接的请求创建 ...

  6. (附源码)计算机毕业设计SSM精品旅游项目管理系统

    (附源码)计算机毕业设计SSM精品旅游项目管理系统 项目运行 环境配置: Jdk1.8 + Tomcat7.0 + Mysql + HBuilderX(Webstorm也行)+ Eclispe(Int ...

  7. [附源码]计算机毕业设计JAVA高校创新创业项目管理系统

    [附源码]计算机毕业设计JAVA高校创新创业项目管理系统 项目运行 环境配置: Jdk1.8 + Tomcat7.0 + Mysql + HBuilderX(Webstorm也行)+ Eclispe( ...

  8. 【源码及课件分享】Java实战项目之酒店客房管理系统_Java项目开发_Java项目实战

    Java实战项目又双叒叕来咯~小伙伴们请查收~酒店客房管理系统![源码及课件分享]Java实战项目之酒店客房管理系统_Java项目开发_Java项目实战_Java毕业设计https://www.bil ...

  9. 产品名称:iWX JAVA微信管理平台源码-微友1314

    JAVA版微信管理平台免费源码,QQ:3136810087 下载地址:http://pan.baidu.com/s/1bnjJOYz http://pan.baidu.com/s/1pJ5ag9l 源 ...

最新文章

  1. 说出vue中的几种指令和他的用法_说一说VUE中的/deep/用法
  2. ArrayList不是并发安全的?那么在高并发环境下怎么使用集合
  3. 神策 FM | 20 种方法,让你成为用户的知心朋友
  4. Laravel——Passport OAuth
  5. VTK修炼之道3_VTK体系结构2
  6. 我的第一个python web开发框架(11)——工具函数包说明(二)
  7. matlab 中 Transform,变换数据存储 - MATLAB transform - MathWorks 中国
  8. 关于软件定义IT基础设施的未来,深信服是这么思考的
  9. 商品管理后台html,商品类型管理.html
  10. 【报告分享】2019年中国人工智能商业落地研究报告.pdf(附下载链接)
  11. 学游戏设计要什么学历_东莞模具设计培训学模具技术有什么好处为什么学模具技术...
  12. 从小白到区块链工程师:第一阶段:Go语言的HelloWorld初始(2)
  13. Unicode - 16 位统一超级字符集
  14. Tensorflow 2.0 : FCNN
  15. Windows10怎么改分辨率?Win10分辨率设置教程(最新)
  16. 路由器 接 交换机 接 路由器
  17. 建设银行查看完整卡号
  18. 比较802.11ac(Wi‑Fi 5)和802.11ax(Wi‑Fi 6)
  19. 各种Java加密算法-非对称加密
  20. centos7 firewalld ip与端口白名单配置等,开放端口与ip白名单

热门文章

  1. vue 筛选组件_记一个复杂组件(Filter)的从设计到开发
  2. c#和python同一主机直接udp_为什么Python 如此之慢
  3. POJ 2054 Color a Tree (贪心)
  4. (56)zabbix Screens视图配置
  5. BZOJ1045 HAOI2008糖果传递(贪心)
  6. C#3种常见的定时器(多线程)
  7. 进阶篇-安卓系统:2.多点触控的交互处理
  8. 计算机网络第4章(网络层)
  9. 一行代码揭开CPU执行原理
  10. NXP (I.MX6ULL) GPT高精度延时定时器