(一)认识nodejs
1.为什么 JavaScript 可以在浏览器中被执行?
不同的浏览器使用不同的 JavaScript 解析引擎
| 浏览器 | 引擎 |
|---|---|
| Chrome 浏览器 | V8 (性能最好) |
| Firefox 浏览器 | OdinMonkey(奥丁猴) |
| Safri 浏览器 | JSCore |
| IE 浏览器 | Chakra(查克拉) |
- 每个浏览器都内置了
DOM、BOM这样的 API 函数,因此,浏览器中的 JavaScript 才可以调用它们。 - 浏览器是 JavaScript 的前端运行环境。Node.js 是 JavaScript 的后端运行环境。
- js放到浏览器中运行可进行前端开发,放到node环境中运行可进行后端开发
- Node.js 中无法调用 DOM 和 BOM 等浏览器内置 API。
2. 终端中的快捷键
| 按键 | 功能 |
|---|---|
| ↑ 键 | 快速定位到上一次执行的命令 |
| tab 键 | 快速补全路径 |
| esc 键 | 快速清空当前已输入的命令 |
| cls 命令 | 清空终端 |
(二)fs文件系统模块
fs 模块是 Node.js 官方提供的、用来操作文件的模块。它提供了一系列的方法和属性,用来满足用户对文件的操作需求。
1.readFile文件读取
- 语法:
readFile(path[,options],callback)- 参数1:读取文件的存放路径
- 参数2:读取文件时候采用的编码格式,一般默认指定 utf8
- 参数3:回调函数,拿到读取失败和成功的结果 err dataStr
// 1. 导入 fs 模块,来操作文件
const fs = require('fs')
// 2. 调用 fs.readFile() 方法读取文件
fs.readFile('./files/11.txt', 'utf8', function (err, dataStr) {
// 2.1 打印失败的结果
// 如果读取成功,则 err 的值为 null
// 如果读取失败,则 err 的值为 错误对象,dataStr 的值为 undefined
console.log(err)
console.log('-------')
// 2.2 打印成功的结果
console.log(dataStr)
})
2.writeFile文件写入
- fs.writeFile()方法只能用来创建文件,不能用来创建路径
- 重复调用fs.writeFile()写入同一个文件,新写入的内容会覆盖之前的旧内容
- 语法:
writeFile(path,data[,options],callback)- 参数1:必选,文件的存放路径。
- 参数2:必选参数,写入的内容。
- 参数3:可选参数,写入文件格式,默认值是 utf8。
- 参数4:必选参数,文件写入完成后的回调函数。
// 1. 导入 fs 文件系统模块
const fs = require('fs')
// 2. 调用 fs.writeFile() 方法,写入文件的内容
fs.writeFile(__dirname +'/files/3.txt', 'ok123', function(err) {
// 2.1 如果文件写入成功,则 err 的值等于 null
// 2.2 如果文件写入失败,则 err 的值等于一个 错误对象
// console.log(err)
if (err) {
return console.log('文件写入失败!' + err.message)
}
console.log('文件写入成功!')
})
3.读写案例
4.动态路径
__dirname表示当前文件所处的目录
(三)path路径模块
const path = require('path')
1. 路径拼接path.join([...paths])
path.join([...paths])方法,用来将多个路径片段拼接成一个完整的路径字符串
2.路径的文件名path.basename(path[,ext])
- 用来从路径字符串中,将文件名解析出来
- path: 必选参数,表示一个路径的字符串
- ext :可选参数,表示文件扩展名
3. 获取路径中的文件扩展名path.extname(路径)
4. 案例
(四)http模块
http概念
域名和域名服务器
端口号
创建服务器
// 1. 导入 http 模块
const http = require('http')
// 2. 创建 web 服务器实例
const server = http.createServer()
// 3. 为服务器实例绑定 request 事件,监听客户端的请求
server.on('request', function (req, res) {
console.log('Someone visit our web server.')
})
// 4. 启动服务器
server.listen(8080, function () {
console.log('server running at http://127.0.0.1:8080')
})
解决中文乱码的问题
(五)模块化
(六)包与npm
包的语义化规范
包管理配置文件package.json
开发自己的npm包
模块化拆分
发布npm包
模块的加载机制
(七)express
nodemon
(八)中间件
中间件的分类
自定义中间件
解决跨域
JSONP
(九)数据库
创建数据库字段
select语句
排序
count
-- 通过 * 把 users 表中所有的数据查询出来
-- select * from users
-- 从 users 表中把 username 和 password 对应的数据查询出来
-- select username, password from users
-- 向 users 表中,插入新数据,username 的值为 tony stark password 的值为 098123
-- insert into users (username, password) values ('tony stark', '098123')
-- select * from users
-- 将 id 为 4 的用户密码,更新成 888888
-- update users set password='888888' where id=4
-- select * from users
-- 更新 id 为 2 的用户,把用户密码更新为 admin123 同时,把用户的状态更新为 1
-- update users set password='admin123', status=1 where id=2
-- select * from users
-- 删除 users 表中, id 为 4 的用户
-- delete from users where id=4
-- select * from users
-- 演示 where 子句的使用
-- select * from users where status=1
-- select * from users where id>=2
-- select * from users where username<>'ls'
-- select * from users where username!='ls'
-- 使用 AND 来显示所有状态为0且id小于3的用户
-- select * from users where status=0 and id<3
-- 使用 or 来显示所有状态为1 或 username 为 zs 的用户
-- select * from users where status=1 or username='zs'
-- 对users表中的数据,按照 status 字段进行升序排序
-- select * from users order by status
-- 按照 id 对结果进行降序的排序 desc 表示降序排序 asc 表示升序排序(默认情况下,就是升序排序的)
-- select * from users order by id desc
-- 对 users 表中的数据,先按照 status 进行降序排序,再按照 username 字母的顺序,进行升序的排序
-- select * from users order by status desc, username asc
-- 使用 count(*) 来统计 users 表中,状态为 0 用户的总数量
-- select count(*) from users where status=0
-- 使用 AS 关键字给列起别名
-- select count(*) as total from users where status=0
-- select username as uname, password as upwd from users