Bootstrap

nodejs学习笔记———nodejs简介

一、是什么?

nodejs官网上第一句就是这么介绍的:Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境。 Node.js 使用了一个事件驱动、非阻塞式 I/O 的模型,使其轻量又高效。

首先:Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境,我们知道,js的在前端的运行环境一般是浏览器,现在又多了一个运行环境:nodejs,或者说是一个 JS 语言解释器,听nodejs好像是就是js语言开发的js库,其实不是,nodejs是c++开发的。

事件驱动:和js语言开启一个延时器一样的,当过了X秒后执行定时器的操作,这X秒的时间内,程序并没有停止运行,而是在执行其他的操作,这样就没有阻塞程序执行操作的进程。

如果是基于线程的话,那就必须等延时器里面的操作执行完后才能进行下一步操作。这样就阻塞了代码执行的效率,要提升效率,必须开多个线程。

传统的web server多为基于线程模型。你启动Apache或者什么server,它开始等待接受连接。当收到一个连接,server保持连接连通直到页面或者什么事务请求完成。如果他需要花几微妙时间去读取磁盘或者访问数据库,web server就阻塞了IO操作(这也被称之为阻塞式IO).想提高这样的web server的性能就只有启动更多的server实例。

相反的,Node.Js使用事件驱动模型,当web server接收到请求,就把它关闭然后进行处理,然后去服务下一个web请求。当这个请求完成,它被放回处理队列,当到达队列开头,这个结果被返回给用户。这个模型非常高效可扩展性非常强,因为webserver一直接受请求而不等待任何读写操作。(这也被称之为非阻塞式IO或者事件驱动IO)

二、nodejs特点

1. 它是一个Javascript运行环境

2. 依赖于Chrome V8引擎进行代码解释

3. 事件驱动

4. 非阻塞I/O

5. 轻量、可伸缩,适于实时数据交互应用

6. 单进程,单线程

7.NodeJS适合运用在高并发、I/O密集、少量业务逻辑的场景。

三、安装,运行

去官网下载nodejs并安装,npm包是nodejs的一个模块,安装了nodejs也就安装了npm。安装成功标志:可以查看nodejs的版本与npm的版本:

我们可以直接在命令行中运行js代码,也可以在在编辑器中编写js文件进行运行

在命令行中运行,首先要进入node环境,直接在一个目录下node 然后回车,退出node环境:ctrl+D

运行js文件stream.js:

进入该文件所在目录下执行node stream.js

/**文件复制操作*/
// 引入文件模块
var fs = require("fs");
// 创建一个可读流
var readstream = fs.createReadStream('output.txt')
// 创建一个可写流
var writestream = fs.createWriteStream('input.txt')
// 管道读写操作
readstream.pipe(writestream)
console.log('程序执行完毕')

执行结果:

你会看到output.txt里面的内容已经复制到input.txt文件内了

;