1.模块
require() 引入模块,得到导出的对象
module.exports 当前模块导出的对象
__dirname 当前模块的绝对目录
__filename 当前模块的绝对目录+模块名称
2.模块分类
分为自定义模块、第三方模块、核心模块
| 以路径开头 | 不以路径开头 |
文件形式 | require('./circle.js') 用于引入自定义模块 | require('querystring') 引入官方提供的核心模块 |
目录形式 | require('./02_tao') 首先会到目录下寻找package.json文件中main属性对应的文件,如果找不到会自动找index.js | require('tao') 会到同一级的node_modules目录中寻找tao目录,如果找不到会一直往上一级的node_modules目录中寻找 用于引入第三方模块 |
练习:在03_1.js中引入同一级的目录模块03_2,目录下含有文件index.js,导出一个函数,传递任意两个数字返回最大值;最后再03_1.js中调用该函数
3.包和npm
包(package),指的是第三方模块
npm,用于管理包的工具模块,可以用于下载、上传、卸载、更新...
CommonJS规范:Node.js就是遵循这个规范,出现的模块概念。JS之所以作为服务器端语言,就是遵循这个规范。
下载地址:www.npmjs.com
(1)切换命令行的目录
方法1:
cd 粘贴目录的路径 回车
如果有盘符的变化,需要添加 盘符名称: 回车
方法2:
在要进入的目录下的空白区域,按住shift,单击鼠标右键,选择‘打开powershell窗口’
(2)使用npm
在Node.js安装的时候会附带安装
npm -v 查看版本号
npm init -y 初始化一个package.json文件,是项目描述文件,可以记录下安装的包
npm install 包的名称 下载安装包,将包放入到node_modules目录中,如果这个目录不存在会自动创建,同时会生成package-lock.json文件,记录所有包的版本号;在package.json中会记录安装的这个包的信息。
npm install 自动去安装package.json和package-lock.json中记录的包
npx -p node@8 node 文件路径 下载指定版本的nodejs,然后运行文件,运行完会将下载的nodejs删除
4.querystring模块
查询字符串:浏览器向服务器发请求传递数据的一种方式,位于浏览器的地址栏(URL),以问号(?)为分隔
https://search.jd.com/Search?keyword=电脑&enc=utf-8
查询字符串模块用于操作查询字符串的工具模块
parse() 将查询字符串解析为对象
练习:获取以下查询字符串中传递的数据
lid=5&num=1
5.URL模块
URL:统一资源定位,互联网上的任何资源都有对应的URL
http://www.codeboy.com:9999/product_details.html?lid=5
协议 域名/IP地址 端口 文件在服务器的路径 查询字符串
URL模块用于操作URL的工具模块
parse() 解析一个URL为对象,可以获取URL中的各个部分
练习:获取以下URL中传递的查询字符串数据
https://www.tmooc.cn:443/web/course.html?cid=2104&cname=nodejs
打印出 班级编号:2104
课程名称:nodejs
6.timer模块
定时器模块,提供一组全局函数
(1)一次性定时器
见day01笔记
(2)周期性定时器
开启 let timer = setInterval(回调函数,间隔时间) 每隔一段时间,调用一次回调函数 |
清除 clearInterval(timer) |
练习:使用周期性定时器每隔2秒钟打印hello,打印3次后结束。
(3)立即执行定时器
开启 let timer=setImmediate(回调函数) 清除 clearImmediate(timer) |
开启 process.nextTick(回调函数) |
setImmediate在事件队列的最前边,process.nextTick在主程序的后边,时间对列的前边
7.文件系统模块(fs)
服务器端的文件包含目录形式和文件形式
fs.statSync(文件路径) 查看文件的状态
isDirecotry() 是否为目录
isFile() 是否为文件
fs.mkdirSync(目录的路径) 创建目录
fs.rmdirSync(目录的路径) 删除目录
课后任务
(1)复习今天内容,整理思维导图
(2)练习:开启一次性定时器,3秒以后创建1~10,10个目录;15秒以后再把这10个目录删除。
(3)预习nodejs第3天 同步和异步
//!开启一次性定时器,3秒以后创建1~10,10个目录;15秒以后再把这10个目录删除。
let fs = require('fs');
setTimeout(()=>{
var i =1;
while(i<=10){
fs.mkdirSync(`./${i}`);
i++;
}
setTimeout(()=>{
var j =1;
while(j<=10){
fs.rmdirSync(`./${j}`);
j++;
}
},15000);
},3000);