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. 使用android ndk编译boost动态库

    由于以往我写过不少使用boost库开发的项目,而最近准备移植一些代码到android上(上层界面以及jni层我不管,也没研究过,现在只完成代码的移植编译,具体如何调用,由其它人负责),所以先要解决的就 ...

  2. pexpect模块

    pexpect用来启动子程序,使用正则表达式对程序输出做出特定响应,以此实现与其自动交互的python模块,当然我们可以使用他来做ssh登陆,ssh模块登陆还有一个基于python实现远程连接,用于s ...

  3. ASP 500错误解决方法

    最有效的解决方法: 经  c:\windows\temp 目录增加everyone写权限. 环境: windows2008

  4. chartcontrol(统计坐标图形控件)

    统计图形 把控件拖放到界面会弹出下图 图形共分八系列:Bar Series,Point and line Series,pie Series,Funnel Series,Area  Series,Ra ...

  5. C++: 多态 虚函数

    一.多态: 1.多态是什么:具有不同功能的函数可以用同一个函数名 2.静态多态:程序编译时决定,通过函数重载实现. 3.动态多态:程序运行时决定,通过虚函数实现. 二.虚函数: 1.引入目的:可以通过 ...

  6. 笔记-迎难而上之Java基础进阶6

    import java.io.*; public class InputStreamDemo{ public static void main(String[] args) throws IOExce ...

  7. OpenLayers3 动画

    参考文章 openlayers3中三种动画实现

  8. layer的alert、prompt等操作如何响应键盘的回车和ESC操作

    layer.prompt({title: '请输入数据', formType: 1, //隐藏用户输入内容 // 这个是确定按钮的事件 "success":function(){ ...

  9. sublime快捷键设置

    1.sublime自带的快捷键设置:这里的super在mac下是指command键 右边的内容表示用户自定义的快捷键:比如如图所示command+d表示复制光标所在行 常用操作:复制粘贴什么的太常用的 ...

  10. 转:MapReduce原理与设计思想

    转自:http://www.cnblogs.com/wuyudong/p/mapreduce-principle.html 简单解释 MapReduce 算法 一个有趣的例子 你想数出一摞牌中有多少张 ...