1.在根目录命令行输入以下代码来安装node脚手架
npm install -g koa-generator
2.创建后端项目文件夹,输入koa2 xxxx(文件夹名称),再npm install
3.由于后端的端口号与前端的端口号不一致,因此产生了跨域问题。
这里给出跨域的概念:(面试)
跨域是浏览器的一个特性,就是浏览器从一个域向另一个域的服务器发送请求,来访问另一个域上的资源。但是由于请求的文件可能会存在恶意攻击,浏览器并不允许直接访问另一个域上的资源,只能访问同一个域上的资源,这个就是同源策略。所谓同源策略,指的是协议、域名、端口号一直,如果它们有一个不一致时,就会产生跨域。
跨域引发的问题:
(1)cookie、Localstorage无法读取
(2)dom和js对象无法读取,主要是iframe
(3)axios请求不能发送
因此,我们需要在后端服务器中配置CORS来解决跨域。具体操作如下:
在node后端项目中安装CORS插件
npm install @koa/cors --save
然后在app.js中引入并使用
//引入CORS
const cors = require('koa-cors');
//使用CORS
app.use(cors());
4.在navicat中创建数据库和表(具体不介绍)
5.在后端项目中安装MySQL驱动
npm install mysql
6.在后端项目routes/index.js中进行一系列操作
首先加载MySQL驱动及连接数据库,连接池中的属性都换成自己的
// 加载MySQL驱动
const mysql = require('mysql');
// 连接数据库
const pool = mysql.createPool({
connectionLimit: 10,
host: 'localhost',
user: 'root',
password: '',
database: 'my_website'
});
然后由于node中请求数据是异步操作,所以需要封装这样一个函数,通过Promise、async、await方法将异步操作变成同步
function getQueryData(sql, params = []) {
return new Promise((resolve, reject) => {
pool.query(sql, params, function (error, results) {
if (error) reject(error);
resolve(results);
});
})
}
最后调用,使用例如下:
router.get('/getArticleList', async (ctx) => {
// 查询数据库
let sql =
`SELECT t_user.id as user_id, t_user.username, t_user.portrait,
t_article.id as article_id, t_article.title, t_article.image,
t_article.content, t_article.create_time
FROM t_user, t_article
WHERE t_user.id=t_article.user_id`;
let results = await getQueryData(sql);
ctx.body = results;
});
重点来辣!!!
关键点:token
token的意思是“令牌”,是服务端生成的一串字符串,作为客户端进行请求的一个标识。在计算机身份认证中是令牌(临时)的意思,在词法分析中是标记的意思。主要作为登录验证使用。
token的实现原理:
版权声明:本文为weixin_45071549原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。