全局对象、模块
1 Node.js概述
1.1 Node.js概述
1.1.1 Node.js定义
JS是经ECMA统一标准的脚本语言,狭义上的JS指浏览器内置的JS解释器中运行的,主要用途是操作网页内容以实现用户交互;
Node.js由Node.js Foundation维护,基于Google V8引擎的JS运行环境,可以完全脱离浏览器编写独立的服务器端程序。主要用于文件读写、网络访问、加密压缩、数据库操作等
官网:www.nodejs.org/www.nodejs.cn
JavaScript既可以编写客户端应用,也可以编写服务器端应用
JavaScript对象包括ES原生对象、用户自定义对象、宿主对象(浏览器:DOM&BOM对象;Node.js:Node.js扩展对象)
1.1.2 Node.js与JavaScript
1.1.3 安装Node.js
官网:www.nodejs.org
手册网址:nodejs.org/api
1.1.4 运行Node.js
交互模式(REPL模式):命令行直接输入node进入,无需引入Node.js自带的模块;
脚本模式:除了全局对象及其相关成员,其他模块声明的对象和方法必须使用require()引入
1.2 Node.js使用
1.2.1 Node.js体系结构
1.2.2 Node.js语法概览
Node.js与JS在数据类型,变量常量,运算符、逻辑结构、函数作用域和闭包、对象和原型、对象分类等内容完全一致。最大的不同点体现在解释器所提供的扩展对象。
1.2.3 数据类型
- 原始类型:stirng、number、boolean、null、undefined;
- 引用类型:
ES核心对象->Global、String、Number、Boolean、Date、Array、Error、Function、Object、RegExp
Node.js对象->Buffer、ReadStream、ClientRequest… - 自定义对象
Node.js不支持任何BOM对象,window、document…也不支持DOM对象,Element、Image、TableRow,…
1.2.4 Node.js的特点
- 简单,避免过度设计
- 单线程逻辑处理
- 非阻塞异步I/O处理
- 事件驱动编程
- 无锁机制,不会产生死锁
- 支持数万个并发连接
适合搭建以IO操作为主、响应速度快、易于扩展的网络应用。如:命令行工具、带GUI界面的本地应用程序、交互式终端程序、单元测试工具、基于社交网络的大规模Web应用、Web Socket服务器、TCP、UDP套接字程序、客户端Javascript编译器;
不适合CPU密集型应用,如:深层次嵌套和递归、复杂加密和解密算法、高可靠性运算、严格内存管理、数据挖掘和数据分析