截止昨日,前后端接口都开发了,那么就该运行前后端程序,正式测试一下。
我们设计的前后端分离的流程大致如上图所示,所以说,我们今天主要是将前后端都跑起来,然后把后端返回的数据渲染到页面上。这样一个简单的前后端分离的项目算是完成了。
前端开启
代码语言:javascript复制Npm run serve
后端开启
代码语言:javascript复制Go run main.go
打开前端,打开pod页面不显示信息,什么问题,调试信息表示如下:
这个错误表示浏览器阻止了浏览器发出的
代码语言:javascript复制xmlhttprequest请求'http://localhost:8080/pods'
,因为目标资源没有设置cors(跨源资源共享)策略中所需的'access-control-allow-origin'响应头。这是一种基于安全原则的浏览器机制,它可以防止网站通过脚本等方式访问未经授权的外部资源,从而确保用户数据和隐私的安全性。
那么怎么设置,下面介绍一番
在gin框架中,可以通过设置中间件来允许跨域访问。具体步骤如下:
导入Cors模块
在代码中导入cors模块:
代码语言:javascript复制import "github.com/gin-contrib/cors"
设置Cors中间件
使用cors中间件并设置跨域参数:
代码语言:javascript复制r := gin.Default()
// 配置cors中间件
config := cors.DefaultConfig()
config.AllowOrigins = []string{"http://example.com"} // 允许跨域访问的域名
config.AllowMethods = []string{"GET", "POST", "PUT", "DELETE"}
r.Use(cors.New(config))
以上代码表示只允许来自 http://example.com 域名的请求,并且允许GET、POST、PUT和DELETE方法。
除了AllowOrigins和AllowMethods外,还有其他一些常用的配置项,例如:AllowCredentials、AllowHeaders、MaxAge等。可根据实际需要进行设置。
测试跨域访问
到这跨域的请求资源的问题得到解决。
那么现在的问题就是如何在前端美观的展示我们需要的数据,而不是一堆返回的json数据。
那肯定要弄一个类似表格的东西展示数据,那么先看下简单的效果:
这里就是一个简单的表格加一个分页功能展示,从后端返回的k8s中kube-system命名空间的pod相关的信息,包括名字、命名空间、创建时间的功能,当然还可以根据需求,添加其他功能,比如查看IP。
比如查看状态:
那么如何实现呢,就是先要在vue页面中用之前学的方法,添加一个表格,然后使用分页功能,这些基础的前面已经说了,这里就不说了,关键是如何将后端数据展示在数据表里面呢。可以使用之前介绍的双花括号来插值显示后端数据,利用v-for循环遍历存返回的数据信息,也可以使用prop这个功能,这里说一下prop这个知识点,prop是一种向子组件传递数据的方式,类似于React中的props。通过prop,父组件可以向子组件传递数据,子组件可以在props中接收这些数据并使用。
举个例子:
代码语言:javascript复制<template>
<child-component :prop1="value1"
:prop2="value2"></child-component>
</template>
<script>
import ChildComponent from
'./ChildComponent.vue'
export default {
components: {
ChildComponent
},
data() {
return {
value1: 'hello',
value2: 'world'
}
}
}
</script>
这里面定义了hello world的值,在父组件是用子组件的时候,通过vbind将数据绑定到子组件中的props中,然后子组件中,可以定义prop接受父组件传递的数据:
代码语言:javascript复制<template>
<div>
<p>{{ prop1 }}</p>
<p>{{ prop2 }}</p>
</div>
</template>
<script>
export default {
props: {
prop1: {
type: String,
required: true
},
prop2: {
type: String,
default: 'default value'
}
}
}
</script>
使用prop就是一种数据传递的方式,不同组件之间的数据可以交互,提高复用性和可维护性。
那么再来总结下,后端数据返回前端的几种方式:
1.使用axios或者fetch等工具从后端获取数据,然后在前端页面中通过v-for指令循环展示数据。
2.使用vue-resource等插件,通过配置url和params等参数,从后端获取数据并展示在前端页面中。
3.使用vuex来管理应用的状态,从后端获取数据后存储到vuex中,然后在组件中通过computed属性或者watch来展示数据。
4.使用组件化开发,将数据展示的组件封装起来,通过props属性传递数据,实现数据的展示。
5.使用服务器端渲染,在服务器端将后端数据和前端页面结合起来,直接返回渲染好的页面给客户端,减轻客户端的渲染压力。
简单点说,一般常用的有双大括号形式的插值、还有prop的数据传递、v-for、v-bind的渲染、组件的传递。具体如何使用,需要根据实际业务场景,后端返回的数据结构和页面需求再进行决策。
好了,今天的话,前后端基础开发算是全部完成了,大家已经具备前后端数据交互的功能,至于花里胡哨的功能就得后面不断添加了,赶快去实践吧,祝大家早日开发出属于自己的web应用,一切顺利!