Node.js概述
- Node.js运行在服务器端的JS解释器,基于谷歌的V8引擎解释器,可以实现服务端操作,例如数据库操作,web服务器的创建。
- 对比JS和Node.js区别
- JS运行在客户端浏览器,存在多款浏览器,代码有兼容性问题;Node.js运行在服务器端,只有一个解释器,代码不存在兼容性问题
- 两者都有自定义对象和内置对象,不同的宿主对象
- JS用于浏览器端的交互效果,Node.js用于服务器端操作,例如数据库的操作,web服务器的创建等
- node.js下载地址
- 执行方式
node c:/xxx/../01.js
回车----脚本模式- 进入交互模式:
node
回车
退出交互模式:两次ctrl+c
或者.exit
回车
- Node.js特点
- 简单,避免过度设计
- 单线程逻辑处理
- 非阻塞的异步I/O处理
- 事件驱动编程
- 无锁机制,不会产生死锁
- 支持数万个并发连接
- Node.js适合的搭建以IO操作为主、响应速度块、易于扩展的网络应用:
- 命令行工具
- 带有GUI界面的本地应用程序
- 交互式终端程序
- 单元测试工具
- 基于社交网络的大规模Web应用
- Web Socket服务器
- TCP/UDP套接字程序
- 客户端Javascript编译器
- Node.js不舍和CPU密集型应用
- 深层次的嵌套和递归
- 复杂加密和解密算法
- 高可靠性运算
- 严格内存管理
- 数据挖掘和数据分析
全局对象-global
- Node.js:
在交互模式下创建的函数和声明的变量都是全局global下的,可以使用global
访问;例:global.a,global.fn()
在脚本模式下创建的函数和声明的变量都不是全局global下的,都是局部的(原因在模块中介绍) - JS:window
在JS下创建的函数和声明的变量都是全局下的,可以使用全局对象window
来访问;window.a,window.fn()
console对象
console.log(1);
//输出日志console.info(2);
//输出消息console.warn(3);
//输出警告console.error(4);
//输出错误console.time()
开始计时console.timeEnd()
结束计时
开始和结束计时打印的内容要保持一致。
练习:查看循环10000次,for,while,do-while的耗时情况
porcess对象
process
表示进程的对象process.arch
查看CPU架构process.platform
查看当前操作系统process.version
查看当前nodejs版本号process.env
查看当前环境变量有哪些
buffer对象
- 缓冲区:在内存中临时存储数据的区域,通常网络传输的数据都是在缓冲区。
- 创建Buffer
let buf=Buffer.alloc(5,'abcde');
- 转为字符串
buf.toString() String(buf)
模块
- 就是一个独立的功能体
- 在Node.js下规定,任意一个文件就是一个模块
- 分为自定义模块、核心模块、第三方模块
- Node.js自动为每一个文件添加了一个构造函数
(function (exports, require, module, __filename, __dirname) { //函数体内是程序员自己写的代码 //require:是一个函数,用于引入另一个模块 //exports:是导出的对象,如果要导出内容,都是往这个对象中添加 })