学习Node.JS 前基础知识的了解,以及node中的单线程-非阻塞IO 知识概述

Node概述

1. node.js 是一个开发平台,就像Java开发平台、.Net开发平台、PHP开发平台、Apple开发平台一样。

何为开发平台?有对应的编程语言、有语言运行时、有能实现特定功能的API (SDK: Software Development Kit)

2.该平台使用的编程语言是JavaScript 语言。

3. node.js 平台是基于Chrome V8 JavaScript 引擎构建。

4.基于node.js 可以开发控制台程序(命令行程序、CLI程序)、桌面应用程序(GUI) (借助node-webkit、 electron等框架实现)、Web 应用程序(网站)


PHP 开发技术栈: LAMP - Linux Apache MySQL PHP

node.js全栈开发技术栈: MEAN-MongoDB Express Angular Node.js

特点
1、Node是一个构建于Chrome V8引擎(只有堆和调用栈)之上的一个Javascript 运行环境
	Node是-个运行环境,作用是让js拥有开发服务端的功能

"Chrome V8引擎(只有堆和调用栈)所以说:没有浏览器提供的一些API,例如:DOM、BOM等"

2、Node使用事件驱动(当事件被触发时,执行传递过去的回调函数)、非阻塞IO模型(异步读写,当执行I/0操作时,不会阻塞线单线程)使得它非常的轻量级和高效。
	Node中绝大多数API都是异步(类似于ajax) ,目的是提高性能

3、js为单线程(一个调用栈便是一个单线程),node提供多线程处理

4、Node中的NPM是世界上最大的开源库生态系统(类似于github)

5、Node本身就是个web容器(服务器),所以无需要 Apache、IIS等。
node.js 中的单线程-非阻塞IO
补充知识:


代码演示,例如:
console.log("1")

function fun(){
    setTimeout(function(){
        console.log("2")
    },500)
}

function funny(){
    setTimeout(function(){
        console.log("3")
    },200)
}

fun()
funny()
console.log("4")

/*
	结果为:1 4 3 2

为什么不是1,2,3,4呢,按理说不是应该顺序执行吗?
这便是node是单线程工作,非阻塞IO模型(异步读写,不会阻塞线单线程)
*/

/*
	执行流程:1、首先调用栈先调用入口mian()函数,先将console.log("1")入栈,打印完毕后弹出栈中
			2、此时栈中剩余main()函数,再将fun()入栈,再出栈放入到node.js底层开启异步中放入队列中进行等待
			3、再将funny()入栈,再出栈也放入到WEB APIS中进行等待
			4、将console.log("4")入栈,打印完毕后弹出栈中
			5、此时main()函数也出栈,此时栈空
			6、再去callback queue中找,依次调用异步成功后的callback(),上面fun()和funny()函数因设置时间不同,所以先将funny()放入第一个callback(),后放入fun()第二个callback()
*/

JavaScript 是单线程工作,这意味着两段脚本不能同时运行,而是必须一个接一个地运行。我们人类是多线程工作。你可以使用多个手指打字,可以一边开车一边与人交谈。唯一会妨碍我们的是打喷嚏,因为当我们打喷嚏的时候,所有当前进行的活动都必须暂停(只是举例,不包括心跳啥的)。JavaScript由于单线程限制,防止阻塞,只能通过异步函数的调用方式,把需要延迟处理的事件放入事件循环队列。到目前为止,回调(callback)是编写和处理JavaScript程序异步逻辑的最常用方式。



可以自己进行编写代码,来去参考浏览器(与node.js运行原理相同)演示动画地址:http://latentflip.com/loupe
REPL介绍
1. REPL 全称: Read- Eval-Print-Loop (交互式解释器)
    R读取-读取用户输入,解析输入了Javascript数据结构并存储在内存中。
    E执行-执行输入的数据结构
    P打印-输出结果
    L循环-循环操作以上步骤直到用户两次按下ctrl-c 按钮退出。

2.在REPL中编写程序(类似于浏览器开发人员工具中的控制台功能)
	直接在控制台输入、node 命令进入REPL环境

3.按两次Control + C退出REPL界面或者输入、.exit~ 退出REPL界面
	按住control 键不要放开,然后按两下c键
  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值