npm是什么,用来干嘛的

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

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

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

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

分享源代码(线上代码仓库)
讨论问题(Issue 列表)
收集学习资源和常去的网站(比如我收集的优质中文前端博客https://github.com/FrankFang/best-chinese-front-end-blogs)

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

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

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

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

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

麻烦

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

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

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

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

具体步骤

NPM 的思路大概是这样的:

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

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

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

下载完的代码出现在 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。(其实其他语言也是这样的)

所以,社区的力量是巨大的。
---------------------  
作者:love_pgme  
来源:CSDN  
原文:https://blog.csdn.net/love_pgme/article/details/83105192  
版权声明:本文为博主原创文章,转载请附上博文链接!

原文地址:https://www.cnblogs.com/fengff/p/10725084.html

时间: 2024-11-04 02:35:19

npm是什么,用来干嘛的的相关文章

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

看了之后就很清楚什么叫NPM,以后它是干嘛的.谢谢楼主 网上的 npm 教程主要都在讲怎么安装.配置和使用 npm,却不告诉新人「为什么要使用 npm」.今天我就来讲讲这个话题. 本文目标读者是「不太了解 npm 的新人」,大神您别看了,不然又说我啰嗦了 ??. 社区程序员自古以来就有社区文化: 社区的意思是:拥有共同职业或兴趣的人们,自发组织在一起,通过分享信息和资源进行合作.虚拟社区的参与者经常会在线讨论相关话题,或访问某些网站.前端程序员也有社区,世界上最大的前端社区应该就是 GitHub

关于包管理工具

创建: 2019/04/06 随着工龄的增长, 用过的包管理工具也越来越多. 从一开始的gem/bundle, cocoaPods到npm, 又到yarn. 虽然干的都是一件事, 但是不同的工具的使用方法各不相同.以至于如今除了对gem/bundle, cocoaPods以外, 对于npm, yarn这类的都是一知半解.每次用到都要手动查一下该做什么. 尤其npm, 其实两年前我就有用到, 当时没怎么在意.随着react的火热, 如今基本上很难避开npm了, 每次遇到问题就要搜一下实在是太过低效

JavaBean与EJB有何不同uuwc58AA

如果说互联网解决信息不对称,移动互联网解决沟通不及时,那么区块链解决的是信任难建立和价值难共享.比特币3.0时代已经到来,3.0时代意味着"随处可用的区块链".如何实现随处可用?吴萌野老师认为,一是基础链,二是中间件.有关基础链的技术问题和解决方案,吴萌野老师给出的答案是从计算层的改进方向:一是采用更快速的智能合约容器和运行时,并优化共识节点规模.谈到中间件,他希望通过中间件搭建连接互联网云服务和区块链智能合约的中间桥梁,推动区块链应用生态规模化落地. 吴萌野1999年毕业于是清华大学

我想写一个前端开发工具(一):在npm发布模块

有必要说说我为什么要开始写这个 我最近忙于公司的项目,一直没有抽出时间来写文章.本来想每个月写一片文章,保质保量,无奈上个月没有坚持. 这段时间有点忙,主要是由于公司业务调整,我从原来的广告项目中调整到新业务线的前台页面开发了,和以前一样,还是带着3.4个兄弟姐妹.不同的是以前的项目周期普遍偏长,可以让每个同学有时间从头到尾的把项目吃透,而现在做C端的前台页面往往开发时间非常的短,比如我们就要在1.2个月完成业务线所有前台页面的开发.联调.测试.部署,以及下一步的迭代.由于是从零开始,不存在基于

nodejs的包管理器npm和cnpm

http://www.ydcss.com/archives/18 3.npm介绍 3.1.说明:npm(node package manager)nodejs的包管理器,用于node插件管理(包括安装.卸载.管理依赖等): 3.2.使用npm安装插件:命令提示符执行npm install <name> [-g] [--save-dev]: 3.2.1.<name>:node插件名称.例:npm install gulp-less --save-dev 3.2.2.-g:全局安装.将

nodejs学习四 Node.js NPM

什么是NPM? 不知道大家注意没有,windows平台下的Node.js安装包大小才区区4M多,真可以用短小精悍来形容它,作为一种编程语言,像java一个SDK 就几十M,为什么node.js的运行环境这么小呢?这其中的微妙之处在于,它拥有一个庞大的第三方软件库. 在Node本身提供的包(原生)中没有我们要实现的功能模块的时候,我们可以去寻找下是否已经有人实现了这种功能.毕竟重复造轮子这种事情,很多人都不想干. 去哪里寻找我们想要的包呢?如果你还不知道报的名字,你可以去https://www.n

第01章 VS2015前端工具:NPM和Web Essentials

1.写作背景 想在5月份前换个工作环境了,“检讨”一下自己混饭的技术水平和处世的人脉关系,觉得很不给力!为人方面,人各有志也就不纠结了,但本领得尽量提高一下. 我也不擅长写博客,也发觉以前写过的,要不半途而废,要不质量惨不忍睹,所以以前博文干脆全部删除,试着再回顾一遍也罢! 2.本章概述 VS2015 CTP6下的NPM(bower及grunt)和Web Essentials基本安装和使用.如果你是web前端开发人员,建议熟练掌握. 3.NPM a package manager for Jav

在npm上发布自己的包 全局包指令使用

看着公司的另外一个同事写了一个静态资源服务器进行打包后的预览, 但是个人觉得他定义的指令实在是太长, 每次都得打一大串, 个人实在受不了. 于是做了个梦, 再梦里自己就写了这么一个东西, 第二天正好公司空闲没啥事干就开始琢磨着去写. 需要准备的: node, npm账号, github仓库, 足够的耐性 开干 : 1.声明npm package.json npm init 2.随后键入package基本信息 name: vsv // 模块名称 version: (1.0.0) 1.0.1 //

npm还是cnpm

摘自http://www.ydcss.com/archives/18#why 选装cnpm 1.说明:因为npm安装插件是从国外服务器下载,受网络影响大,可能出现异常,如果npm的服务器在中国就好了,所以我们乐于分享的淘宝团队干了这事.32个!来自官网:“这是一个完整 npmjs.org 镜像,你可以用此代替官方版本(只读),同步频率目前为 10分钟 一次以保证尽量与官方服务同步.”: 2.官方网址:http://npm.taobao.org: 3.安装:命令提示符执行npm install