NPM 与 CNPM

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


社区

程序员自古以来就有社区文化。社区的意思是:拥有共同职业或兴趣的人们,自发组织在一起,通过分享信息和资源进行合作。虚拟社区的参与者经常会在线讨论相关话题,或访问某些网站。 前端程序员也有社区,世界上最大的前端社区应该就是 GitHub 了。前端通过 GitHub 来分享源代码(线上代码仓库),讨论问题(Issue 列表),收集学习资源和常去的网站(比如我收集的优质中文前端博客)。加入社区最大的好处之一是,你可以使用别人贡献的代码,你也可以贡献代码给别人用。


共享代码

前端是怎么共享代码的呢?在 GitHub 还没有兴起的年代,前端是通过网址来共享代码。比如你想使用 jQuery ,那么你点击 jQuery 网站上提供的链接就可以下 jQuery ,放到自己的网站上使用 。GItHub 兴起之后,社区中也有人使用 GitHub 的下载功能。


麻烦

当一个项目依赖的代码越来越多,程序员发现这是一件很麻烦的事情:
1.去 jQuery 官网下载 jQuery
2.去 BootStrap 官网下载 BootStrap
3.去 Underscore 官网下载 Underscore
......
有些程序员就受不鸟了,一个拥有三大美德的程序员 Isaac Z. Schlueter (以下简称 Isaaz)给出了一个解决方案:用一个工具把这些代码集中到一起来管理吧!这个工具就是他用 JavaScript (运行在 Node.js 上)写的 npm,全称是 Node Package Manager。

npm的思路大概是这样的:
1.买个服务器作为代码仓库(repository),在里面放所有需要被共享的代码
2.发邮件通知 jQuery 、Bootstrap 、Underscore 的作者使用 npm publish 把代码提交到 repository 上,分别取名 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 写

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: NPMCNPM 的主要区别在于它们的源(source)。 NPM(Node Package Manager)是 Node.js 社区推出的官方包管理工具,它的源是指向国外的服务器。 而 CNPM(China NPM)是国内淘宝网开发的一个 NPM 镜像,它的源指向国内的服务器。 因此,如果你在国内使用 NPM,由于网络原因,速度可能会很慢,而 CNPM 则能解决这个问题。 此外,CNPM 还提供了一些额外的功能,例如离线安装包、包搜索等,使得包管理更加方便。 总之,如果你在国内使用 Node.js,建议使用 CNPM,而在国外则使用 NPM 即可。 ### 回答2: npm(Node Package Manager)是Node.js的官方包管理工具,是JavaScript开发者常用的包管理工具之一。它可以用来安装、发布和管理JavaScript模块。npm的优点是它是官方的,有着庞大的开发者社区支持,这意味着可以轻松地找到并使用各种高质量的npm包。 cnpm(淘宝 NPM)是一个由淘宝团队提供的npm镜像源工具,默认使用国内的淘宝NPM镜像。cnpmnpm的区别主要在于网络访问速度。由于npm在国内访问可能较慢,cnpm提供了一个国内的镜像源,使得国内的开发者可以更快地下载和安装包。使用cnpm的好处是它可以加速包的下载和安装过程,减少了访问国外服务器的延迟。 然而,cnpm相对于npm也存在一些不足之处。首先,cnpm的镜像源并不是实时同步npm的官方源,因此可能会导致某些包版本不及时更新。其次,由于cnpm并非官方版本,使用cnpm可能会引入一些不稳定性和安全性的问题。 总结来说,npmcnpm之间的区别在于访问速度和稳定性方面。npm作为官方工具具有更准确和稳定的包管理,并且它的使用更广泛。cnpm则是国内为了解决npm访问速度慢的问题而出现,优点在于访问速度快,但缺点在于同步不及时和安全性的问题。因此,根据实际需要,开发者可以根据具体情况选择使用npm还是cnpm来管理JavaScript包。 ### 回答3: npm是Node.js的包管理器,它是默认的包管理器,用于安装、更新和管理各种模块。npm是全球最大的开源软件注册表,有着庞大的开发者社区和大量的模块资源。 cnpm是淘宝团队为了解决npm安装模块慢的问题而推出的npm的镜像,cnpm会默认将npm的注册表切换到淘宝的镜像源,从而加快模块的下载速度,特别是对于国内用户来说。 两者的区别主要有以下几点: 1. 访问速度:由于cnpm使用的是淘宝的镜像源,所以在国内的用户访问速度更快,下载和安装模块的速度也更快。 2. 数据同步:cnpm并非与npm完全同步,它会定期与npm同步数据,但可能会有一些时间差,因此可能不会立即得到最新模块的更新。 3. 安全性:npm是官方的包管理器,由Node.js团队维护和更新,因此在安全性方面更可靠。而cnpm虽然也会同步官方的更新,但从理论上来说,还是有可能存在一些安全风险。 4. 生态系统:由于npm的广泛使用,它拥有丰富的模块资源和开发者社区,而cnpm相对较新,其生态系统相对不如npm完善,一些较新的模块可能无法在cnpm中找到或更新。 综上所述,npmcnpm的最主要区别在于速度和数据同步方面。对于国内用户来说,cnpm在访问速度上有着明显的优势,如果对于模块的最新版本和安全性有更高的要求,npm仍然是更好的选择。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值