1.准备空文件夹
2.终端cd到文件夹中
3.将该普通文件夹初始化成项目文件夹
终端输入 npm init
4.查看项目中的 package.json 文件
创建 index.js文件
5.安装服务器模块 koa
终端输入 cnpm install koa --save
(cnpm是npm淘宝镜像,–save则是在package.json文件中记录安装日志)
6.在index.js文件中编写服务器的代码
const Koa = require('koa');
const app = new Koa();
// response
app.use(ctx => {
ctx.body = 'Hello Koa';
});
//服务器端口为3000
app.listen(3000);
7.运行服务器进行测试
终端输入 node index.js
(运行成功后打开浏览器输入地址localhost:3000,页面会显示Hello koa 字样)
8.安装路由模块 koa-router 进行服务器接口编写
终端输入 cnpm install koa-router --save
// 服务器的路径 koa-router
const Router = require('koa-router');
const router = new Router();
router.get('/', (ctx, next) => {
ctx.body = "我是主页面"
});
再次运行成功后打开浏览器输入地址localhost:3000/,页面会显示 ‘我是主页面’
9.安装 网络请求的参数解析模块 koa-bodyparser
终端输入 cnpm install koa-bodyparser --save
// 获取网络请求的参数 koa-bodyparser
var bodyParser = require('koa-bodyparser');
app.use(bodyParser());
GET: ctx.request.query
POST: ctx.request.body
FILE: ctx.request.files
(post接口测试需要写Ajax代码,也可以安装postMan进行测试)
10.安装服务器开发访问权限模块 koa-cors
终端输入 cnpm install koa-cors --save
// 将服务器开发访问权限 允许所有人访问服务器
var cors = require('koa-cors');
app.use(cors());
11.让服务器具有文件访问能力 koa-static
终端输入 cnpm install koa-static --save
// 静态资源 koa-static
const serve = require('koa-static');
app.use(serve(__dirname + '/static/'));
访问路径测试(不用带上 static 这个路径)
http://localhost:3000/111.jpg
12.让服务器具有访问数据库mysql的能力 mysql
终端输入 cnpm install mysql --save
// 让服务器具有访问数据库mysql的能力
var mysql = require('mysql');
var db = mysql.createConnection({
host: 'localhost',
user: 'root',
password: '', //写入自己mysql数据库的密码
database: '' //写入自己需要引入的数据库名称
});
db.connect();
//在接口 /aaa 中 写
db.query('sql语句' , function (err,data,fields) {
//data --> [数据库类型的数据,是不可以直接使用的]
data = JSON.stringify(data)
data = JSON.parse(data)
//[对象,对象] --> 可以直接使用
console.log(data)
})
13.Promise 承诺写法
var prom = new Promise(function (f1,f2) {
db.query('sql语句',function (err,data) {
if (err) {
f2(err)
} else {
data = JSON.stringify(data)
f1(data)
}
})
})
ctx.body = await prom; //给接口增加 async
// '/aaa' , async (ctx,next)
14.mysql8 额外补充的问题
-
安装mysql8 假设安装的时候设置的密码是:Leifeng123
-
通过 终端 访问mysql
mysql -u root -p
Leifeng123
可以访问mysql -
通过工具或者项目中的mysql模块去访问数据库
var mysql = require(‘mysql’);
var db = mysql.createConnection({
host : ‘localhost’,
user : ‘root’,
password : ‘Leifeng123’,
database : ‘school’
});
db.connect();
访问不成功 -
原因:
mysql8 密码加密方式不是之前的正常加密方式 -
解决方法:
让mysql8 中的密码采用之前的统一的加密方式 -
解决步骤:
终端: mysql -u root -p
password: Leifeng123
show databases;
use mysql;
将mysql中的root的密码改为正常加密模式
alter user ‘root’@‘localhost’ idetified with mysql_native_password by ‘Leifeng123’;
flush privileges;
exit;
此时上方第3步就可以成功访问了
15.给服务器安装文件上传模块 koa-body
终端输入 cnpm install koa-body --save
//读取文件
var fs = require("fs")
//给服务器安装上传文件模块(限制文件大小)
const koa_body = require("koa-body")
app.use(koa_body({
multipart: true,
formidable: {
maxFileSize: 1024 * 1024 * 200
}
}))
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 = "上传成功"
});
16.jQuery.form.js 插件的使用
<script>
$(".upload_form")[0].onsubmit = function () {
event.preventDefault()
// 自己获取文件数据并通过ajax提交
$(this).ajaxSubmit({
error: function () {
console.log("提交失败")
},
success: function () {
console.log("提交成功")
},
uploadProgress: function (e , pos , total , percent) {
console.log(percent)
}
});
}
</script>