NodeJs概述

257 阅读3分钟

###ES6新特征

ES6 ECMAScript6 7 8...

ES2015 ES2016 ES2017 ES2018

####第六套标准规范

  • (1)块级作用域

let声明的变量不存在提升,不允许反复声明。

在块级作用域下使用let声明的变量是局部变量,不能被其它作用域访问

if、else、while、for...所有大括号中都是块级作用域。

练习:使用let声明变量,计算1~100之间所有整数的和。

  • (2)函数增强

可以给形参设置默认值,如果调用函数的时候不提供实参,则自动使用默认值

function add(a,b,c=0){
  console.log(a+b+c);
}
add(4,5);
 (3)箭头函数
  简化了匿名函数的写法,但不等价于匿名函数,两者有区别,后期JS高级后会说到。
sort( (a,b)=>{
  return a-b;
} )

如果箭头函数的函数体中只有一行代码,并且是return形式的,则可以简化为 sort( (a,b)=>a-b )

练习: 使用函数表达式创建函数,其中匿名函数使用箭头函数;计算任意两个数字之间所有整数的和。

  • (4)模板字符串 解决了字符串的拼接 这就是模板字符串,里边可以写任意的字符不需要拼接 ${js表达式}

练习:创建一个员工对象,包含有编号,姓名,性别(1/0),工资

打印出 编号:2 姓名:xxx 性别:男 工资:8199.00¥

2.Node.js概述

Node.js运行在服务器端的JS解释器,基于谷歌的V8引擎解释器,可以实现服务端操作,例如数据库操作,web服务器的创建。

  • (1)对比JS和Node.js的区别

JS运行客户端浏览器,存在多款浏览器,代码有兼容性问题;Node.js运行在服务器端,只有一个解释器,代码不存在兼容性问题。

两者都有自定义对象和内置对象,不同的宿主对象。

JS用于浏览器端的交互效果,Node.js用于服务器端操作,例如数据库的操作,web服务器的创建等

  • (2)官方网站

nodejs.org

nodejs.cn 中文镜像

  • (3)执行方式

脚本模式

node c:/xampp/.../02.js 回车

交互模式

node 回车 进入交互模式

退出交互模式

两次ctrl+c 或者 .exit 回车

  • (4)应用场景

属于I/O密集型,可以解决数万个并发连接,适合做基于社交网络的大规模web应用

3.全局对象

global

Node.js

在交互模式下创建的函数和声明的变量都是全局global下的,可以使用global访问;global.a global.fn()

在脚本模式下创建的函数和声明的变量都不是全局global下的,都是局部的 JS : window

在JS下创建的函数和声明的变量都是全局下的,可以使用全局对象window来访问; window.a window.fn()

4.console对象

console.log(1); //输出日志

console.info(2);//输出消息

console.warn(3);//输出警告

console.error(4);//输出错误

console.time() 开始计时

console.timeEnd() 结束计时

开始和结束计时打印的内容要保持一致。

练习:查看循环10000次,for,while,do-while的耗时情况

5.process对象

process表示进程的对象

process.arch 查看CPU架构

process.platform 查看当前的操作系统

process.version 查看当前nodejs版本号

process.env 查看当前环境变量有哪些

process.kill(编号) 结束指定编号的进程

6.Buffer对象

缓冲区:在内存中临时存储数据的区域,通常网络传输的数据都是在缓冲区。

创建Buffer

 let buf=Buffer.alloc(5,'abcde');

转为字符串

 buf.toString()  String(buf)

7.模块

就是一个独立的功能体

在Node.js下规定,任意一个文件就是一个模块

分为自定义模块、核心模块、第三方模块

Node.js自动为每一个文件添加了一个构造函数(以下红色部分就是自动添加的)

(function (exports, require, module, __filename, __dirname) {
 程序员自己写的代码
})

require: 是一个函数,用于引入另一个模块

exports: 是导出的对象,如果要导出内容,都是往这个对象中添加