介绍
npm(node package manage)node 包 管理器。管理node包的工具。
包是什么?包就是模块。(包约等于模块,一个包可以包括一个或多个模块)
npm这个工具,在安装 node 的时候,就已经安装到你的计算机中了。
命令行中执行: npm -v
,如果看到版本号,说明安装成功了。
什么是第三方模块
非node自带的模块。也不是自定义的模块。
是别人写的模块,然后发布到npm网站,我们可以使用npm工具来下载安装别人写的模块。
第三方模块,都是在node核心模块的基础之上,封装了一下,实现了很多非常方便快速简洁的方法。
npm的作用
管理node模块的工具。
本地模块
安装本地模块,需要使用npm工具初始化。
npm init -y
# 或
npm init
# 然后一路回车
//初始化之后,会在项目目录中生成 package.json 的文件。
安装卸载第三方模块的命令
下载安装第三方模块
# 正常的下载安装
npm install 模块名
# 简写install为i
npm i 模块名
# 一次性安装多个模块
npm i 模块名 模块名 模块名
卸载模块
npm uninstall 模块名
npm un 模块名
npm un 模块名 模块名 模块名
怎样使用第三方模块
和使用内置模块一样,需要使用 require
加载模块
moment 模块
// moment是一个专门处理时间日期的模块
// 使用模块之前,必须加载
const moment = require('moment');
// 设置语言环境
moment.locale('zh-cn', {
months: '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split('_'),
monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split('_'),
weekdays: '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'),
weekdaysShort: '周日_周一_周二_周三_周四_周五_周六'.split('_'),
weekdaysMin: '日_一_二_三_四_五_六'.split('_'),
longDateFormat: {
LT: 'HH:mm',
LTS: 'HH:mm:ss',
L: 'YYYY-MM-DD',
LL: 'YYYY年MM月DD日',
LLL: 'YYYY年MM月DD日Ah点mm分',
LLLL: 'YYYY年MM月DD日ddddAh点mm分',
l: 'YYYY-M-D',
ll: 'YYYY年M月D日',
lll: 'YYYY年M月D日 HH:mm',
llll: 'YYYY年M月D日dddd HH:mm'
},
meridiemParse: /凌晨|早上|上午|中午|下午|晚上/,
meridiemHour: function (hour, meridiem) {
if (hour === 12) {
hour = 0;
}
if (meridiem === '凌晨' || meridiem === '早上' ||
meridiem === '上午') {
return hour;
} else if (meridiem === '下午' || meridiem === '晚上') {
return hour + 12;
} else {
// '中午'
return hour >= 11 ? hour : hour + 12;
}
},
meridiem: function (hour, minute, isLower) {
const hm = hour * 100 + minute;
if (hm < 600) {
return '凌晨';
} else if (hm < 900) {
return '早上';
} else if (hm < 1130) {
return '上午';
} else if (hm < 1230) {
return '中午';
} else if (hm < 1800) {
return '下午';
} else {
return '晚上';
}
},
calendar: {
sameDay: '[今天]LT',
nextDay: '[明天]LT',
nextWeek: '[下]ddddLT',
lastDay: '[昨天]LT',
lastWeek: '[上]ddddLT',
sameElse: 'L'
},
dayOfMonthOrdinalParse: /\d{1,2}(日|月|周)/,
ordinal: function (number, period) {
switch (period) {
case 'd':
case 'D':
case 'DDD':
return number + '日';
case 'M':
return number + '月';
case 'w':
case 'W':
return number + '周';
default:
return number;
}
},
relativeTime: {
future: '%s内',
past: '%s前',
s: '几秒',
ss: '%d秒',
m: '1分钟',
mm: '%d分钟',
h: '1小时',
hh: '%d小时',
d: '1天',
dd: '%d天',
M: '1个月',
MM: '%d个月',
y: '1年',
yy: '%d年'
},
week: {
// GB/T 7408-1994《数据元和交换格式·信息交换·日期和时间表示法》与ISO 8601:1988等效
dow: 1, // Monday is the first day of the week.
doy: 4 // The week that contains Jan 4th is the first week of the year.
}
});
// console.log(moment().format("YYYY-MM-DD HH:mm:ss"))
// console.log(moment().format("L"))
// console.log(moment([2021, 0, 22, 09, 30, 25]).fromNow())
// console.log(moment(13432542333).fromNow())
console.log(moment('2020-11-10T15:49:05.000Z').fromNow())
jsonwentoken模块
jsonwebtoken模块的作用是生成token字符串。
// 加载模块
const jwt = require('jsonwebtoken');
// console.log(jwt.sign(必填, 必填, 可选, 可选));
// Bearer 不属于token的内容,只是表示token的格式。
// jwt.sign()
// 1. 参数1:对象,要在token保存的数据
// 2. 参数2:加密的字符串,类似于一个钥匙。随便填;后续解密token的时候,需要使用它
// 3. 参数3:对象,配置项,比如配置一下过期时间
// 4. 参数4:生成token后的回调函数
// console.log('Bearer ' + jwt.sign(
// { id: 1, username: 'zs' },
// 'shhhhh',
// { expiresIn: '2h' },
// // (err, abc) => console.log(abc)
// ));
jwt.sign({ id: 1 }, 'sdfsdf', { expiresIn: '2h' }, (err, result) => {
if (err) throw err;
console.log('Bearer ' + result);
});
nodemon模块
安装命令
npm i nodemon -g
nodemon的作用:
代替node命令,启动服务的工具
当更改代码之后,nodemon会自动重启服务。
MySQL数据库
什么是数据库
数据库 (database) 是用来组织、存储和管理数据的仓库。
常见的数据库及分类
最常见的数据库
MySQL 数据库
Oracle 数据库(收费)
SQL Server 数据库(收费)
Mongodb 数据库(Community + Enterprise)
其中,MySQL、Oracle、SQL Server 属于传统型数据库(又叫做:关系型数据库 或 SQL 数据库),这三者的 设计理念相同,用法比较类似。
安装MySQL及Navicat
安装phpStudy,或者wampserver。二选一。
安装操作MySQL的图形化工具(Navicat)
导入导出数据表
导出
在数据表名字上,比如 student
上,右键 --> 转储SQL文件 --> 结构和数据,选择保存位置保存即可。
导入
在数据库名
上面 --> 右键 --> 运行SQL文件 --> 选择SQL文件,运行即可完成导入
导入注意事项,表名不能重复,如果重复会发生覆盖。
SQL语句
查询数据
-- 基本的查询语法
SELECT 字段1,字段2,... FROM 表名
-- 不区分大小写
select 字段,字段,.... from 表名
-- 查询所有的字段
SELECT * FROM 表名
-- 带条件的查询
SELECT * FROM 表名 [WHERE 条件] [ORDER BY 排序字段[, 排序字段]] LIMIT [开始位置,]长度
.....-- 基本的查询语法
SELECT 字段1,字段2,... FROM 表名
-- 不区分大小写
select 字段,字段,.... from 表名
-- 查询所有的字段
SELECT * FROM 表名
-- 带条件的查询
SELECT * FROM 表名 [WHERE 条件] [ORDER BY 排序字段[, 排序字段]] LIMIT [开始位置,]长度
.....
带条件的查询
-- 查询id小于10的学生
select * from student where 条件
select * from student where id<10
-- 查询id小于20的女学生
select * from student where id<20 and sex='女'
-- 查询年龄大于等于20小于等于30的学生
select * from student where age>=20 and age<=30
对查询结果排序
升序 asc
降序 desc
-- 对查询结果进行排序
-- 查询所有的同学,并按年龄升序排序
select * from student order by age asc
select * from student order by age
-- 查询所有的同学,按年龄降序排序
select * from student order by age desc
-- 查询所有的同学,按年龄降序排序,如果年龄相同,按id降序排序
select * from student order by age desc, id desc
-- 如果SQL中既有条件、又有排序,必须先写条件
-- 查询所有的男同学,并按年龄升序排序
select * from student where sex='男' order by age asc
添加数据
语法: insert into 表名 set 字段=值, 字段=值
-- insert into 表名 set 字段=值, 字段=值, ....
insert into student set age=30, sex='男', username='李青'
修改数据
语法:update 表名 set 字段=值, 字段=值,...... where 修改条件
-- 修改id为11的数据
update student set age=20, sex='女' where id=11
-- 没有指定条件,全部的数据都会修改
update student set age=25, sex='女'
删除数据
语法:delete from 表名 where 删除条件
-- 删除一条数据
delete from student where id=11
-- 删除满足条件的数据
delete from student where id>6
-- 没有指定条件,删除全部数据
delete from student
SQL小结
查询 (select 字段, 字段,... from 表名 [where 条件] [order by 字段 排序规则]
)
新增(insert into 表名 set 字段=值, 字段=值, ....
)
修改(update 表名 set 字段=值, 字段=值, .... [where 条件]
)
删除(delete from 表名 [where 条件]
)
mysql模块是一个第三方模块,专门用来操作MySQL数据库。 可以执行增删改查操作。