node.jsday02
目录
前言
node.jsday02学习开始
一、复习
二、模块下的变量
- __dirname--当前模块的绝对路径
- __filename--当前模块的绝对路径 + 模块名称
三、模块的分类
- 模块分为自定义模块、核心模块、第三方模块
以路径开头
不以路径开头
文件模块
require('./circle.js')
用于引入自定模块
目录模块
require('./02_xin')
首先会到02_xin目录下寻找package.json文件中main对应的文件,如果找不到会自动引入index.js
require('xin')
首先会到当前目录下的node_modules目录中寻找xin,如果找不到,会一直往上一级目录下的node_modules目录中寻找;通常用于引入第三方模块
- 练习:在03_1.js中引入同一级目录下的03_2目录模块,包含一个叫做index.js文件,创建一个函数,传递任意3个数字,返回平均值;暴露这个函数出去。最后在主模块03_1.js中调用暴露的函数。
// 03_1.js // 引入统一级目录下03_2目录模块 var fn=require('./03_2') console.log(fn) // 调用暴露的函数 console.log( fn(5,9,7) )
// 03_2/index.js function fn(a,b,c){ return (a+b+c)/3 } // 暴露函数出去 module.exports = fn
四、包和npm
- CommonJS:是一种模块化规范,Node.js就是采用这种模块规范,例如:引入,暴露...
- 包(package):就是第三方模块,是目录模块的形式
- npm:是用来管理包的工具,使用npm可以下载安装、卸载、更新... 在Node.js安装的时候已经附带安装--npm -v
- 查看包的网址:npm
- 下载包前的准备:确保命令行的路径和目录的路径相同
4.1npm命令
npm init -y //会生成一个package.json文件,作为项目描述文件,可以记录下载安装的包
npm install 包名称 //载安装指定的包,会将下载的包保存到当前目录的node_modules目录中,如果不存在会自动创建目录;会生成一个package-lock.json文件,会记录所有包的信息;还会在package.json中记录当前下载的包。
npm install //自动去下载package.json中记录的包
- 其它npm命令:npm
五、URL(网址)
- URL:统一资源定位,互联网上的任何资源都有对应的网址,例如:网页、图片、视频、声音...
- https://www.baidu.com/s?wd=手机
- http://218.247.142.210:9999/products.html?kw=手机
http://218.247.142.210:9999/products.html?kw=手机 协议 域名/IP地址 端口 文件的路径 查询字符串
协议:http协议,客户端和服务器的通信协议
域名/IP地址:找服务器
端口:找服务器下某一个服务
文件路径:要请求的当前服务器上的文件
查询字符串:客户端向服务器传递参数的一种形式
参数名=参数值&参数名=参数值--a=1&b=2
new URL()
将一个网址转为对象,可以获取各个部分
searchParams
获取查询字符串部分
get('参数名')
获取参数名对应的值
/* // 网址 var str = 'http://www.codeboy.com:9999/list.html?kw=手机&a=2' // 将一个网址转为对象,为了获取各个部分 var obj = new URL(str) // console.log(obj) // 获取查询字符串部分 var qs = obj.searchParams console.log(qs) // 获取查询字符串传递的值 console.log( qs.get('kw'), qs.get('a') ) */ // 练习:获取以下URL中传递的参数值 // https://www.tmooc.cn:888/course/web.html?cid=2207&cname=nodejs // 最后打印以下格式 班级:WEBxxxx 课程名称:xxx var str = 'https://www.tmooc.cn:888/course/web.html?cid=2208&cname=JS' // 把网址转为对象 var obj = new URL(str) // console.log(obj) // 获取查询字符串部分 var qs = obj.searchParams console.log(qs) console.log(`班级名称:WEB${qs.get('cid')} 课程名称:${qs.get('cname')}`)
六、定时器
- 一次性定时器
开启
var timer=setTimeout(回调函数, 间隔时间)
当间隔时间到了,会调用一次回调函数
清除
clearTimeout(timer)
周期性定时器
开启
var timer=setInterval(回调函数, 间隔时间)
每隔一段时间,调用一次回调函数
清除
clearInterval(timer)
立即执行定时器
开启
var timer=setImmediate(回调函数)
清除
clearImmediate(timer
开启
process.nextTick(回调函数)
- 所有的定时器执行的过程中,都是将回调函数放入到主程序后的事件队列执行
/* //一次性定时器 //开启 // 3000毫秒后,会调用一次回调函数 var timer = setTimeout(()=>{ console.log('boom!!!') }, 3000) console.log(1) // 清除 clearTimeout(timer) // 周期性定时器 // 开启 var timer=setInterval(()=>{ console.log('hello') },3000) console.log(1) // 清除 clearInterval(timer) // 立即执行定时器 // 开启 console.log(2) setImmediate( ()=>{ console.log(1) } ) process.nextTick( ()=>{ console.log(4) } ) console.log(3) */ // 练习:开启周期性定时器,每隔3秒钟打印'hello',打印3次清除定时器。 // 声明变量用于计数 var count=0 var timer = setInterval(()=>{ console.log('hello') // 打印一次,数量加1 count++ // 判断数量是否为3 if(count === 3){ clearInterval(timer) } },3000)
课后练习
- 完成如下效果
总结
node.jsday02学习结束