网上的 npm 教程主要都在讲怎么安装、配置和使用 npm,却不告诉新人「为什么要使用 npm」。今天我就来讲讲这个话题。

本文目标读者是「不太了解 npm 的新人」 。

社区

程序员自古以来就有社区文化:

社区的意思是:拥有共同职业或兴趣的人们,自发组织在一起,通过分享信息和资源进行合作。虚拟社区的参与者经常会在线讨论相关话题,或访问某些网站。

前端程序员也有社区,世界上最大的前端社区应该就是 GitHub 了。前端通过 GitHub 来

  1. 分享源代码(线上代码仓库)
  2. 讨论问题(Issue 列表)
  3. 收集学习资源和常去的网站(比如我收集的优质中文前端博客)

加入社区最大的好处之一是,你可以使用别人贡献的代码,你也可以贡献代码给别人用。

共享代码

前端是怎么共享代码的呢?

在 GitHub 还没有兴起的年代,前端是通过网址来共享代码

比如你想使用 jQuery,那么你点击 jQuery 网站上提供的链接就可以下载 jQuery,放到自己的网站上使用


GItHub 兴起之后,社区中也有人使用 GitHub 的下载功能:

麻烦

当一个网站依赖的代码越来越多,程序员发现这是一件很麻烦的事情:

  • 去 jQuery 官网下载 jQuery
  • 去 BootStrap 官网下载 BootStrap
  • 去 Underscore 官网下载 Underscore

有些程序员就受不鸟了,一个拥有三大美德的程序员 Isaac Z. Schlueter (以下简称 Isaaz)给出一个解决方案:用一个工具把这些代码集中到一起来管理吧!

这个工具就是他用 JavaScript (运行在 Node.js 上)写的 npm,全称是 Node Package Manager

具体步骤

NPM 的思路大概是这样的:

  1. 买个服务器作为代码仓库(registry),在里面放所有需要被共享的代码

  2. 发邮件通知 jQuery、Bootstrap、Underscore 作者使用 npm publish 把代码提交到 registry 上,分别取名 jquery、bootstrap 和 underscore(注意大小写)

  3. 社区里的其他人如果想使用这些代码,就把 jquery、bootstrap 和 underscore 写到 package.json 里,然后运行 npm install ,npm 就会帮他们下载代码

  4. 下载完的代码出现在 node_modules 目录里,可以随意使用了。

这些可以被使用的代码被叫做「包」(package),这就是 NPM 名字的由来:Node Package(包) Manager(管理器)。

发展

Isaaz 通知 jQuery 作者 John Resig,他会答应吗?这事儿不一定啊,对不对。

只有社区里的人都觉得 「npm 是个宝」的时候,John Resig 才会考虑使用 npm。

那么 npm 是怎么火的呢?

npm 的发展是跟 Node.js 的发展相辅相成的。

Node.js 是由一个在德国工作的美国程序员 Ryan Dahl 写的。他写了 Node.js,但是 Node.js 缺少一个包管理器,于是他和 npm 的作者一拍即合、抱团取暖,最终 Node.js 内置了 npm。

后来的事情大家都知道,Node.js 火了。

随着 Node.js 的火爆,大家开始用 npm 来共享 JS 代码了,于是 jQuery 作者也将 jQuery 发布到 npm 了。

所以现在,你可以使用 npm install jquery 来下载 jQuery 代码。

现在用 npm 来分享代码已经成了前端的标配。

社区的力量

回顾前端的发展是你会发现,都是社区里的某个人,发布了一份代码,最终影响前端几年的走向。比如 jQuery,比如 Node.js,比如 npm。(其实其他语言也是这样的)

所以,社区的力量是巨大的。

关于node.js的简介,可看文档

node.js 是一种javascript的运行环境,能够使得javascript脱离浏览器运行。

npm是干什么的?为什么要使用npm?(适合不太了解 npm 的新人阅读)相关推荐

  1. npm是什么东西?npm是干什么的

    好多刚入门的前端人员有一个疑惑,我会使用npm了,但是不知道npm是什么东西,下面小编就来聊一聊 起初我们开发一个网站所需要的一些代码要从它的官网去下载,如果我们要开发的这个网站需要不同网站的代码,就 ...

  2. npm 是干什么的?(八卦,非教程)

    网上的 npm 教程主要都在讲怎么安装.配置和使用 npm,却不告诉新人「为什么要使用 npm」.今天我就来讲讲这个话题. 本文目标读者是「不太了解 npm 的新人」,大神您别看了,不然又说我啰嗦了. ...

  3. npm ERR! cb.apply is not a function npm ERR! A complete log of this run can be found in: npm ERR!

    npm ERR! cb.apply is not a function npm ERR! A complete log of this run can be found in: npm ERR! C: ...

  4. 【解决】npm ERR A complete log of this run can be found in npm ERR

    有一些同学可能想配置react的运行环境,苦于不同的电脑遇到千奇百怪的问题和ERROR.下面是我遇到问题对应的解决方案,希望对你们有帮助. 本来我们的基本步骤是: 下载好nvm文件 在里面下载node ...

  5. npm命令运行时报错_npm命令运行时报错_使用npm命令时报错误Error: EACCES: permission denied...

    执行npm link 报错 liuffsunny@liufangfangdeMacBook-Pro 02learnCli % npm link npm ERR! code EACCES npm ERR ...

  6. npm WARN config global `--global`, `--local` are deprecated. Use `--location=global` instead.npm ER

    背景: 在通过npm安装@vue-cli时,出现了如下报错信息 npm WARN config global `--global`, `--local` are deprecated. Use `-- ...

  7. npm ERR A complete log of this run can be found in npm ERR CUsersAppDataRoamingnpm-ca

    npm ERR! A complete log of this run can be found in: npm ERR! C:Users**AppDataRoaming pm-cache_logs? ...

  8. npm 是干什么的?

    社区 程序员自古以来就有社区文化: 社区的意思是:拥有共同职业或兴趣的人们,自发组织在一起,通过分享信息和资源进行合作.虚拟社区的参与者经常会在线讨论相关话题,或访问某些网站. 前端程序员也有社区,世 ...

  9. npm和angular_如何开发,使用和发布Angular库到NPM

    npm和angular by Omer Kalim Ansari 通过Omer Kalim Ansari 如何开发,使用和发布Angular库到NPM-但是有时不值得! (How to develop ...

最新文章

  1. 立体匹配算法实现之:AdaptWeight
  2. Python print函数不换行操作
  3. 数据库和缓存的双写一致性问题
  4. 2018.8.14笔记
  5. 双指放大_便携超小手机显微镜1000倍放大!让你玩转微观世界,惊艳朋友圈
  6. 大家的第一次创业钱是通过什么方式得到的呢?
  7. 问题的分析与解决(培训总结)
  8. js的深拷贝的理解和实现
  9. 刷入第三方Recovery系统TWRP
  10. handsome主题魔改
  11. 2019商业数据分析软件有哪些
  12. Post man 使用教程
  13. w10恢复出厂设置_w10电脑恢复出厂设置 w10电脑恢复出厂设置的方法
  14. C++-求积分(面积)
  15. 随机过程基础1--随机过程与宽平稳
  16. 聊天机器人简介与体验网址
  17. 微软疑淡化邮件服务被黑事件;DOTA2 AI 2:0 完胜世界冠军
  18. HDFS回收站、Trash机制、Trash Checkpoint、快照功能使用、通过Snapshot快照恢复数据、备份数据、HDFS快照的实现
  19. 三层内网 外网打点到内网域 sec123 复现
  20. 如何完全利用Win7

热门文章

  1. A电机不转 米兔机器人_米兔积木机器人改装智能车库(上)|搭建步骤
  2. 盘点顶级加密 VC 的“3A 链游”布局,谁能扛起 Gamefi 的大旗?
  3. axios使用delete方法的params和data传参
  4. 使用c语言二维数组输出一个菱形
  5. C语言模拟电梯(广东工业大学数据结构课设)
  6. Python多进程中的fork
  7. 2022-2028中国滚珠轴承杆端市场现状研究分析与发展前景预测报告
  8. 决策过程并举例_商品管理如何分析售罄率及应用决策中,降低库存
  9. linux学习- 添加用户并授权root权限
  10. 场面话,多学学[不错、有空的时候看一下]