小程序 富文本 的页面展示 json 数据处理 go-echo 为小程序提供feed流服务
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流服务的更多相关文章
- [微信小程序] 微信小程序富文本-wxParse的使用
最近小程序蛮火的,公司要做于是学了一点点小程序 不知道你们有没有遇到过这种问题: 从公司服务器获取的文章内容是有HTML标签格式的一段内容,但是微信是不支持这些标签的,怎么办呢? 1.一般网站后台的文 ...
- 微信小程序富文本中的图片大小超出屏幕
这个问题我在小程序社区中提的,后来有个帮我回答了这个问题,我试了一下可以. 解决办法是过滤富文本内容,给图片标签添加一个样式,限制图片的最大宽度. replace(/\<img/gi, '& ...
- 微信小程序富文本渲染组件html2wxml及html2wxml代码块格式化在ios下字体过大问题
1.组件使用: 之前微信小程序的富文本渲染组件用的wxParse,对普通富文本确实可以,但是对于代码格式pre标签则无法使用. 下面这个html2wxml很不错,可以支持代码高亮. 详细文档:http ...
- 微信小程序-富文本解析插件wxParse基础使用及问题解决
一.插件准备 在github上可以直接下载该插件:https://github.com/icindy/wxParse 二.基本使用 1.将插件导入项目: 将wxParse文件夹放在项目目录下,如图: ...
- html页面展示Json样式
一般有些做后台数据查询,要把后台返回json数据展示到页面上,如果需要展示样式更清晰.直观.一目了然,就要用到html+css+js实现这个小功能 一.css代码 pre {outline: 1px ...
- 小程序里面使用wxParse解析富文本导致页面空白等
在部分安卓手机上会出现白屏的情况且有些ios手机上图文混排上,图片显示不出问题 解决:把插件里面的console.dir去掉即可(原因在于安卓手机无法解析console.dir) 有些图片解析出来下面 ...
- [转]wxParse-微信小程序富文本解析组件
本文转自:https://github.com/icindy/wxParse 基本使用方法 Copy文件夹wxParse - wxParse/ -wxParse.js(必须存在) -html2json ...
- 微信小程序和支付宝小程序富文本使用
微信小程序使用的是 1. wxml 页面元素的最简单使用 <rich-text nodes="{{这是你的数据}}"></rich-text> 2. j ...
- 微信小程序 富文本插件 循环渲染方式
感谢GitHub https://github.com/icindy/wxParse/wiki/wxParse%E5%A4%9A%E6%95%B0%E6%8D%AE%E5%BE%AA%E7%8E%AF ...
随机推荐
- 转 python语法学习面向对象之继承
传送门 python语法学习面向对象之继承 只要涉及到面向对象,”类“是必须出现的一个代名词. 类和对象是面向对象编程的两个主要方面.类创建一个新类型,而对象是这个类的实例. 类的一些概念: 包括初始 ...
- mysql into outfile 导出
<sql> into outfile 'xxx.txt' FIELDS TERMINATED BY ',' LINES TERMINATED BY '\n'; <sql> 表示 ...
- js 路径改变时获取url参数
当我们在使用react或vue的router作路由跳转时,为了保持菜单与地址栏状态一致,我们可以使用window.onhashchange捕获#后面的变化 window.onhashchange = ...
- 从壹开始 [ Ids4实战 ] 之三║ 详解授权持久化 & 用户数据迁移
回顾 哈喽大家周三好,今天终于又重新开启 IdentityServer4 的落地教程了,不多说,既然开始了,就要努力做好
- 一次完整的http请求过程以及网络I/O模型select、epoll
a.一次完整的http请求过程 1.域名解析,得到域名对应的IP; 2.三次握手,客户端与服务器通过socket建立TCP/IP连接; 3.浏览器向服务器发送http请求,如:GET/index.ht ...
- mybatis ----SqlSessionManager
今天我们来看看这个类 有些写法还是很经典的 public class SqlSessionManager implements SqlSessionFactory, SqlSession { priv ...
- 微信小程序提交 webapi FormDataCollection
/// <returns></returns> [HttpPost] public ShoppingCartModel UpdateCart(FormDataCollectio ...
- linux下安装程序(dep/tgz/rpm)
1.tgz本身就是压缩包,所以前提是先解压出来 tar zxvf test.tgz 而对于安装,可以是程序包本身包含安装,也可以是通过特定shell脚本运行,毕竟这个是不安装包,而只是压缩包. 2.d ...
- PHP平均小数红包算法
<?php function RandMoney( $money,$num ){ $arr = array();//存放金额 $total_money = 0;//红包总金额 $thisMone ...
- Hibernate中的对象状态,及自动更新原因,Hibernate set对象后不调用update却自动更新
原文:http://www.cnblogs.com/xiaoda/p/3225617.html Hibernate的对象有三种状态,分别为:瞬时状态 (Transient). 持久化状态(Persis ...