ARTICLE DETAIL

资讯详情

深耕网站建设、视觉设计与SEO优化的一线实战洞察。

GoFrame gview 模板引擎:3 步接入,2 个性能点讲清楚

GoFrame gview 模板引擎:3 步接入,2 个性能点讲清楚 GoFrame gview 模板引擎3 步接入2 个性能点讲清楚【免费下载链接】gfA powerful framework for faster, easier, and more efficient project development.项目地址: https://gitcode.com/GitHub_Trending/gf/gfGoFrame 的 gview 模板引擎把标准库 text/template 封装成视图引擎负责把 Go 数据渲染成 HTML支持布局组合、自动编码与多语言切换。 从一个真实需求切入用户主页要显示用户名商品页要显示价格每个请求返回的内容都不一样。这些动态片段如果靠在处理器里拼字符串页面一变就得改代码。gview 的工作就是让带占位符的 HTML 文件直接产出最终页面。⚡ 最小可运行示例view : gview.New() view.SetPath(./template) view.SetAutoEncode(true) out, err : view.Parse(context.TODO(), index.html, g.Map{ name: john, })前三行创建视图对象、指向模板目录并打开自动编码Parse 从该目录读取 index.html把{{.name}}换成 map 里的值返回渲染后的字符串。 布局文件 内容文件 页面骨架布局文件放公共的html骨架用内置的 include 函数调用 header.html、main.html 等子文件内容文件只写各页面独有的部分布局文件不关心每个子文件里有什么公共结构改版时只改布局文件各内容文件保持不动 数据怎么安全地进模板数据有两个入口视图级 Assigns 全局生效Parse 时传入的 map 只对当次渲染生效。真正的风险在于数据本身带着script标签。打开 SetAutoEncode 后gview 改用 html/template 编译模板此时{{.msg}}取到scriptalert(1)/script会被转义成lt;scriptgt;alert(1)lt;/scriptgt;输出浏览器只把它当纯文本显示。 多语言渲染与组件复用引擎默认挂载了 gi18n 管理器模板中的保留变量 I18nLanguage 决定单页使用哪种语言也可以从上下文里读取。组件复用则交给 include 内置函数把页头、页脚等片段嵌进任意页面不需要手动拼接字符串。 在 ghttp 里怎么接把视图对象赋给服务器配置的 View 字段该服务器的所有请求就默认使用它。处理器里用 Request 的 Assign/Assigns 塞入本次请求的数据再写出页面即可。配置项如路径、默认文件、分隔符定义在 gview_config.go整体实现在 os/gview 目录。️ 两个容易踩的性能点文件缓存首次读取模板时文件路径和内容会一起存入缓存之后对同一文件的渲染不再碰磁盘文件一旦变更监听器会自动清空缓存开发时改模板不用重启。内存锁定同一模板的编译和执行被加锁保护高并发下模板只会被编译一次其余请求直接复用已编译对象避免重复编译带来的开销。gview 是一个做单件事的小模块把数据变成安全、可缓存、可多语言的 HTML 字符串传输交给 ghttp。【免费下载链接】gfA powerful framework for faster, easier, and more efficient project development.项目地址: https://gitcode.com/GitHub_Trending/gf/gf创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表