复习
-
ES6
块级作用域 let { }
不允许多次使用 let 声明参数扩展 function fn(a, b, c = 0) {}
箭头函数(回调函数)sort((a, b)=>a -b)
模板字符串
${JS表达式}
nodeJs
全局对象 global/process/console/Bufferprocess.arch/process.platform/process.env/
process.version/processs.pid/process.kill()console.log/console.info/console.error/console.time/
console.timeEndBuffer.alloc(5, “ABCDE”)
toString/String
模块
功能体 文件(模块)封装
(function(exports, require, module, __filename, __dirname) {
require: 引入模块
module: 当前模块
module.exports.a = 1; 要导出的内容
})
- 练习
创建两个模块 man.js(主模块) , circle.js(功能模块), 在功能模块下创建两个函数, 传递半径计算圆的周长和面积, 并导出两个函数, 在主模块下引入功能模块,并调用两个函数
- 模块系统
> require: 引入模块,返回一个对象
> module: 指代当前模块对象
> module.exports: 当前模块的导出对象
> exports: 与 module.exports 指向同一个对象
> __filename: 当前所在的模块目和模块名称
> __dirname: 当前模块的绝对目录
- 模块引入
见文件 [模块引入.png]
- 练习: 创建模块 3_1.js, 引入当前目录下的 03_2 目录,
在03_2目录有一个文件 fun.js, 导出一个函数 add(计算两个数字相加) 在03_1.js 中调用改函数
练习:
创建目录05, 在05下创建 05_1.js 引入不以路径开头目录模块05_2, 含有文件foo.js, 输入 XXX;
包(package)和 npm
CommonJS 是一种规范, JS 向服务器端发展就遵循了这个规范
包(package)就是一个目录模块
npm: 用于管理包的工具
切换目录
cd 完整的目录
在指定目录空白区域, 按住shift键, 单机鼠标右键
选择"在此处打开powershell窗口"
使用 npm 安装(下载)
npm install 包名称
自动安装到所在目录下的 node_modules 中
npm init -y 初始化一个 package.json 文件, 用于记录安装的包相关的信息
npm install
自动安装 package.json 中记录的包名称以及版本号
npm 官网: https://www.npmjs.com
核心模块
-
querystring 模块
查询字符串: 浏览器向服务器发请求 传递数据 的一种方式
jd.com/Search? keyword=手机 & enc=utf-8parse() 将查询字符串解析为对象
stringfiy() 将对象格式化为查询练习: 获取查询字符串的商品编号和商品名称
lid=5&pname=apple -
url 模块
http://www.tmooc.cn:80/detail.html?lid=5parse() 将 URL 解析为对象
protocol 协议
hostname 主机名(域名/IP地址)
port 端口号
pathname 请求文件的路径名称
query 查询字符串format() 将对象格式化为 URL
注意: query 中对应的是一个对象{ protocol: "https", hostname: "www.tmooc.cn", port: "8080", pathname: "detal.html", query: { lid: 5, pname: "dell" } }
全局函数
parseInt/parseFloat/isNaN/isFinite/eval…
(1)一次性定时器
开启:
const timer = setTimeout(回调函数, 时间);
当时间到了就会执行一次 回调函数; 单位是毫秒
清除
clearTimeout(timer)
(2)周期性定时器
开启:
const timer = setInterval( 回调函数, 间隔时间 )
每隔一段时间, 执行一次回调函数
清除
clearInterval(timer)
(3)立即执行
开启
const timer = setImmediate(callBack);
清除
clearImmediate(timer);
- 在事件队列的我开头执行
(4)立即执行
process.nextTick(callBack);
在执行栈所有代码的最后执行
fs 模块(文件操作)
文件包括文件和目录,统称为文件
fs.stat(path, callBack)
path: 文件路径
callBack: 回调函数, 用于获取结果
err: 可能产生的错误
stats: 具体文件状态
课后任务
-
整理思维导图
-
获取URL中查询字符串的数据
https://www.tmooc.cn:80/course.html?cid=17&cname=web -
同步和异步 HTTP 协议 http模块