Vue与服务器端通信的刨析:如何实现前后端分离

1. 前后端分离

随着Web application的快速发展,前后端分离已经成为了一种趋势。在前后端分离的架构下,前端负责展示数据,并且通过API向后端发送请求来获取数据。后端负责处理请求,返回相应的数据给前端。

前后端分离有以下优点:

提高了开发效率:前后端可以并行开发,一方修改代码不会影响到对方的开发进度。

提升了应用的可维护性:前后端代码分离,代码结构更为清晰,代码变更更为方便。

降低了后端API的复杂度:前后端分离后,API只需要返回JSON数据,不需要考虑HTML页面渲染等问题。

提升了应用的性能:前后端分离后,前端可以实现一些本地缓存、懒加载等优化策略。

下面我们将以Vue为例,通过实现前后端分离的Demo来进一步说明其基本实现原理。

2. 实现前后端分离的Demo

在实现前后端分离的Demo中,我们将前端Vue应用和后端Express应用分别放在两个文件夹中。

2.1 创建Vue应用

首先,我们创建一个名为"frontend"的文件夹,用来放置Vue应用,然后在该文件夹下执行如下命令:

npm install -g @vue/cli

vue create frontend

上述命令通过Vue Cli来创建Vue应用,并且将其存放在“frontend”文件夹中。完成后,我们将会在“frontend”文件夹中看到新建的Vue应用。

在完成Vue应用的创建之后,我们需要在该应用中引入“axios”模块,该模块用来发送请求到后端API,并获取其返回的JSON数据。在Vue应用的“main.js”文件中加入如下代码:

import axios from 'axios';

Vue.prototype.$http = axios;

2.2 创建Express应用

接下来,我们在顶级文件夹下创建一个名为"backend"的文件夹,用来存放Express应用。

在"backend"文件夹下,我们执行如下命令:

npm init -y

npm install express

npm install cors

上述命令用来初始化一个新的npm项目,安装Express和CORS模块。CORS模块用来允许跨域请求。

接下来,我们在"backend"文件夹下创建一个名为"server.js"的文件,用来启动Express应用。该文件的内容如下:

const express = require('express');

const cors = require('cors');

const app = express();

app.use(cors());

app.get('/message', (req, res) => {

res.json({ message: 'Hello World!' });

});

app.listen(8080, () => console.log('Server running on port 8080'));

上述代码创建了一个Express app,并且允许跨域请求。当请求"http://localhost:8080/message"时,使用“res.json()”返回一条JSON信息,即“Hello World!"。最后,我们通过“app.listen()”将服务器绑定到端口号“8080”。完成上述步骤后,我们就可以通过http://localhost:8080/message访问该API了。

2.3 调用后端API

在"frontend"文件夹下,我们打开“App.vue”文件,并添加如下代码:

export default {

name: 'app',

data () {

return {

message: ''

}

},

mounted () {

this.$http.get('http://localhost:8080/message')

.then(res => this.message = res.data.message)

.catch(err => console.log(err));

}

}

上述代码向"http://localhost:8080/message"发送GET请求,并将返回的JSON数据的message字段的值赋给了Vue对象的“message”属性。在“mounted()”钩子函数中使用“this.$http.get()”获取服务器返回的数据。

最后,我们在“App.vue”文件的模板中使用{{ message }}来展示message的值:

<template>

<div id="app">

<h1>{{ message }}</h1>

</div>

</template>

通过以上操作,我们就成功实现了从前端Vue应用向后端Express应用的通信。

总结

Vue与服务器端通信,作为前后端分离架构的必要部分,再加上axios的使用,可以快捷方便地实现从前端Vue应用向后端Express应用的通信,进而有效地实现数据的交互。需要注意的是,这一技术也是有其安全风险的,可以通过Token,Cookie,Session等手段来保护客户端的敏感信息。