1.Node.js概述
Node.js运行在服务器端的JS解释器
(1)对比JS
JS运行在客户端浏览器,存在多款浏览器,有兼容性问题;Node.js运行在服务器端,只有一种解释器 谷歌V8引擎,不存在兼容性问题
两者都有共同的内置(ES)对象,自定义对象,不同的宿主对象
JS用于操作网页,实现用户交互;Node.js用于服务器端开发,例如数据库访问,其它服务器的调用
(2)运行方式
脚本模式
node 拖拽脚本文件 回车
交互模式
node 回车 进入交互模式
两次ctrl+c 退出交互模式
(3)特点
是单线程运行逻辑,适合做I/O操作为主应用,支持数万个并发连接,例如:基于社交网络的大规模 WEB应用
不适合做CPU密集型的应用
2.全局对象
(1)global
检测一个变量或者函数是否为全局的
交互模式属于全局作用域,变量和函数都是全局的,可以通过global访问
脚本文件中不属于全局作用域,变量和函数都是局部的
(2)console对象
console.log(1) //打印日志
console.info(2) //打印消息
console.warn(3) //打印警告
console.error(4) //打印错误
console.time() //开始计时
console.timeEnd() //结束计时
开始计时和结束计时的值要保持一致
(3)process
进程对象,用来管理当前nodejs这个进程
启动任何一个软件都是代表对应的进程
process.arch 查看当前CPU架构
process.platform 查看操作系统
process.version 查看当前nodejs的版本号
process.pid 查看当前进程的编号
process.kill() 结束指定编号的进程
(4)Buffer
缓冲器、缓冲区,是内存中一块临时存储数据的区域
var buf=Buffer.alloc(5, 'abcde'); //创建buffer,分配空间大小为5个字节,并存储数据,每个汉字占3个 字节
buf.toString() //将buffer转为字符串
3.模块
每个文件代表一个模块,模块表示一个功能体
require: 是一个函数,用于引入其它的模块,得到对方导出的对象
module:当前模块的对象
module.exports: 当前模块导出的对象,默认是一个空对象,如果要导出哪些内容只需要放入到这个对 象
1.模块
__dirname 获取当前模块的绝对路径
__filename 获取当前模块的绝对路径+模块名称
2.模块分类
分为自定义模块、核心模块、第三方模块
以路径开头 不以路径开头
文件模块 require('./circle.js')
用于引入自定义模块 require('querystring')
用于引入官方提供核心模块
目录模块 require('./02_tao')
首先会到目录下寻找package.json文件中main对应文件,如 果没有的话会自动寻找index.js require('tao')
首先会到当前目录下的node_modules目录中寻找tao目录模 块,如果当前找不到会一直往上一级的node_modules目录中 寻找
用于引入第三方模块
3.包和npm
CommonJS:是一种规范,制定了Node.js的模块规范
包:指的第三方模块,是目录模块的形式
npm:是一个第三方模块,用来管理包的工具模块,在 Node.js安装的时候会附带安装
npm -v 查看版本号
网址:www.npmjs.com
(1)切换命令行的路径
cd 文件的路径 回车
如果有盘符的变化,再添加
盘符名称: 回车
在要进入的目录下的空白区域,按住shift,单击鼠标右键, 选择“在此处打开powershell窗口”
(2)使用npm
npm init -y 初始化一个package.json文件,用于描述项目,记录下载的包
npm install 包的名称 下载安装指定的包,将下载的包放 入到node_modules目录,在package.json中记录下载的这个 包,同时生成package-lock.json文件,用于记录所有的包的版本号
npm install 自动去下载安装package.json和package- lock.json中记录的包
其它npm命令: www.npmjs.cn
4.查询字符串querystring
const querystring=require('querystring')
浏览器向服务器发请求,传递数据的一种方式,位于网址中 问号(?)后的部分
kw=笔记本&price=5000
查询字符串模块:用于操作查询字符串的工具
parse() 将查询字符串解析为对象
练习:获取查询字符串中的用户名和密码
user=admin&password=123456
最后打印以下格式 ‘登录成功,欢迎:xxx ,当前密码:xxx’
5.URL
统一资源定位,互联网上的任何资源(html,css,js,图像,视频...)都有对应的URL
http://www.codeboy.com:9999/products.html?kw=华硕
协议 域名/IP地址 端口 文件在服务器的路径 查询字符串
URL模块用来处理URL的工具,
new URL() 将一个URL解析为对象,获取URL中的各个部分
6.定时器模块
提供一组全局函数
(1)一次性定时器
开启
var timer=setTimeout(回调函数, 间隔时间);
当间隔时间到了,会调用一次回调函数
清除
clearTimeout(timer)
(2)周期性定时器
开启
var timer=setInterval(回调函数, 间隔时间);
每隔一段时间,会调用一次回调函数
清除
clearInterval(timer)
(3)立即执行的定时器
开启
var timer=setImmediate(回调函数)
清除
clearImmediate(timer)
开启
process.nextTick(回调函数)
一旦开启无法清除
会将回调函数放入到事件队列,当主程序执行完再去执行事件队列
7.文件系统模块(fs)
用于操作服务器端文件
文件包括目录形式和文件形式。
mkdirSync(目录路径) 创建目录