前端笔记
搭建服务器
服务器搭建流程
1.node 搭建服务器 和 mySQL
1. 准备空文件夹
2. 终端cd到文件夹中
3. 将该普通文件夹初始化成项目文件件
npm init
4. 查看项目中的package.json文件
创建 index.js 文件
5. 安装服务器模块koa
cnpm install koa --save
( 额外插播一条广告: 你的电脑没有cnpm
需要在你的电脑上的终端中 安装 cnpm
npm install -g cnpm --registry=https://registry.npm.taobao.org
)
6. 编写服务器的代码
粘贴 koa 模块代码
7. 运行服务器进行测试
node index.js
8. 安装路由模块,进行服务器接口编写
1.cnpm install koa-router --save
2.粘贴路由代码 // 代码在lib/router.js 中 example basic use下 即30-41行
3.修改代码 const Router = require('koa-router');
9. 安装参数解析模块
1.cnpm install koa-bodyparser --save
2.粘贴代码 37 40 行
3.GET 参数 ctx.request.query
4.POST 参数 ctx.request.body
(post接口测试需要写ajax 代码,
也可以安装postMan来进行测试)
10. 将服务器开发访问权限
1.安装 跨域模块 cnpm install koa-cors --save
2.粘贴代码 19 22
var cors = require('koa-cors');
app.use(cors());
11. 让服务器具有文件访问的能力
1.安装静态资源模块 cnpm install koa-static --save
2.在项目中创建 static 文件夹
3.粘贴代码 43 54
const serve = require('koa-static');
app.use(serve(__ dirname + ' /static/'));
4.访问路径测试(不用带上static 这个路径)
http://localhost :3000/111. jpg
12. 让服务器具有访问数据库mysql的能力
1.安装 mysql 模块 cnpm install mysql --save
2.粘贴代码
在路由外边
var mysql = require('mysql');
var db = mysql.createConnection({
host: 'localhost',
user: 'root',
password: '',
database : 'leifeng'
});
db.connect();
在接口 /aaa 中
db.query("sql语句",function (err,data,fields) {
data ---> [数据库类型的数据,是不可以直接使用的]
data = JSON.stringify(data)
data = JSON.parse(data)
[对象,对象] ---> 可以直接使用
console.log(data)
})
13. Promise承诺写法
1.var prom = new Promise(function (you_jieguo,mei_jieguo) {
db.query("sql语句",function (err,data) {
if (err) {
mei_jieguo(err)
} elset
data = JSON. stringify(data)
you_jieguo(data)
}
})
})
2.ctx.body = await prom;
3.给接口增加async
'/get_ user', async (ctx, next)
14. 给服务器安装文件模块
1. cnpm install koa-body --save
2.贴代码
//文件上传模块
const koa_body = require("koa-body")
app.use(koa_body({
multipart: true,
formidable: {
maxFileSize: 1024 * 1024 * 200
}
}))
3.在文件上传接口中编写上传并保存文件的代码
router.post( " /upload', (ctx, next) => {
// GET: ctx.request.query
// POST: ctx.request.body
// FILE: ctx.request.files
var file = ctx.request.files.xxx
var file_name = file.name
var file_name_arr = file_name.split(".")
var file_type = file_name_arr[file_ name_arr.length - 1]
var file_path = file.path
// file_path stream ----> /static/imgs/sb.jpg
// 1.导入文件操作系统(fileSystem 简称fs)
// require("fs")
// 2.利用文件操作系统将 path 中的数据流读出来
var read_stream = fs.createReadStream(file_path)
// 3.准备一个数据流路径 /static/imgs/sb.jpg
var cur_time = new Date().getTime()
var des_name = cur_time + "." + file_type
var des_stream = fs.createWriteStream("./static/ imgs/" + des_name)
//4.将2中的数据流流入4中
read_stream.pipe(des_stream)
ctx.body =”上传成功"
});
15. jQuery.form.js插件的使用
<script>
$(".upload_form")[0].onsubmit = function () {
event.preventDefault(
//自己获取文件数据并通过ajax提交
$(this).ajaxSubmit({
error: function () {
console.log("提交失败”)
},
success: function () {
console.log("提交成功”)
},
uploadProgress: function (event,pos,total ,percent) {
console . log(percent)
}
});
}
</script>
16. 安装mysql8(补充说明)
1. 假设: 安装的同时 设置的密码是: Leifeng123
2. 通过 终端 访问mysql
mysql -u root -p
Leifeng123
可以访问mysql
3. 通过 工具 或者 项目中的 mysql 模块 去访问数据库
var mysql = require('mysql');
var db = mysql.createConnection({
host: 'localhost',
user: 'root',
password: 'Leifeng123',
database: 'school'
});
db.connect();
访问不成功
4. 原因:
mysql 8 密码加密方式 不是之前的 正常的加密方式
5. 解决办法:
让 mysql8 中的密码 采用, 之前统一的加密方式
6. 解决步骤:
1.终端: mysql -u root -p
2.password : Leifeng123
3.show databases;
4.use mysql;
5. 将 mysql 中 root 的密码改为 正常加密模式
alter user 'root'@'localhost' idetified with mysql_native_password by 'Leifeng123';
flush privileges;
6. exit;
7. 此时 第 3 步 就可以成功访问了
17. 使用cnpm install 会按照packgae.json文件类的参数自动安装所需模块
所以在项目传输过程中不需要模块文件夹
18.axjx中 opne('GET',url,true)) GET请求 只能带参数 参数可见 参数在?后面
opne('POST',url,true)) POST请求 可以带参数 或者文件 带的参数或文件不可见 参数或文件在body里面(肚子)
get请求:ctx.request.query.参数名
POST请求:ctx.request.body.name