84、nodejs

1、nodejs产生的原因

  • nodejs出现之前,javascript主要应用于浏览器端;
  • Node第一次把JavaScript带入到后端服务器开发,它还提供了运行引擎与相关API,所以nodejs是javascript开发本地应用、服务器应用的一个开发套件;
  • 注意了,因为nodejs采用了javascript的语法,所以nodejs不是一种开发语言。

2、浏览器端JS和Node端JS的区别

(1)相同点:就是都使用了Javascript这门语言来开发。

(2)不同点:

  • 浏览器端的JS,受制于浏览器提供的接口。比如浏览器提供一个弹对话框的Api,那么JS就能弹出对话框。浏览器为了安全考虑,对文件操作,网络操作,操作系统交互等功能有严格的限制,所以在浏览器端的JS功能无法强大,就像是压在五行山下的孙猴子。
  • NodeJs完全没有了浏览器端的限制,让Js拥有了文件操作,网络操作,进程操作等功能,和Java,Python,Php等语言已经没有什么区别了。而且由于底层使用性能超高的V8引擎来解析执行,和天然的异步IO机制,让我们编写高性能的Web服务器变得轻而易举。Node端的JS就像是被唐僧解救出来的齐天大圣一样,法力无边。

3、理解NodeJS的事件驱动和异步IO

  1. NodeJS在用户代码层只启动一个线程来运行用户的代码
  2. 每当遇到耗时的IO操作,比如文件读写,网络请求,则将耗时操作丢给底层的事件循环去执行,而自己则不会等待,继续执行下面的代码
  3. 底层的事件循环执行完耗时IO时,会执行我们的回调函数来作为通知。

例如:

同步就是你去银行排队办业务,排队的时候啥也不能干(阻塞);

异步就是你去银行用取号机取了一个号,此时你可以自由的做其他事情,到你的时候会用大喇叭对你进行事件通知。而银行系统相当于底层的事件循环,不断的处理耗时的业务(IO)。

NodeJs只有一个线程用来执行用户代码,如果耗时的是CPU计算操作,比如for循环100000000次,那么在循环的过程中,下面的代码将会无法执行,阻塞了唯一的一个线程。Node适合大并发的IO处理,不适合CPU密集型的计算操作。

4、NodeJs能做什么?

  • 浏览器端写JS,其实就是使用浏览器给我们提供的功能和方法来写代码
  • Node端写JS,就是用Node封装好的一系列功能模块来写代码。NodeJS封装了网络,文件,安全加密,压缩等等很多功能模块,我们只需要学会常用的一些,然后在需要的时候去查询文档即可。

 4.1 npm介绍

npm是Nodejs自带的包管理器,当你安装Node的时候就自动安装了npm。通俗的讲,当我们想使用一个功能时,而Node本身没有提供,那么我们就可以从npm上去搜索并下载这个模块

每个开发语言都有自己的包管理器,比如,java有maven,python有pip。而npm是目前世界上生态最丰富,可用模块最多的一个社区,没有之一。

基本上,你所能想到的功能都不用自己手写了,它已经在npm上等着你下载使用了。npm的海量模块,使得我们开发复杂的NodeJs的程序变得更为简单。

学习2个知识点:

  • 怎么生成package.json
  • 怎么从npm安装包,并保存到package.json文件中?

5、Nodejs的优点和缺点

  1. 优点:Node.js 使用了一个事件驱动、非阻塞式 I/O 的模型,异步编程,使其轻量又高效。
  2. 缺点:单进程,单线程,只支持单核cpu,不能充分的利用多核cpu服务器。一旦这个进程崩掉,那么整个web服务就崩掉了。

参考:https://blog.csdn.net/www294993741/article/details/84585148

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值