使用node进行后台管理及注意事项

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版权协议,转载请附上原文出处链接和本声明。