小程序 富文本 的页面展示 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 ...
随机推荐
- 高阶函数之函数柯里化function currying
var cost = (function(){ var args = []; return function(){ if(arguments.length === 0){ ...
- python3基础语法(标识符,注释,数据类型,获取用户输出,代码块,python保留字)
编码 默认情况下,Python 3 源码文件以 UTF-8 编码,所有字符串都是 unicode 字符串. 当然你也可以为源码文件指定不同的编码: # -*- coding: cp-1252 -*- ...
- 【kindeditor】kindeditor的使用
官网:http://kindeditor.net/demo.php 效果:
- WebRTC VoiceEngine综合应用示例(二)——音频通话的基本流程(转)
下面将以实现一个音频通话功能为示例详细介绍VoiceEngine的使用,在文末将附上相应源码的下载地址.这里参考的是voiceengine\voe_cmd_test. 第一步是创建VoiceEngin ...
- C++的静态联编和动态联编详解
一.概述: 通常来说联编就是将模块或者函数合并在一起生成可执行代码的处理过程,同时对每个模块或者函数调用分配内存地址,并且对外部访问也分配正确的内存地址,它是计算机程序彼此关联的过程.按照联编所进行的 ...
- ../wxs/utils.wxs not found from
../wxs/utils.wxs not found from 微信小程序,使用Vant Weapp时,引入到项目中时报以下错误: ... ../wxs/utils.wxs not found fro ...
- LeetCode OJ--Rotate List
http://oj.leetcode.com/problems/rotate-list/ 取得后面k个节点,然后截断插到前面.如果k比list长,则按照求余算. 去后面的k个节点:使用两个指针,第一个 ...
- javascript总for of和for in的区别?
for in是ES5标准,for of是ES6标准; for in是遍历对象属性,for of是遍历对象元素. for of兼容性还不够,移动端安卓微信浏览器貌似不支持,苹果的可以;web端IE支持也 ...
- ASP.NET Core 中间件基本用法
ASP.NET Core 中间件 ASP.NET Core的处理流程是一个管道,而中间件是装配到管道中的用于处理请求和响应的组件.中间件按照装配的先后顺序执行,并决定是否进入下一个组件.中间件管道的处 ...
- Loj #2036. 「SHOI2015」自动刷题机
link : https://loj.ac/problem/2036 这个显然具有单调性,N小的话更容易A题,不仅因为A一次题减少的代码,并且A题的下限也低. 所以直接上二分就行了,注意上限一定不要设 ...