npm 是干什么的?(非教程)

看了之后就很清楚什么叫NPM,以后它是干嘛的。谢谢楼主

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

本文目标读者是「不太了解 npm 的新人」,大神您别看了,不然又说我啰嗦了 ??。

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

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

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

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

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

在 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 来分享代码已经成了前端的标配。

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

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

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

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

转自:https://zhuanlan.zhihu.com/p/24357770

原文地址:https://www.cnblogs.com/yiyi20120822/p/11669873.html

时间: 2024-11-04 05:19:40

npm 是干什么的?(非教程)的相关文章

LFS Linux From Scratch 笔记2(经验非教程)BLFS

LFS 完了. 其实还没完,还要装一些其他的组件,系统才算是对人类有用的系统. 正好这里有个BLFS Beyound Linux From Scratch 的教程. 其实,按照现有的可运行的LFS系统,我们完全可以直接自己编译.加入一些组件.只是BLFS里面加入了一些真正我们常用的组件,帮你顺理了一下思路. 看上去文件内容很多.http://www.linuxfromscratch.org/blfs/read.html 有一些系统组件的设定,安全设定等等.

LFS Linux From Scratch 笔记(经验非教程)

做了一个自己的DIY Linux系统.从编译每一行代码,建立每一个文件系统结构开始. 创造自己的Linux系统,不同于任何发行版.按照的教程是来自 linuxfromscratch.org 来的.我选用的是systemd lfs 8.0 稳定版的教程. 说说这里面遇到的一些问题和自己解决的方法. 用的ubuntu16.04 64位的处理器环境.这个叫host system(gcc5.4.0).需要给这个host system安装很多编译需要的环境.用这个机器来编译下一个机器的所有运行环境. 有个

NPM测试模块之rewire教程

摘要:有了rewire模块,再也不用担心测试私有函数了. 在玩转Node.js单元测试,我介绍了3个用于编写测试代码的NPM模块:Mocha, Should以及SuperTest.为了怂恿大家写单元测试,我再介绍一款神奇的NPM测试模块:rewire. GitHub仓库: Fundebug/rewire-tutorial rewire原理 对于技术,知其然,也应该知其所以然. 对于rewire,它的基本功能与require相同,都是用于导入模块,只是,它会为导入的模块添加两个特殊的函数:__ge

git与github(总结,非教程,基于Bash而非GUI)

为了清楚方便,把两者分开.其实如果不需要分工协作的话,单单Git就可以满足个人工作需要,然后在GitHub上学习开源的项目.当然有项目需要多人分工,需要两者结合使用. Git 下载客户端,安装 在本地某盘新建文件夹,文件夹内,右键"Git "Bash Here",出现一个终端窗口.输入"git init"命令把文件夹变成repository.repository(仓库)里所有文件每个文件的修改.删除,Git都能跟踪其历史,并进行还原等. 在添加文件后,后者

Solr集群的搭建概述(非教程)

1.什么是SolrCloud SolrCloud(solr 云)是Solr提供的分布式搜索方案,当你需要大规模,容错,分布式索引和检索能力时使用 SolrCloud.当一个系统的索引数据量少的时候是不需要使用SolrCloud的,当索引量很大,搜索请求并发很高,这时需要使用SolrCloud来满足这些需求. SolrCloud是基于Solr和Zookeeper的分布式搜索方案,它的主要思想是使用Zookeeper作为集群的配置信息中心. 它有几个特色功能: 1)集中式的配置信息 2)自动容错 3

npm 与 package.json 快速入门教程

npm 与 package.json 快速入门教程 2017年08月02日 19:16:20 阅读数:33887 npm 是前端开发广泛使用的包管理工具,之前使用 Weex 时看了阮一峰前辈的文章了解了一些,这次结合官方文章总结一下,加深下理解吧! 读完本文你将了解: 什么是 npm? 安装 npm 更新 npm package.json 文件 package.json 如何创建 package.json 的内容 指定依赖的包 Semantic versioning(语义化版本规则) 安装 pa

git+npm管理公共库

git可以是GitHub.码云(gitee).gitlab.npm官网没有代码管理,所以需要git,创建git账号和npm账号请另行找教程. 1.在git上新建项目:因为要发布到npm,所以在git上新建的项目必须是一个根目录带有package.json文件,执行以下命令进行项目初始化 $ npm init //按照提示输入就可以,当然也可以全部为空,直接enter到结束 2.发布项目到npm服务器: npm login //登录,输入npm账号.密码.邮箱.npm publish //发布.每

如何搭建一个“不可告人的”私人专属网盘?教程拿去

虽然打造私人网盘的目的很不好意思说出来,但是一想到以后存一些东西再也不怕莫名其妙地蒸发掉了,就开心的睡不着啊. 好嘞,回到咱们今天的主题:如何打造一个私人专属网盘?本教程将使用React & SPA为技术基础,来完成这个应用的搭建. 整个过程将涉及以下3块知识点: React 简介和环境搭建 node & npm 基本使用 React SPA 简单实践 React简介 React 是什么?对前端有所了解的同学,想必都或多或少听到过 React 这个名字.React 是由 Facebook

小程序Kbone开发教程基础篇02-使用kbone-ui实现一个按钮

前言 本节我们学习使用kbone-ui框架的使用,kbone-ui是微信推出的支持小程序和Vue框架的多端UI库,我们首先完成Button的使用. 一.基础知识 1.kbone-ui简介 kbone-ui 是一个能同时支持 小程序(kbone) 和 vue 框架开发的多端 UI 库.kbone 框架是用来对齐 Web 和 小程序多端的一个解决方案.在使用时,还是需要注意 小程序和 Web 之间的开发差异性,为了磨平这块内容,提供 kbone-ui 组件库.通过,kbone-ui 来磨平大部分的实