当前位置: 首页 > article >正文

niuhe插件, 在 go 中渲染网页内容

思路

niuhe 插件生成的 go 代码是基于 github.com/ma-guo/niuhe 库进行组织管理的, niuhe 库 是对 go gin 库的一个封装,因此要显示网页, 可通过给 gin.Engine 指定 HTMLRender 来实现。

实现

HTMLRender 我们使用 gitee.com/cnmade/pongo2gin 实现

1. main.go 中指定 HTMLRender

RegisterModules 中指定 HTMLRender

func (baseBoot) RegisterModules(svr *niuhe.Server) {svr.RegisterModule(apiViews.GetModule())svr.GetGinEngine().HTMLRender = pongo2gin.Default() // pongo2gin 在下面定义svr.GetGinEngine().Static("/static", "static") // 指定静态路径映射位置
}

示例代码: https://github.com/ma-guo/niuhe-mdbook/blob/main/src/demo/main.go

2. 在代码中引入 .html

在 all.niuhe 中定义 api GET('网页示例', '/api/hellow/web/'), 在 hellow.go 文件夹 内实现以下代码:

// 网页示例
func (v *Hellow) Web_GET(c *niuhe.Context) {// 在此实现具体方法, 需要自行处理请求参数和返回数据// 这里会在 templates 文件夹下查找 index.html 文件c.HTML(http.StatusOK, "index.html", pongo2.Context{ "title":   "网页 title","message": "这是一条消息",})
}

参考代码: https://github.com/ma-guo/niuhe-mdbook/blob/main/src/demo/app/api/views/hellow_views.go

这里 index.html 代码为:

<!DOCTYPE html>
<html><head><title>{{title}}</title><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=0"><link rel="stylesheet" type="text/css" href="https://res.wx.qq.com/open/libs/weui/0.4.1/weui.css"></head><body><div class="weui_msg"><div class="weui_icon_area"><i class="weui_icon_info weui_icon_msg"></i></div><div class="weui_text_area"><h4 class="weui_msg_title">{{message}}</h4></div></div></body>
</html>

参考代码: https://github.com/ma-guo/niuhe-mdbook/blob/main/templates/index.html

运行代码并访问 API 即实现了 .html 的渲染。效果如下
在这里插入图片描述

相关文章:

niuhe插件, 在 go 中渲染网页内容

思路 niuhe 插件生成的 go 代码是基于 github.com/ma-guo/niuhe 库进行组织管理的, niuhe 库 是对 go gin 库的一个封装&#xff0c;因此要显示网页, 可通过给 gin.Engine 指定 HTMLRender 来实现。 实现 HTMLRender 我们使用 gitee.com/cnmade/pongo2gin 实现 1. main.go …...

java基础知识面试题总结

Java基础知识面试题 1.重载和重写的区别 重载&#xff08;Overload&#xff09;&#xff1a; ​ 同一个类中&#xff0c;方法名相同&#xff0c;参数列表不同&#xff08;个数、类型、顺序&#xff09;。 class Calculator {// 方法1&#xff1a;两个int相加public int add…...

使用MySQL时出现 Ignoring query to other database 错误

Ignoring query to other database 错误 当在远程连接软件中输入MySQL命令出现该错误 导致错误原因是&#xff1a;登录mysql时账户名没有加上u 如果出现该错误&#xff0c;退出mysql&#xff0c;重新输入正确格式进入即可&#xff01;...

MySQL介绍及使用

1. 安装、启动、配置 MySQL 1. 安装 MySQL 更新软件包索引 sudo apt update 安装 MySQL 服务器 sudo apt install mysql-server 安装过程中可能会提示你设置 root 用户密码。如果没有提示&#xff0c;可以跳过&#xff0c;后续可以手动设置。 2. 配置 MySQL 运行安全脚本…...

Vue2-实现elementUI的select全选功能

文章目录 使用 Element UI 的全选功能自定义选项来模拟全选 在使用 Element UI 的 el-select组件时&#xff0c;实现“全选”功能&#xff0c;通常有两种方式&#xff1a;一种是使用内置的全选功能&#xff0c;另一种是通过自定义选项来模拟全选。 使用 Element UI 的全选功能…...

java后端开发day34--脑子空空如何无痛想起所有知识点--概念拟人化

1.上半部学习思考 1.1反思–浮躁–二倍速 刚开始算半个小白吧&#xff0c;从最基础的知识点开始学习&#xff0c;到后面学习整个项目的布局和功能。可能是后面慢慢懂得多了&#xff0c;每次打代码搞项目啊什么的&#xff0c;就能明显感觉到自己很浮躁&#xff1a;脑子里已经明…...

fastGPT—前端开发获取api密钥调用机器人对话接口(HTML实现)

官网文档链接&#xff1a;OpenAPI 介绍 | FastGPT 首先按照文档说明创建api密钥 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-sca…...

解决 PDF 难题:批量处理、文档清理与自由拆分合并

软件介绍 在日常办公与学习中&#xff0c;处理 PDF 文件常常让人头疼不已&#xff0c;不过别担心&#xff0c;今天有一款堪称神器的国产老牌 PDF 工具要分享给大家。它就是 PDF 补丁丁&#xff0c;凭借其强大功能&#xff0c;为大家排忧解难。 界面体验 初次打开 PDF 补丁丁&…...

使用pycharm社区版调试DIFY后端python代码

目录 背景 前置条件 DIFY使用的框架 API服务调试配置步骤&#xff08;基于tag为0.15.3的版本&#xff09; 1.配置.env文件 2.关闭docker里面的docker-api-1服务 3.使用DOCKER启动本地环境需要用到的中间件&#xff0c;并暴露端口 注意事项一&#xff1a; 注意事项二&#xff1a…...

量子计算与人工智能的结合:未来科技的双重革命

引言 在过去几十年里&#xff0c;人工智能&#xff08;AI&#xff09;和计算能力的提升一直是推动科技进步的重要力量。然而&#xff0c;随着深度学习和大规模数据处理的发展&#xff0c;传统计算架构的算力瓶颈逐渐显现&#xff0c;人工智能的训练和推理效率受到了限制。在此背…...

关于存储的笔记

存储简介 名称适用场景常见运用网络环境备注块存储高性能、低延迟数据库局域网专业文件存储数据共享共享文件夹、非结构化数据局域网通用对象存储大数据、云存储网盘、网络媒体公网&#xff08;断点续传、去重&#xff09;海量 存储协议 名称协议块存储FC-SAN或IP-SAN承载的…...

基于机器学习的三国时期诸葛亮北伐失败因素量化分析

一、研究背景与方法论 1.1 历史问题的数据化挑战 三国时期&#xff08;220-280年&#xff09;的战争史存在史料分散、数据缺失的特点。本研究通过构建包含军事、经济、地理、政治四大维度的结构化数据库&#xff0c;收录建安十二年&#xff08;207年&#xff09;至建兴十二年…...

MySQL 中的 MVCC 版本控制机制原理

1. MVCC&#xff08;多版本并发控制&#xff09;概述 MVCC&#xff08;Multi-Version Concurrency Control&#xff0c;多版本并发控制&#xff09;是一种数据库事务并发控制机制&#xff0c;主要用于提高数据库的读写性能。它通过维护数据的多个版本&#xff0c;使得读操作无…...

JWT认证服务

JSON Web Token&#xff08;JWT&#xff09;是一种用于在网络应用间安全地传递信息的紧凑、自包含的方式。以下是关于 JWT 认证服务器更详细的介绍&#xff0c;包括其意义、作用、工作原理、组成部分、时效性相关内容、搭建条件以及代码案例。 JWT 的意义与作用 意义&#xf…...

RAG中对于PDF复杂格式文件的预处理的解决方案:MinerU

RAG中对于PDF复杂格式文件的预处理的解决方案:MinerU 1. 场景 在RAG场景下,我们所遇到的文档格式可不仅仅局限于txt文件,而对于复杂的PDF文件,里面有图片格式的Excel、图片格式的文字、以及公式等等复杂的格式,我们很难用传统的方式去解析预处理成我们可以用的类似于TXT…...

手机中的type-C是如何防水的呢?

防水类型的type-C座子&#xff1a; 电子产品防水等级的区分&#xff1a; 这里的“IP”是国际防护标准等级&#xff1b;简而言之&#xff0c;IPXX中“XX”两位数字分别代表防尘和防水等级&#xff0c;其中防尘等级从0&#xff5e;6&#xff0c;防水等级则从0&#xff5e;8。 第…...

[Redis]Redis学习开篇概述

欢迎来到啾啾的博客&#x1f431;。 这是一个致力于构建完善 Java 程序员知识体系的博客&#x1f4da;。 它记录学习点滴&#xff0c;分享工作思考和实用技巧&#xff0c;偶尔也分享一些杂谈&#x1f4ac;。 欢迎评论交流&#xff0c;感谢您的阅读&#x1f604;。 引言 大家好…...

WordPress浮动广告插件+飘动效果客服插件

源码介绍 WordPress浮动广告插件飘动效果客服插件 将源码上传到wordpress的插件根目录下&#xff0c;解压&#xff0c;然后后台启用即可 截图 源码免费获取 WordPress浮动广告插件飘动效果客服插件...

Java基础关键_034_网络编程

目 录 一、概述 二、网络编程三要素 1.IP 地址 2.端口号 3.通信协议 &#xff08;1&#xff09;说明 &#xff08;2&#xff09;OSI 七层参考模型 &#xff08;3&#xff09;TCP/IP 四层参考模型 三、网络编程基础类 1.InetAddress 2.URL &#xff08;1&#xff09…...

Ubuntu交叉编译器工具链安装

声明 本博客所记录的关于正点原子i.MX6ULL开发板的学习笔记&#xff0c;&#xff08;内容参照正点原子I.MX6U嵌入式linux驱动开发指南&#xff0c;可在正点原子官方获取正点原子Linux开发板 — 正点原子资料下载中心 1.0.0 文档&#xff09;&#xff0c;旨在如实记录我在学校学…...

C# 操作 Redis

一、简介 C# 中通过 StackExchange.Redis 库可以方便地操作 Redis&#xff0c;实现高性能的数据缓存和存储。StackExchange.Redis 提供了强大的 API&#xff0c;允许开发者轻松连接、读取和写入 Redis 数据。通过使用 ConnectionMultiplexer 类&#xff0c;可以建立与 Redis 服…...

基于Python的招聘推荐数据可视化分析系统

【Python】基于Python的招聘推荐数据可视化分析系统&#xff08;完整系统源码开发笔记详细部署教程&#xff09;✅ 目录 一、项目简介二、项目界面展示三、项目视频展示 一、项目简介 &#x1f680;&#x1f31f; 基于Python的招聘推荐数据可视化分析系统&#xff01;&#x1…...

光谱相机在工业中的应用

光谱相机&#xff08;多光谱、高光谱、超光谱成像技术&#xff09;在工业领域通过捕捉物质的光谱特征&#xff08;反射、透射、辐射等&#xff09;&#xff0c;结合化学计量学与人工智能算法&#xff0c;为工业检测、质量控制和工艺优化提供高精度、非接触式的解决方案。以下是…...

Nginx介绍及使用

1.Nginx介绍 Nginx是一款开源的、高性能的HTTP和反向代理服务器 1.正向代理和反向代理 正向代理&#xff08;代理客户端&#xff09;是一种位于客户端和目标服务器之间的中间服务器。客户端通过正向代理服务器向目标服务器发送请求&#xff0c;代理服务器将请求转发给目标服…...

使用PyQt5绘制水波浪形的柱状显示流量—学习QTimer+QPainterPath

前言&#xff1a;进入学习Python开发上位机界面的第二阶段&#xff0c;学习如何开发自定义控件&#xff0c;从常用的控件入手学习&#xff0c;本期主要学习如何使用PyQt5绘制水波浪形的柱状显示流量。但是最后我放弃了&#xff0c;因为水波的效果达不到我想要的。 1. 明确想要…...

C++蓝桥杯实训篇(二)

片头 嗨咯~小伙伴们&#xff01;今天我们来一起学习算法和贪心思维&#xff0c;准备好了吗&#xff1f;咱们开始咯&#xff01; 第1题 数位排序 对于这道题&#xff0c;我们需要自己写一个排序算法&#xff0c;也就是自定义排序&#xff0c;按照数位从小到大进行排序。 举一…...

如何将本地更改的README文件同步到自己的GitHub项目仓库

如何将本地更改的 README 文件同步到 GitHub 仓库 在你 git clone 下来的工程目录下&#xff1a; 先使用 robocopy YOUR\SOURCE\CODE\DIR YOUR\GIT\CLONE\DIR /E /XD .git /DCOPY:T 将你的更改Copy到你git下来的工程中&#xff08;上面的命令会自动处理&#xff0c;例如只会C…...

无人驾驶是自动化还是智能化?

这是一个由小米Su-7和人形机器人问题引起的思考&#xff1a;努力决定了下限&#xff0c;认知决定了上限。 一、无人驾驶既涉及自动化&#xff0c;也涉及智能化&#xff0c;这两者在无人驾驶系统中应该是相互融合、相辅相成的1、自动化&#xff08;Automation&#xff09; 自动化…...

实操(不可重入函数、volatile、SIGCHLD、线程)Linux

1 不可重入函数 为什么会导致节点丢失内存泄露&#xff1f;main函数在执行insert&#xff0c;但是没执行完就被信号中断了&#xff0c;又进了这个函数里&#xff0c;所以这个insert函数在不同的执行流中&#xff0c;同一个函数被重复进入&#xff0c;如果没有问题&#xff0c;…...

【Flask开发】嘿马文学web完整flask项目第2篇:2.用户认证,Json Web Token(JWT)【附代码文档】

教程总体简介&#xff1a;2. 目标 1.1产品与开发 1.2环境配置 1.3 运行方式 1.4目录说明 1.5数据库设计 2.用户认证 Json Web Token(JWT) 3.书架 4.1分类列表 5.搜索 5.3搜索-精准&高匹配&推荐 6.小说 6.4推荐-同类热门推荐 7.浏览记录 8.1配置-阅读偏好 8.配置 9.1项目…...