SRE全栈运行篇

2023-10-30 18:29:42 浏览数 (2)

截止昨日,前后端接口都开发了,那么就该运行前后端程序,正式测试一下。

我们设计的前后端分离的流程大致如上图所示,所以说,我们今天主要是将前后端都跑起来,然后把后端返回的数据渲染到页面上。这样一个简单的前后端分离的项目算是完成了。

前端开启

代码语言: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应用,一切顺利!

0 人点赞