一、模块中的变量
__dirname 获取一个模块的绝对路径
__filename 获取一个模块的绝对路径+模块名称
二、模块系统
模块系统下分为三类模块:自定义模块、核心模块、第三方模块
以路径开头 | 不以路径开头 | |
---|---|---|
文件模块 | require(‘./circle.js’) 用于引入自定义模块 | |
目录模块 | require(‘./02_xin’) 首先会到目录中寻找模块说明文件package.json,再查找文件中main属性对应的文件;如果找不到文件会自动寻找index.js | require(‘04_nan’) 首先会到当前目录下的node_modules目录中寻找要引入的目录模块,如果没有找到会一直往上一级目录下的node_modules目录中寻找;用于引入第三方模块 |
练习:在03_main.js模块中引入同一级目录下的目录模块03_yu,目录模块中包含文件index.js,在文件中创建一个函数,传递任意3个数字,返回总和;将函数暴露出来;最后再主模块中调用函数。
练习:在04_main.js模块中引入同一级目录下的目录模块04_nan,目录模块中包含文件index.js,在文件中创建一个函数,传递任意1个数字,返回1~任意数字之间所有整数的和;将函数暴露出来,最后再主模块中调用函数。
三、包和NPM
CommonJS:是一种模块化规范,Node.js采用了这种规范,例如require和module.exports都是基础这种规范
包(package):是指第三方模块,都是目录模块的形式
NPM:是Node.js包管理器,用来管理第三方模块,例如:下载安装、升级、卸载、上传… NPM在Node.js安装过程中已经附带安装
npm -v 查看NPM版本号
www.npmjs.com
NPM命令
npm init -y 初始化生成一个package.json文件,作为项目说明文件,可以记录安装的包
npm install 包名称 下载安装指定的包,会将下载包放入到node_modules目录中,同时会在package.json中记录当前这个包;在package-lock.json中记录所有的包的信息(包括依赖的包)。
练习:使用npm下载安装包express
npm install 自动下载package.json中记录的包
npm set registry https://registry.npmmirror.com 设置npm下载的服务器为国内
npm get registry 查看下载的服务器
其它npm命令 www.npmjs.cn
四、URL
网址:统一资源定位器,互联网上的任何资源(html、css、图像、声音、视频)都有对应的网址
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-f7ByOZH1-1680865565411)(assets/1680852406635.png)]
协议(HTTP):规定数据传输的方式
域名(IP):用于在网络环境中找到主机
端口(port):通常会省略,在网络主机上,标识一个进程(应用程序),例如http默认使用80,https默认使用443
资源路径:要请求的服务器端资源
查询参数:客户端向服务器端传递的参数,格式为
参数名=参数值&参数名=参数值
锚点:用于定位到当前网页的指定位置
new URL(网址) //创建一个URL对象,可以将一个网址转为对象,分离各个部分
searchParams //获取网址中查询参数部分
get(参数名) //获取参数名对应的参数值
练习:获取以下URL中查询参数的值,最后打印输出以下格式
https://www.tmooc.cn/course/web.html?cid=2302&cname=nodejs#top
班级编号:WEBxxxx 课程名称:xxxx
var str = 'https://www.tmooc.cn/course/web.html?cid=2302&cname=nodejs#top'
var obj = new URL(str)
// 获取查询参数部分
var qs = obj.searchParams
console.log(qs)
console.log(`班级编号:WEB${qs.get('cid')} 课程名称:${qs.get('cname')}`)
五、定时器
1.一次性定时器
//开启:当间隔时间到了,会调用一次回调函数,单位是毫秒
var timer = setTimeout(回调函数, 间隔时间)
//清除已经开启的定时器
clearTimeout(timer)
2.周期性定时器
// 开启:每个一段时间,调用一次回调函数
var timer = setInterval(回调函数, 间隔时间)
// 清除开启的定时器
clearInterval(timer)
练习:每隔3秒钟打印‘滴滴滴’
3.立即执行定时器
// 开启
var timer = setImmediate(回调函数)
// 清除
clearImmediate(timer)
// 开启后,没有清除的方法
process.nextTick(回调函数)
JS是单线程运行逻辑,所有的程序默认在一个线程执行,出现排队执行
所有的定时器中,回调函数会在主线程后事件队列中执行
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-QY16CIvp-1680865565412)(assets/1680860749182.png)]
同步执行和异步执行
同步执行:在主线程执行,会阻止后续代码执行
异步执行:会将回调函数放入到事件队列执行,不会阻止主线程后续代码执行,定时器是异步执行
练习:开启周期性定时器,每隔3秒钟打印hello,打印3次以后清除定时器。
练习:开启周期性定时器,每隔1秒钟获取当前的时间,最后显示以下效果:
今天是xxxx年xx月xx日 xx:xx:xx 星期几
每隔1秒渲染一次