NodeJs初步了解
一.Node.js简介
在介绍之前,先说下后台语言和前台语言的三点不同:
运行地点(运行在服务器,后台语言一般需要编译成字节码)、运行环境(后台语言需要运行服务区如IIS/tomcat。。前台语言浏览器就足够了)、运行时间(后台语言,收到http上行请求之后运行,然后发出下行响应;而前台语言是在客户端接收到下行响应之后才在客户端电脑执行)
而Node.js是一个可以让JavaScript运行在服务器端的平台,使用V8内核。
什么意思呢?就是说,JavaScript是一个典型的前台语言,在客户电脑中运行。但是2009年, Ryan Dahl 将Chrome浏览器中的V8内核(非常快速的JS引擎),移植到了服务器上,这样就等于说,可以用JS的语法,来开发服务器程序了。
但是,Node.js也有一些特点:
● 非阻塞I/O
● 事件驱动
什么是阻塞?线程在执行中遇到了磁盘读写操作,比如读取一个数据、文件、都叫做I/O. 那么I/O需要花费时间,所以这时操作系统就会剥夺这个线程的CPU控制权,所以这个线程就被阻塞了,后面的语句无法执行。当I/O结束之后,操作系统就会把这个线程的阻塞状态解除,继续后面语句,这种模式就叫做阻塞I/O.
非阻塞I/O,就是不阻塞读取文件。但有一个I/O语句的时候,那么此时只是将这个命令发送给操作系统,而进程将继续执行后面的语句,不被阻塞。当操作系统完成I/O操作的时候,将会以事件的方式,通知这个线程,线程将执行回调函数里面的语句。
所以,Node.js就是服务端语言中的一朵奇葩,采用单线程,非阻塞I/O模式,这就决定了他不适合做计算量大,逻辑较为复杂的程序。
Node.Js适合的类型有
● 数据密集型
投票、考试、站内信、问答社区……
这些系统,都需要大量的读取数据、文件
● 实时交互应用程序
聊天、股票、图文直播、你画我猜…
和HTML5的web socket就搭配的特别好
二.Hello World
Node.js非常好部署,无论是windows还是linux。
https://nodejs.org/download/ 从这个网站下载。
三.Express.js
express和Jquery一样,用来简化Node.js的编程方式
http://www.expressjs.com.cn/
npm就是包管理器,可以通过npm命令,非常方便的下载别人的包。
四.NoSQL
非关系型数据库,没有行、列的概念。用JSON形式的格式,来存储数据。
mongo 芒果数据库。