1:Node.js是一门基于ECMASctipt开发的服务器端语言,提供了(前端JS没有的)很多扩展对象
前端js:
1.ES原生对象:String,Number,Boolean,Math,Date,Error,Function,Object,Array,RegExp
2.BOM&DOM
3.自定义对象
Node.js:
1.ES原声对象
2.Node.js内置对象
3.大量的第三方对象
4.自定义对象
- .Node.js可以编写独立的服务器应用,无需借助于其他web服务器
Node.js的意义:
- 执行效率比PHP/JSP/JAVA要快
- 用一种语言同一了前后端开发。
全栈工程师
NODE.js特点:
- 单线程逻辑处理
- 非阻塞
- 异步I/O处理
- 事件驱动编程
2.Node.js的两种运行方式:
- 交互模式(用于测试): 读取用户输入,执行运算,输出执行结果,继续下一循环;执行方法:输入一行js语句,回车执行
- 脚本模式(用于开发):把要执行的所有JS语句编写在一个独立的js文件中,一次性的提交给node.js处理,可以不是.js后缀的文件;执行方法:node d:xxxx.js
3.Node.js的基础语法及新特性:
- 数据类型:
- 原始类型:string,number,boolean...(原始数据直接赋值即可)
- 引用类型:ES原生对象、Node.js对象、自定义对象(引用类型通常需要使用new关键字创建)
- 模板字符串 (ES6中提供的一种新的字符串形式)
- 使用模板方式定义字符串,数据可以实现换行
- 可以使用${}拼接变量,并且可以执行运算
- 严格模式(ES5中新增的一种比普通模式更为严格的js运行模式)
- 使用方法:
- 在整个脚本文件中使用严格模式,在脚本文件的开头:"use strict";用于新项目
- 在单个函数内启用严格模式;用于老项目维护
- 规则:
- 修改常量的值时非法的--将静默失败升级为错误
- 不允许对未声明的变量进行赋值
- 匿名函数的this不再指向全局
- 使用方法:
- 变量的作用域(全局作用域、局部作用域、块级作用域(ES6中专有))
- 块级作用域:只在当前代码块中使用
- 代码块:任何一个{}都是一个代码块,if/for/while...
- 代码块中使用“let”声明块级作用域变量,出了代码块遍不可使用。
- 循环结构
- for...of...(ES6):循环数组的元素值
- 函数(匿名函数的自调)
- 箭头函数,只用于匿名函数,箭头函数中不存在arguments对象
- 对象
- 创建对象的方式:
- 对象字面量
- 构造函数方式
- 原型继承方式
- class方式--ES新增
- class类:是一组相似对象的属性的行为的抽象集合(描述一类事物统一的属性和功能的结构)
- 。。
- 全局对象
- Node.js中的全局对象是Global;
- 在交互模式下,声明的全局变量是global的成员,--全局对象的污染;
- 在脚本模式下,声明的全局变量不是global的成员,--避免了全局对象的污染
- global对象的成员属性和成员方法
- console用于向stdout(标准输出)和stderr(标准错误)输出信息。 (note:console中的成员方法是异步的,输出顺序和书写顺序不一定完全一致)
- console.log() // 向stdout输出日志信息
- console.info() //同上
- console.error() // 向stderr输出错误信息
- console.warm() //同上
- console.trace() //向stderr输出栈轨迹信息
- console.dir() //向srdout输出指定对象的字符串表示
- console.assert() // 断言,为真的断言,错误信息不回输出;为假的断言会抛出错误对象,并输出错误信息,终止脚本的运行,可以自定义错误信息。
- console.time() console.timeEnd() // 测试代码的执行时间,与console.timeEnd()配合使用
- process进程
- console用于向stdout(标准输出)和stderr(标准错误)输出信息。 (note:console中的成员方法是异步的,输出顺序和书写顺序不一定完全一致)
- 创建对象的方式: