npm介绍

举报
tea_year 发表于 2022/03/23 09:24:18 2022/03/23
【摘要】 (1)npm介绍  在正式介绍Node.js学习之前,我们先认识一下npm。  npm是什么东西?npm其实是Node.js的包管理工具(package manager)。  为啥需要一个包管理工具呢?因为我们在Node.js上开发时,会用到很多别人写的JavaScript代码。如果我们要使用别人写的某个包,每次都根据名称搜索一下官方网站,下载代码,解压,再使用,非常繁琐。于是一个集中管理的...

(1)npm介绍

  在正式介绍Node.js学习之前,我们先认识一下npm。

  npm是什么东西?npm其实是Node.js的包管理工具(package manager)。

  为啥需要一个包管理工具呢?因为我们在Node.js上开发时,会用到很多别人写的JavaScript代码。如果我们要使用别人写的某个包,每次都根据名称搜索一下官方网站,下载代码,解压,再使用,非常繁琐。于是一个集中管理的工具应运而生:大家都把自己开发的模块打包后放到npm官网上,如果要使用,直接通过npm安装就可以直接用,不用管代码存在哪,应该从哪下载。举个例子:如果我们要使用模块A,而模块A又依赖于模块B,模块B又依赖于模块X和模块Y,npm可以根据依赖关系,把所有依赖的包都下载下来并管理起来。否则,靠我们自己手动管理,肯定既麻烦又容易出错。

  

  比如之前的swiper开发,需要引入jquery类型文件,因为swiper是基于jquery语法开发。普通方案需要挨个引入,有了npm即nodejs的包管理工具后,它会自己根据文件依赖安装相应文件。

  场景:

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

去 jQuery 官网下载 jQuery

去 BootStrap 官网下载 BootStrap

去 Underscore 官网下载 Underscore

……

  有些程序员就受不了了,于是npm就出来了,全称是 Node Package Manager 包管理工具。这一点和maven、gradle十分相似,只不过maven、gradle是用来管理java jar包的,而npm是用来管理js的。

   NPM 的实现思路和maven、gradle是一样的:
    1、有一个远程代码仓库(registry),在里面存放所有需要被共享的js代码,每个js文件都有自己唯一标识。
    2、用户想使用某个js的时候,只需引用对应的标识,js文件会自动下载下来。

 

(2)nodejs

  在Windows上安装时务必选择全部组件,包括勾选Add to Path。

  安装完成后,在Windows环境下,请打开命令提示符,然后输入node -v,如果安装正常,你应该看到版本输出。

  Node.js平台是在后端运行JavaScript代码,可以把它理解成PHP和java同等的后台开发语言。

Node.js是一个基于Chrome JavaScript运行时建立的平台, 用于方便地搭建响应速度快、易于扩展的网络应用。Node.js 使用事件驱动, 非阻塞I/O模型而得以轻量和高效,
非常适合在分布式设备上运行数据密集型的实时应用。

  以上摘自百度百科,简单来说,Node.js很适合搭建轻量的服务器(应用),所以它又被人称为服务器语言,前端中的后端语言。node翻译过来是节点的意思,而node.js后面特地带了.js,就表示它与JavaScript有莫大的关系。 node.js是javascript的一种运行环境,是服务器端的javascript的解释器。

  

 

 

(3)npm与node关系

    npm则是包含在node.js里面的一个包管理工具,就如同linux中的yum仓库,rpm包管理;如同python中的pip包管理工具一样。而这些包管理工具都是予以使用的人们方便,同时解决各种包依赖之间的关系的。 等下面演示后,就会知道有npm去解决项目及包之间的依赖关系是多么的便利,省去了人手上的多少心力。让开发人员专注于代码上。

    既然npm是包管理工具,那么它自己也和node.js分开自成一个网站,在npm的网站上面,就如同github,其仓库中保管了N多的开源项目,有世界上众多开发者提供的项目。我们只需要在npm的网站上搜索相关的就可以找到,然后在线上下载也行,直接在自己的项目中使用命令行安装也行。

    npm 由三个独立的部分组成:

npm官方网站(仓库源)

注册表(registry)(package.json)

命令行工具 (CLI)

网站 是开发者查找包(package)、设置参数以及管理 npm 使用体验的主要途径。

注册表 是一个巨大的数据库,保存了每个包(package)的信息。

CLI 通过命令行或终端运行。开发者通过 CLI 与 npm 打交道。

    

(4)Node.js是什么

    Node.js是一个Javascript运行环境(runtime environment),不是一个js文件,实质是对Chrome V8引擎进行了封装。Node.js 是一个让 JavaScript 运行在服务端的开发平台,它让 JavaScript 成为与PHP、Python 等服务端语言平起平坐的脚本语言。
  [1]Node.js提供替代的API,使得V8在非浏览器环境下运行得更好。V8引擎执行Javascript的速度非常快,性能非常好。 
  [2]Node.js是一个基于Chrome JavaScript运行时建立的平台, 用于方便地搭建响应速度快、易于扩展的网络应用。

  chrome浏览器和Node.js在解析javascript都使用了v8引擎:

  

  

  

(5)npm与nodejs发展

    npm作者已经将npm开发完成,于是发邮件通知 jQuery、Bootstrap、Underscore 作者,希望他们把 jquery、bootstrap 、 underscore 放到npm远程仓库,但是没有收到回应,于是npm的发展遇到了瓶颈。

    Node.js作者也将Node.js开发完成,但是 Node.js 缺少一个包管理器,于是他和 npm 的作者一拍即合、抱团取暖,最终 Node.js 内置了 npm。
后来的事情大家都知道,Node.js 火了。随着 Node.js 的火爆,大家开始用 npm 来共享 JS 代码了,于是 jQuery 作者也将 jQuery 发布到 npm 了。所以现在,你可以使用 npm install jquery 来下载 jQuery 代码。现在用 npm 来分享代码已经成了前端的标配。

 

(6)node.js和npm的安装

   npm由于内置在node.js中,所以就一并安装了。有时候我们只想单独安装npm,不想安装node.js,这种目前不支持。


【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。