社区

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

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

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

  1. 分享源代码(线上代码仓库)

  2. 讨论问题(Issue 列表)

  3. 收集学习资源和常去的网站(比如我收集的优质中文前端博客)

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

共享代码

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

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

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

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

麻烦

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

  1. 去 jQuery 官网下载 jQuery

  2. 去 BootStrap 官网下载 BootStrap

  3. 去 Underscore 官网下载 Underscore

  4. ……

有些程序员就受不鸟了,一个拥有三大美德的程序员 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 来分享代码已经成了前端的标配。

后续

Node.js 目前由 Ryan Dahl 当时所在的公司 joyent 继续开发。Ryan Dahl 现在已经去研究 AI 和机器学习了,并且他把 Node.js 的维护权交给了 Isaaz。(我是不是也应该去研究 AI 和机器学习啊教练)

而 Isaaz 维护了一段时间后,辞职了,成立了一个公司专门维护 npm 的 registry,公司名叫做 npm 股份有限公司……谁说开源不能赚钱的~

本文出自https://zhuanlan.zhihu.com/p/24357770

转载于:https://blog.51cto.com/lookingdream/1958315

npm 是干什么的?相关推荐

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

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

  2. npm是干什么的?为什么要使用npm?(适合不太了解 npm 的新人阅读)

    网上的 npm 教程主要都在讲怎么安装.配置和使用 npm,却不告诉新人「为什么要使用 npm」.今天我就来讲讲这个话题. 本文目标读者是「不太了解 npm 的新人」 . 社区 程序员自古以来就有社区 ...

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

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

  4. npm是用来干什么的?

    网上的 npm 教程主要都在讲怎么安装.配置和使用 npm ,却很少告诉新人「npm 是干什么的?」「为什么要使用 npm?」.今天我就来讲讲这个话题.本文目标读者是「不太了解 npm 的新人」,老司 ...

  5. npm 与 package.json 快速入门

    摘自  https://blog.csdn.net/u011240877/article/details/76582670#什么是-npm npm 是前端开发广泛使用的包管理工具,之前使用 Weex ...

  6. npm 与 package.json 快速入门教程

    npm 是前端开发广泛使用的包管理工具,之前使用 Weex 时看了阮一峰前辈的文章了解了一些,这次结合官方文章总结一下,加深下理解吧! 读完本文你将了解: 什么是 npm? 安装 npm 更新 npm ...

  7. 了解node.js以及npm

    1.什么是node.js? node.js是一个基于Chrome V8引擎的JavaScirpt运行环境. node使用场景 ' Node 公开宣称的目标是 "旨在提供一种简单的构建可伸缩网 ...

  8. 【Github】开源项目xterm.js

    项目github地址: xterm.js on github 学习笔记 从项目介绍中进行知识拓展 名称 资料 npm npm 是干什么的?(非教程) semver semver:语义化版本规范在 No ...

  9. 【计算机基础】下载过的软件 on MAC 收藏夹

    收藏夹 ------------------- JAVA BOOTSTRAP 模版 Yummy-Jekyll 项目:https://github.com/DONGChuan/Yummy-Jekyll ...

最新文章

  1. 6、UmbracoNewsSite:添加新闻分类
  2. 20211江西高考成绩查询,江西高考成绩查询系统
  3. Python语言的全部数据类型分享!
  4. totorisgit与git两种方式pushpull文件
  5. mysql -uroot -proot tc -e select * from merchandise limit 1这个-E的命令作用是什么,用来什么什么的?
  6. Java Servlet生成JSON格式数据并用jQuery显示
  7. YII中session和cookie
  8. 机器学习之 weka学习(六)最大内存
  9. 需求简报_代码简报:我如何通过做自己喜欢的事情来获得顶级技术实习
  10. 被引10万次:21世纪高被引论文Top 10
  11. netty发送对象消息
  12. 百度历年笔试面试150题
  13. java httpurlconnection 设置编码_java – 通过HttpURLConnection发送UTF-8字符失败
  14. MySQL基础_模糊查询—between and in is null <=>(安全等于)等关建字
  15. 同济线性代数教材(第五版)-第2章 矩阵及其运算
  16. 怎样在Apple Silicon M1 Mac上引导到恢复模式
  17. 查看电脑连接的wifi密码
  18. 重积分 | 高斯公式使用的四种情况
  19. 多条ADSL线路合并叠加效果测试,多WAN口聚合
  20. 大数据技术_ 基础理论 之 大数据概念与应用

热门文章

  1. 网站随机动态密码代码
  2. python描述器 有限状态机_笨办法学 Python · 续 练习 30:有限状态机
  3. 新版WebStorm安装详细流程
  4. N点虚拟主机管理系统安装图解
  5. C# 实现软件自动更新升级程序
  6. Objective-C 2.0 with Cocoa Foundation --- 3,类的声明和定义
  7. 配置keepalived+LVS_DR
  8. 虚拟机与主机串口通信(主机与主机)
  9. 浏览器打开PDF调整亮度和颜色的小技巧
  10. 【C++】new A和new A()的区别详解