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 的渲染。效果如下
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/75363.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

openEuler24.03 LTS下安装HBase集群

前提条件 安装好Hadoop完全分布式集群&#xff0c;可参考&#xff1a;openEuler24.03 LTS下安装Hadoop3完全分布式 安装好ZooKeeper集群&#xff0c;可参考&#xff1a;openEuler24.03 LTS下安装ZooKeeper集群 HBase集群规划 node2node3node4MasterBackup MasterRegionServ…

LVGL移植说明

https://www.cnblogs.com/FlurryHeart/p/18104596 参考&#xff0c;里面说明了裸机移植以及freeRTOS系统移植。 移植到linux https://blog.csdn.net/sunchao124/article/details/144952514

ubuntu虚拟机裁剪img文件系统

1. 定制文件系统前期准备 将rootfs.img文件准备好&#xff0c;并创建target文件夹2. 挂载文件系统 sudo mount rootfs.img target #挂载文件系统 sudo chroot target #进入chroot环境3. 内裁剪文件系统 增删裁剪文件系统 exit #退出chroot环境 sudo umount target…

esp826601s固件烧录方法(ch340+面包板)

esp826601s固件烧录方法&#xff08;ch340面包板&#xff09; 硬件 stm32f10c8t6&#xff0c;esp826601s,面包板&#xff0c;ch340(usb转ttl),st_link&#xff08;供电&#xff09; 接线 烧录时&#xff1a; stm32f10c8t6&#xff1a;gnd->负极&#xff0c; 3.3->正极…

Servlet 点击计数器

Servlet 点击计数器 引言 Servlet 是 Java 企业版&#xff08;Java EE&#xff09;技术中的一种服务器端组件&#xff0c;用于处理客户端请求并生成动态内容。本文将详细介绍如何使用 Servlet 实现一个简单的点击计数器&#xff0c;帮助读者了解 Servlet 的基本用法和原理。 …

LangChain vs. LlamaIndex:深入对比与实战应用

目录 引言LangChain 与 LlamaIndex 概述 什么是 LangChain&#xff1f;什么是 LlamaIndex&#xff1f;两者的核心目标与适用场景 架构与设计理念 LangChain 的架构设计LlamaIndex 的架构设计关键技术差异 核心功能对比 数据连接与处理查询与检索机制上下文管理能力插件与扩展性…

【Java中级】10章、内部类、局部内部类、匿名内部类、成员内部类、静态内部类的基本语法和细节讲解配套例题巩固理解【5】

❤️ 【内部类】干货满满&#xff0c;本章内容有点难理解&#xff0c;需要明白类的实例化&#xff0c;学完本篇文章你会对内部类有个清晰的认知 &#x1f495; 内容涉及内部类的介绍、局部内部类、匿名内部类(重点)、成员内部类、静态内部类 &#x1f308; 跟着B站一位老师学习…

内容中台:驱动多渠道营销的关键策略

在数字营销快速发展的今天&#xff0c;企业需要在多个渠道&#xff08;网站、社交媒体、移动应用等&#xff09;上同步管理内容。尽管网站仍是品牌展示的核心&#xff0c;但信息分散、多平台重复创建内容的问题&#xff0c;让营销人员面临巨大的管理挑战。 内容中台&#xff0…

SvelteKit 最新中文文档教程(17)—— 仅服务端模块和快照

前言 Svelte&#xff0c;一个语法简洁、入门容易&#xff0c;面向未来的前端框架。 从 Svelte 诞生之初&#xff0c;就备受开发者的喜爱&#xff0c;根据统计&#xff0c;从 2019 年到 2024 年&#xff0c;连续 6 年一直是开发者最感兴趣的前端框架 No.1&#xff1a; Svelte …

CMake 中的置变量

在 CMake 中&#xff0c;变量是存储和传递信息的重要方式。以下是一些常用的 CMake 变量&#xff0c;以表格形式列出&#xff0c;包括它们的名称、含义和常见用途&#xff1a; 变量名称含义常见用途CMAKE_CURRENT_SOURCE_DIR当前处理的 CMakeLists.txt 文件所在的源代码目录的…

深入解析C++类:面向对象编程的核心基石

一、类的本质与核心概念 1.1 类的基本定义 类是将**数据&#xff08;属性&#xff09;与操作&#xff08;方法&#xff09;**封装在一起的用户自定义类型&#xff0c;是面向对象编程的核心单元。 // 基础类示例 class BankAccount { private: // 访问控制string owner; …

介绍 Docker 的基本概念和优势,以及在应用程序开发中的实际应用及数组讲解

Docker 是一种轻量级的容器化技术&#xff0c;能够让开发者将应用程序和其所有依赖项打包成一个独立的容器&#xff0c;实现快速部署和运行。以下是 Docker 的基本概念和优势&#xff1a; 基本概念&#xff1a; 镜像&#xff08;Image&#xff09;&#xff1a;镜像是一个只读的…

在msys2里面的mingw64下面编译quickjs

其实非常的简单&#xff0c;就是正常的make 和make install就行了&#xff0c;这里只是简单的做个编译过程记录。 打开开始--程序--里面的msys64里面的mingw64控制台窗口&#xff0c;切换到quickjs下载解压缩后的目录&#xff0c;执行make和make install ndyHP66G5 MINGW64 ~…

el-table实现表头带筛选功能,并支持分页查询

最开始尝试了下面方法&#xff0c;发现这种方法仅支持筛选当前页的数据&#xff0c;不符合产品要求 于是通过查询资料发现可以结合filter-change事件&#xff0c;当表格的筛选条件发生变化的时候会触发该事件&#xff0c;调接口获取符合条件的数据&#xff0c;实现如下 1、表格…

OpenCV 从入门到精通(day_03)

1. ROI切割 ROI&#xff1a;Region of Interest&#xff0c;翻译过来就是感兴趣的区域。什么意思呢&#xff1f;比如对于一个人的照片&#xff0c;假如我们要检测眼睛&#xff0c;因为眼睛肯定在脸上&#xff0c;所以我们感兴趣的只有脸这部分&#xff0c;其他都不care&#xf…

OpenGL进阶系列20 - OpenGL SuperBible - bindlesstex 例子学习

目录 一:概述: 二:相关API介绍 三:代码完整注释 一: 概述: 什么是无绑定纹理(bindless texture)?无绑定纹理是OpenGL的一项技术,旨在消除传统的纹理绑定操作。这项技术允许着色器直接访问纹理而不需要显式地将纹理绑定到某个纹理单元,从而减少了渲染管线中的开销…

Spring Security认证授权深度解析

一 Spring Security简介 Spring Security是Spring生态系统中的一个安全框架&#xff0c;主要用于处理认证(Authentication)和授权(Authorization)。它提供了一套完整的安全解决方案&#xff0c;可以轻松集成到Spring应用中。 二 核心概念 1. 认证(Authentication) 验证用户…

[学成在线]10-课程审核

课程审核 需求分析 根据模块需求分析&#xff0c;课程发布前要先审核&#xff0c;审核通过方可发布。下图是课程审核及发布的流程图&#xff1a; 为什么课程审核通过才可以发布呢&#xff1f; 这样做为了防止课程信息有违规情况&#xff0c;课程信息不完善对网站用户体验也不…

【SpringBoot + MyBatis + MySQL + Thymeleaf 的使用】

目录&#xff1a; 一&#xff1a;创建项目二&#xff1a;修改目录三&#xff1a;添加配置四&#xff1a;创建数据表五&#xff1a;创建实体类六&#xff1a;创建数据接口七&#xff1a;编写xml文件八&#xff1a;单元测试九&#xff1a;编写服务层十&#xff1a;编写控制层十一…

Elasticsearch索引的字段映射

目录 type String类型 text和keyword的区别 数值类型 日期类型 index doc_values fields analyzer store index_options ElasticSearch索引映射示例 Elasticsearch中的字段设置直接影响数据的存储、索引和查询行为。结合索引查询场景合理设置mapping信息可以起到提…