go html vue,81.go + vue实现web应用程序

本文介绍了如何将Go后端与Vue前端结合使用,实现前后端分离的开发模式。通过示例展示了Go服务器如何提供数据,以及Vue如何通过设置delimiters避免与Go模板冲突。在Go的web服务中,Vue用于前端数据渲染,提供更丰富的用户体验。通过调整Vue的设置,可以将数据绑定符号改为[[]],并展示了如何将Go提供的数据直接用于Vue渲染,从而实现更灵活的数据交互。
摘要由CSDN通过智能技术生成

前端框架越来越丰富,前后端分离已经是大多数软件团队采取的模式了。vue使用的场景也越来越多。

go本来使用template模板来进行前端的表现,现在可以用vue来分担很大一部分工作了。

通常直接使用go语言写后端,然后使用静态模板加载渲染前端,前端获取后端提供的数据是使用{{ }}符号,2个套在一起的花括号。这个也是vue使用的数据表现方式。

如果go+vue来协同工作的话,需要对vue进行一点设置。比如把{{ }}的方式改为[[ ]]的方式。

首先我们要知道,vue的使用,需要在页面中加载vue.js或vue.min.js

纯静态网页使用vue是这样的(给个html例子)

{{ message }}

var app = new Vue({

el:"#app",

data:{

message:'Hello Moon!'

}

})

运行效果如下

2cbf3ed417ef

vue渲染页面效果

然后我们实现一个go的简单web服务和模板页面

package main

import (

"fmt"

"log"

"myvscodeObj/showLove"

"net/http"

"os"

"os/exec"

"text/template"

)

/*********************************************

@FuncName:main

@Author:Jian Junbo

@Date:2019-11-02 22:12:09

@Version:1.0

@Info:This function is 程序的入口,不可以被删除

*********************************************/

func main() {

http.HandleFunc("/", handler_cofox)

http.Handle("/htmlpage/", http.StripPrefix("/htmlpage/", http.FileServer(http.Dir("htmlpage"))))

err := http.ListenAndServe(":1989", nil)

if err != nil {

log.Println("ListenAndServe:", err.Error())

}

}

/*********************************************

@FuncName:News

@Author:Jian Junbo

@Date:2019-11-02 22:45:06

@Version:1.0

@Info:This function is 新闻的数据结构

*********************************************/

type News struct {

Title string `标题`

Content string `内容`

Author string `作者`

}

func handler_cofox(w http.ResponseWriter, r *http.Request) {

news := News{Title: "标题", Content: "内容", Author: "作者"}

t, err := template.ParseFiles("htmlpage/index.html")

if err != nil {

log.Println("模板加载失败:", err.Error())

}

t.ExecuteTemplate(w, "index.html", news)

}

这个go服务器通过端口 1989 展示服务器页面,提供了一个静态文件路径 htmlpage,我们把vue.js和index.html文件都放置在htmlpage路径里。

go服务器还用模板给前台页面提供了一个News结构的数据,数据包括:Title,Content,Author的值。

在index.html页面中,加载vue.js的时候需要带上静态路径 htmlpage

在 new 一个 vue 变量的时候,必须有一句来设置包裹数据的符号,我们这里设置这个符号为[[ ]]

delimiters: ['[[', ']]'],

同时,所有需要由 vue 渲染的数据,都写成类似这样的样子

[[ message ]]

在 go + vue 方式下的完整模板文件 index.html

Title is {{.Title}}

Content is {{.Content}}

Author is {{.Author}}

[[ message ]]

var app = new Vue({

delimiters: ['[[', ']]'],

el: "#app",

data: {

message: 'Hello Moon!'

}

})

此页面中{{ }}包裹的数据是由go从后端提供的数据( 例如:{{.Title}}),而[[ ]]包裹的数据,是vue渲染的数据。

运行效果如下

2cbf3ed417ef

go + vue 的运行效果

当然,我们最常用的方式,恐怕还是go从后台提供数据,交给vue,vue再渲染到页面。那么,我们这里把Hello Moon这里稍作修改,就能看到效果了。

var app = new Vue({

delimiters: ['[[', ']]'],

el: "#app",

data: {

message: '{{.Author}} Love Moon!'

}

})

只是把 Vue里的数据,改为由go后端提供即可。

好吧,作者已经在向月亮示爱了。呵呵_

运行一下程序,看修改模板后的效果。

2cbf3ed417ef

Vue数据由go后端提供的效果

至此,go web已经可以使用vue的强大前端技能了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值