对nodeJS早有耳闻,但是一直迟迟没有对它下手,虽然在项目中有用过nodejs,但也没有系统的学习过,这次我们就来探究一下。
node.js是什么东西?
- nodejs是以chrome v8为运行环境的一个平台,它不是一门语言,而是一个平台
- nodejs致力于是构建速度快,稳定的网络程序更简单
- 它具有事件驱动和非阻塞I/O的特色,使之轻量级并且高效率
- 它非常适合在分布式设备运行数据密集型实时应用程序
讲到这里,我们大概的明白了nodejs是一个平台,是一个环境,它是由chrome v8引擎来做底层支持,使用JavaScript来做语言支持,大概意思就是我们之前使用JavaScript运行在浏览器端去处理dom,bom操作等等,现在JavaScript运行在服务器去处理数据的增删改查,接受请求,发送数据,查找修改文件。
JavaScript以前是在浏览器端跑,现在有了nodejs就可以在后端跑,就像汽车原本只能在公路上跑,现在你给他装了nodejs,它现在可以在水里跑了一样.
安装开发环境
1.官网下载nodeJS安装包。
2.在下载完安装包后,按照默认程序安装。
3.检验是否安装成功,打开命令提示符,输入node – v,如果正常就会出现版本号的输出。
在安装nodejs时,也一并安装了npm, 命令行输入npm -v 查看npm版本。
这样环境就已经搭建完成,很简单。
接下来我们就来了解一下nodejs的基础知识
模块
Node应用是由模块组成的,Node遵循了CommonJS的模块规范,来隔离每个模块的作用域,使每个模块在它自身的命名空间中执行
Node.js 提供了 exports 和 require 两个对象,其中 exports 是模块公开的接口,require 用于从外部获取一个模块的接口,即所获取模块的 exports 对象。
创建一个模块1
2
3
4
5
6
7
8
9
10
11//hello.js
function Hello() {
var name;
this.setName = function(thyName) {
name = thyName;
};
this.sayHello = function() {
console.log('Hello ' + name);
};
};
module.exports = Hello; // 暴露出去,其他文件可以引入这个模块
引入这个模块1
2
3
4
5//main.js
var Hello = require('./hello'); // 引入hello文件
hello = new Hello();
hello.setName('BYVoid');
hello.sayHello();
这是我们自己写的一个简单的模块,nodejs还提供了一些原生的模块,如http、fs、path等,都是可以直接引入使用的,这些我们后面再介绍。
fs 处理文件的模块
fs模块用于对系统文件及目录进行读写操作
理解同步和异步方法
模块中所有方法都有同步和异步两种形式(异步方式主要是使用回调函数) , 例如读取文件内容的函数有异步的 fs.readFile() 和同步的 fs.readFileSync()。异步的方法函数最后一个参数为回调函数,回调函数的第一个参数包含了错误信息(error)。
建议使用异步方法,比起同步,异步方法性能更高,速度更快,而且没有阻塞
readFile读取文件
fs.readFile(filename,[option],callback) 方法读取文件。
例如:
1 | var fs = require('fs'); // 引入fs模块 |
WriteFile写入文件
使用fs.writeFile(filename,data,[options],callback)写入内容到文件。
例如:
1 | var fs = require('fs'); // 引入fs模块 |
文件删除
1 | // 异步 |
目录操作
1 | // 创建 new 目录 |
http模块
对于NodeJS来说比较重要的一块就是http模块,我们使用http模块可以自己搭建服务器,从而监听客户端的一些请求,和客户端合作接受请求并且返回数据。
http模块搭建简易服务器
1 | var http = require('http'); |
这就是一个简易的服务器,当然我们的业务场景肯定不会这么简单,下面继续扩展一下
1 | 'use strict'; |
pipe()管道方法自动读取文件内容并输出到HTTP响应
之后再来介绍里面具体的方法