go生成页面 返回给web-view

{{define "DBHtmlCode"}}

<!DOCTYPE html>
<html lang="zh-cmn-Hans">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <meta name="viewport" content="width=device-width,initial-scale=1,user-scalable=0">
<title>DBHtmlCode</title>
<link rel="stylesheet" href="/static/WeUI_files/weui.css">
<link rel="stylesheet" href="/static/WeUI_files/example.css">
</head>
<body>
<div id="testdiv"></div>
</body>
</html>
<script>
var testdiv = document.getElementById("testdiv");
testdiv.innerHTML = '<h1>{{.data.title}}</h1>{{.data.content}}';
</script>
{{end}}

  

package main

import (
"net/http" "github.com/labstack/echo"
"io"
"html/template"
"fmt"
"io/ioutil"
//"encoding/json"
"encoding/json"
) /*
1.实现 echo.Renderer 接口
*/
type Template struct {
templates *template.Template
} func (t *Template) Render(w io.Writer, name string, data interface{}, c echo.Context) error {
return t.templates.ExecuteTemplate(w, name, data)
} /*
4.在 action 中渲染模板
*/
func Hello(c echo.Context) error {
return c.Render(http.StatusOK, "WeUI", "chkUrl")
} /*
自定义一个 context
Define a custom context
Context - Go/Golang 框架 Echo 文档 http://go-echo.org/guide/context/
*/ type CustomContext struct {
echo.Context
} func (c *CustomContext) Foo() {
println("foo")
} func (c *CustomContext) Bar() {
println("bar")
} type ScriptStruct struct {
Host string
Port int
Path string
ScriptName string
} type ArticleContent struct {
title string `json:"title"`
summary string `json:"summary"`
content string `json:"content"`
modify_time int `json:"modify_time"`
} type ArticleResponse struct {
status int `json:"int"`
data ArticleContent `json:"data"`
}
//
//var s2 = ScriptStruct{"192.168.3.123", 8088, "/myDir/", "spider.go"}
//var ScriptArr [6]ScriptStruct
//var DBHtmlCode ArticleResponse
//var DBHtmlCode string
var DBHtmlCode map[string]interface{} //func (c *CustomContext) DumpScripts() {
// println("bar")
// s1 := ScriptStruct{"192.168.3.123", 8088, "/myDir/", "spider.go"}
// ScriptArr[0] = ScriptStruct{"192.168.3.103", 8088, "/myDir/", "spider.go"}
// ScriptArr[1] = ScriptStruct{"192.168.3.110", 8088, "/myDir/", "spider.go"}
// ScriptArr[2] = ScriptStruct{"192.168.3.123", 8088, "/myDir/", "spider.go"}
// fmt.Println(s1.Host)
//} func (c *CustomContext) GetDBHtmlCode() {
/*
The client must close the response body when finished with it:
*/
resp, err := http.Get("http://host/doc/?info_id=7f8dedc4df48e4486b3697aeedd31dbe")
if err != nil {
// handle error
fmt.Println(err)
}
fmt.Println(resp) defer resp.Body.Close()
body, err := ioutil.ReadAll(resp.Body)
if err != nil {
// handle error
fmt.Println(err) }
fmt.Println(body)
//println("json:", string(body))
//
//var a ArticleResponse
//
//if err = json.Unmarshal(body, &a); err != nil {
//
//}
//fmt.Println(a) //var u ArticleResponse
//
//json.NewDecoder(body).Decode(&u)
//fmt.Println(u) ////fmt.Println(resp)
//var m ArticleResponse
////json.Unmarshal(body, &m)
//json.Unmarshal(body, &m)
//fmt.Println(m)
//
//var n ArticleResponse
//json.NewDecoder(resp.Body).Decode(&n)
//fmt.Println(n) var dat map[string]interface{}
//var dat map[string]ArticleResponse
if err := json.Unmarshal(body, &dat); err != nil {
panic(err)
}
fmt.Println(dat)
fmt.Println(dat["status"])
fmt.Println(dat["data"])
fmt.Println(dat["content"]) //
//if err != nil {
// // handle error
// fmt.Println(err)
//
//}
DBHtmlCode = dat //DBHtmlCode.status = 3
} func main() {
/*
2.预编译模板
*/
t := &Template{
templates: template.Must(template.ParseGlob("goEchopublic/views/*.html")),
} /*
3.注册模板
*/
e := echo.New()
e.Renderer = t /*
静态文件
Echo#Static(prefix, root string) 用一个 url 路径注册一个新的路由来提供静态文件的访问服务。root 为文件根目录。
这样会将所有访问/static/*的请求去访问assets目录。例如,一个访问/static/js/main.js的请求会匹配到assets/js/main.js这个文件。
*/
e.Static("/static", "assets") /*
创建一个中间件来扩展默认的 context
Create a middleware to extend default context
*/ e.Use(func(h echo.HandlerFunc) echo.HandlerFunc {
return func(c echo.Context) error {
cc := &CustomContext{c}
return h(cc)
}
})
/*
这个中间件要在所有其它中间件之前注册到路由上。
This middleware should be registered before any other middleware.
*/ /*
在业务处理中使用
Use in handler
*/
e.GET("/scriptAdmin", Hello) e.GET("/GetDBHtmlCode", func(c echo.Context) error {
cc := c.(*CustomContext)
cc.GetDBHtmlCode()
return c.Render(http.StatusOK, "DBHtmlCode", DBHtmlCode)
}) e.Logger.Fatal(e.Start(":1323"))
}

  

package main

import (
"net/http" "github.com/labstack/echo"
"io"
"html/template"
"fmt"
"io/ioutil"
//"encoding/json"
"encoding/json"
) /*
1.实现 echo.Renderer 接口
*/
type Template struct {
templates *template.Template
} func (t *Template) Render(w io.Writer, name string, data interface{}, c echo.Context) error {
return t.templates.ExecuteTemplate(w, name, data)
} /*
4.在 action 中渲染模板
*/
func Hello(c echo.Context) error {
return c.Render(http.StatusOK, "WeUI", "chkUrl")
} /*
自定义一个 context
Define a custom context
Context - Go/Golang 框架 Echo 文档 http://go-echo.org/guide/context/
*/ type CustomContext struct {
echo.Context
} func (c *CustomContext) Foo() {
println("foo")
} func (c *CustomContext) Bar() {
println("bar")
} type ScriptStruct struct {
Host string
Port int
Path string
ScriptName string
} type ArticleContent struct {
title string `json:"title"`
summary string `json:"summary"`
content string `json:"content"`
modify_time int `json:"modify_time"`
} type ArticleResponse struct {
status int `json:"int"`
data ArticleContent `json:"data"`
} //
//var s2 = ScriptStruct{"192.168.3.123", 8088, "/myDir/", "spider.go"}
//var ScriptArr [6]ScriptStruct
//var DBHtmlCode ArticleResponse
//var DBHtmlCode string
var DBHtmlCode map[string]interface{} //func (c *CustomContext) DumpScripts() {
// println("bar")
// s1 := ScriptStruct{"192.168.3.123", 8088, "/myDir/", "spider.go"}
// ScriptArr[0] = ScriptStruct{"192.168.3.103", 8088, "/myDir/", "spider.go"}
// ScriptArr[1] = ScriptStruct{"192.168.3.110", 8088, "/myDir/", "spider.go"}
// ScriptArr[2] = ScriptStruct{"192.168.3.123", 8088, "/myDir/", "spider.go"}
// fmt.Println(s1.Host)
//} func (c *CustomContext) GetDBHtmlCode(info_id string) {
/*
The client must close the response body when finished with it:
*/
url := "http://newHost/?info_id=" + info_id
fmt.Println(url)
resp, err := http.Get(url)
if err != nil {
// handle error
fmt.Println(err)
}
fmt.Println(resp) defer resp.Body.Close()
body, err := ioutil.ReadAll(resp.Body)
if err != nil {
// handle error
fmt.Println(err) }
fmt.Println(body)
//println("json:", string(body))
//
//var a ArticleResponse
//
//if err = json.Unmarshal(body, &a); err != nil {
//
//}
//fmt.Println(a) //var u ArticleResponse
//
//json.NewDecoder(body).Decode(&u)
//fmt.Println(u) ////fmt.Println(resp)
//var m ArticleResponse
////json.Unmarshal(body, &m)
//json.Unmarshal(body, &m)
//fmt.Println(m)
//
//var n ArticleResponse
//json.NewDecoder(resp.Body).Decode(&n)
//fmt.Println(n) var dat map[string]interface{}
//var dat map[string]ArticleResponse
if err := json.Unmarshal(body, &dat); err != nil {
panic(err)
}
fmt.Println(dat)
fmt.Println(dat["status"])
fmt.Println(dat["data"])
fmt.Println(dat["content"]) //
//if err != nil {
// // handle error
// fmt.Println(err)
//
//}
DBHtmlCode = dat //DBHtmlCode.status = 3
} func main() {
/*
2.预编译模板
*/
t := &Template{
templates: template.Must(template.ParseGlob("goEchopublic/views/*.html")),
} /*
3.注册模板
*/
e := echo.New()
e.Renderer = t /*
静态文件
Echo#Static(prefix, root string) 用一个 url 路径注册一个新的路由来提供静态文件的访问服务。root 为文件根目录。
这样会将所有访问/static/*的请求去访问assets目录。例如,一个访问/static/js/main.js的请求会匹配到assets/js/main.js这个文件。
*/
e.Static("/static", "assets") /*
创建一个中间件来扩展默认的 context
Create a middleware to extend default context
*/ e.Use(func(h echo.HandlerFunc) echo.HandlerFunc {
return func(c echo.Context) error {
cc := &CustomContext{c}
return h(cc)
}
})
/*
这个中间件要在所有其它中间件之前注册到路由上。
This middleware should be registered before any other middleware.
*/ /*
在业务处理中使用
Use in handler
*/
e.GET("/scriptAdmin", Hello)
e.GET("/GetDBHtmlCode/:iid", func(c echo.Context) error {
info_id := c.Param("iid")
cc := c.(*CustomContext)
cc.GetDBHtmlCode(info_id)
return c.Render(http.StatusOK, "DBHtmlCode", DBHtmlCode)
}) e.Logger.Fatal(e.Start(":1323"))
}

  

小程序 富文本 的页面展示 json 数据处理 go-echo 为小程序提供feed流服务的更多相关文章

  1. [微信小程序] 微信小程序富文本-wxParse的使用

    最近小程序蛮火的,公司要做于是学了一点点小程序 不知道你们有没有遇到过这种问题: 从公司服务器获取的文章内容是有HTML标签格式的一段内容,但是微信是不支持这些标签的,怎么办呢? 1.一般网站后台的文 ...

  2. 微信小程序富文本中的图片大小超出屏幕

    这个问题我在小程序社区中提的,后来有个帮我回答了这个问题,我试了一下可以. 解决办法是过滤富文本内容,给图片标签添加一个样式,限制图片的最大宽度. replace(/\<img/gi,   '& ...

  3. 微信小程序富文本渲染组件html2wxml及html2wxml代码块格式化在ios下字体过大问题

    1.组件使用: 之前微信小程序的富文本渲染组件用的wxParse,对普通富文本确实可以,但是对于代码格式pre标签则无法使用. 下面这个html2wxml很不错,可以支持代码高亮. 详细文档:http ...

  4. 微信小程序-富文本解析插件wxParse基础使用及问题解决

    一.插件准备 在github上可以直接下载该插件:https://github.com/icindy/wxParse 二.基本使用 1.将插件导入项目: 将wxParse文件夹放在项目目录下,如图: ...

  5. html页面展示Json样式

    一般有些做后台数据查询,要把后台返回json数据展示到页面上,如果需要展示样式更清晰.直观.一目了然,就要用到html+css+js实现这个小功能 一.css代码 pre {outline: 1px ...

  6. 小程序里面使用wxParse解析富文本导致页面空白等

    在部分安卓手机上会出现白屏的情况且有些ios手机上图文混排上,图片显示不出问题 解决:把插件里面的console.dir去掉即可(原因在于安卓手机无法解析console.dir) 有些图片解析出来下面 ...

  7. [转]wxParse-微信小程序富文本解析组件

    本文转自:https://github.com/icindy/wxParse 基本使用方法 Copy文件夹wxParse - wxParse/ -wxParse.js(必须存在) -html2json ...

  8. 微信小程序和支付宝小程序富文本使用

    微信小程序使用的是 1. wxml 页面元素的最简单使用 <rich-text nodes="{{这是你的数据}}"></rich-text>   2. j ...

  9. 微信小程序 富文本插件 循环渲染方式

    感谢GitHub https://github.com/icindy/wxParse/wiki/wxParse%E5%A4%9A%E6%95%B0%E6%8D%AE%E5%BE%AA%E7%8E%AF ...

随机推荐

  1. 这是一份很有诚意的2017 Google I/O大会的汇总 & 解析

    前言 在刚过去的凌晨(北京时间 5月18日 1.00-3.00),一年一度的2017年Google I/O大会在美国谷歌山景城海岸线圆形剧场如期举行 Google I/O 大会:Innovation ...

  2. 安装sass的艰难过程

    1.ruby安装 因为sass依赖于ruby环境,所以装sass之前先确认装了ruby.先导官网下载个ruby 在安装的时候,请勾选Add Ruby executables to your PATH这 ...

  3. Debian9安装MariaDB

    一:导入密钥并添加了存储库 sudo apt-get install software-properties-common dirmngr sudo apt-key adv --recv-keys - ...

  4. IDEA连接linux服务器

    idea连接linux(完成了xshell和xftp连接linux的功能,可以直接卸载这俩了..) File->settings->Deployment左侧加号添加 选择传输类型ftp或者 ...

  5. Ubuntu 16.04下使用Wine安装Windows版的微信(不太完美)

    说明: 真的不太完美,别试了:除了需要安装额外的输入法之后,无法上传图片和间接性的BUG出现等等问题. 建议安装网页版的微信:http://www.cnblogs.com/EasonJim/p/711 ...

  6. php curl xml传输和转换

    <?php /** * API * User: sgfoot * Date: 2017/3/20 * Time: 18:05 */ class apiCurl { private $config ...

  7. NSThread学习

    使用多线程可以防止主线程阻塞.同时也可以将一个大的任务分成若干个小的任务去做. 常用方法一: 1, 首先使用  detachNewThreadSelector:toTarget:withObject: ...

  8. mac下报错 xcrun: error: invalid active developer path (/Library/Developer/CommandLineTools), missing xcrun at: /Library/Developer/CommandLineTools/usr/bin/xcrun

    如题mac下遇到错误: 解决办法:安装mac的命令行工具CommandLineTools xcode-select --install

  9. Oracle-31-对视图DML操作

    一.对视图进行DML操作 1.创建一个视图v_person create or replace noforceview v_person as select *from person where id ...

  10. GOOGLE VR SDK开发VR游戏,VR播放器之中的一个

    近期一年来,VR虚拟现实和AR增强现实技术的宣传甚嚣尘上.事实上VR,AR技术非常早就有了,一直没有流行开来.不可否认价格是影响技术推广的最大壁垒. 谷歌对VR最大的贡献是提供了便宜的谷歌眼镜,依照G ...