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等手段来保护客户端的敏感信息。