美文网首页
用vue+koa2+mysql搭建一个简易的网站(一)

用vue+koa2+mysql搭建一个简易的网站(一)

作者: o0ther | 来源:发表于2019-12-17 12:40 被阅读0次

    本项目采用前后端分离的方式,本节先从后端开始。

    前置需要

    开始前需要先安装nodejs以及npm,可以在官网(http://nodejs.cn/download/
    )中下载安装,nodejs安装成功npm也会随之安装。

    初始化项目

    首先新建一个文件夹,cd到该文件夹下,输入npm init,然后一路回车,之后你的项目中会出现一个package.json文件,这个文件定义了项目中用到的各个模块以及项目的配置信息。

    然后安装koa2,输入npm install koa2 --save,然后新建app.js,输入以下代码

    const Koa = require('koa2') // 引入koa2
    
    const app = new Koa() // 创建koa2实例
    
    //任何请求app都将用此方法处理
    app.use(async (ctx) => {
        ctx.body = 'hello koa2'
    })
    
    //监听3000端口
    app.listen(3000)
    console.log('listening at 3000')
    

    然后在控制台输入node app.js启动项目。打开浏览器,在地址栏输入localhost:3000,效果是这样的。


    image.png

    上面ctx是koa封装了response和request的对象,可以通过它来访问response和request。

    ok,我们的项目现在能运行了,只不过什么功能都没有,接下来开始一点一点添加功能。

    连接数据库

    接下来让我们的项目能过连接数据库,并且能够从数据库中读取数据。mysql的安装这里就省略了,可以去网上看看教程。安装完mysql后也可以再安装一个navicat,可视化操作数据库。然后再新建一个数据库,再建个表,再随便写点数据。我是新建了一个user表,有两个字段,id和name。

    安装完成后回到我们的项目,cd到目录下,输入npm install mysql --save安装mysql模块。

    然后在根目录下新建一个config文件夹,然后新建index.js,这个文件用来保存我们的数据库相关的信息。比如用户名密码等。在文件中写入以下内容。

    let config = {
        host: 'localhost',
        user: 'root',
        password: '',
        database: 'qaqdb',
        port: 3306,
        multipleStatements: true
    }
    
    module.exports = config
    

    安装完成之后,再项目的根目录下新建一个名为db的文件夹,然后新建mysql.js文件。
    在这个文件中,我们先引入刚刚安装的mysql模块,再将刚刚写的配置文件也引入进来。
    文件代码如下:

    const mysql = require('mysql')
    
    const config = require('../config/index.js')
    // 创建连接池
    const pool = mysql.createPool({
        host: config.host,
        user: config.user,
        password: config.password,
        database: config.database
    });
    // 使用promise封装
    const query = function(sql, values) {
        return new Promise((resolve, reject) => {
            pool.getConnection(function(err, connection) {
                if(err) {
                    console.log(err)
                    resolve(err)
                } else {
                    connection.query(sql, values, (err, rows) => {
                        if(err) {
                            console.log(err)
                            reject(err)
                        } else {
                            resolve(rows)
                        }
                        connection.release()
                    })
                }
            })
        })
    }
    
    module.exports = {query}
    

    操作数据库

    数据库连接成功之后,接下来就是操作数据库了,首先试着把刚刚写的数据读出来。
    再项目根目录下新建一个controller文件夹,在controller目录下再新建一个user.js。将我们之前封装好的数据库连接池对象引进来。并且写一个函数将数据库中的数据读取出来。

    const pool = require('../db/mysql.js');
    const {query} = pool;
    
    async function getData(ctx, next) {
        let sql = `SELECT * from user`
        let data = await query(sql)
        ctx.body = {
            data: data,
            status: '123'
        }
        console.log(data)
    }
    
    module.exports = {
        getData
    }
    

    数据拿到了,我们还是需要把它给出去,这时候就需要router了,首先安装koa-router,npm install koa-router --save,然后在app.js中引入,在app.js中新增以下代码。

    const Router = require('koa-router')
    const router = new Router()
    

    然后再根目录下新建router文件夹,在这个文件夹下新建index.js文件,添加以下代码。

    const router = require('koa-router')();
    const user = require('../controller/user.js')
    router
        .get('/getdata', user.getData)
    
    module.exports = router
    

    意思是我们访问'/getdata'这个路由的执行之前写好的getData方法。但是这样还不行,我们需要再回到app.js,添加以下代码,将方法路由注册好。

    const apirouter = require('./router/index.js')
    app.use(router.routes()).use(router.allowedMethods())
    app.use(apirouter.routes())
    

    这时候在浏览器中访问localhost:3000/getdata,就会返回从数据库中查询到的数据。

    到此为止,我们已经写好了一个简易的接口,下一节我们将在前端调用这个接口。

    相关文章

      网友评论

          本文标题:用vue+koa2+mysql搭建一个简易的网站(一)

          本文链接:https://www.haomeiwen.com/subject/cdtcdctx.html