递归火山软件开发平台

标题: Gin 框架插件 加载匹配HTML文件 Bug 反馈报告 [打印本页]

作者: huoshan33788    时间: 9 小时前
标题: Gin 框架插件 加载匹配HTML文件 Bug 反馈报告
本帖最后由 huoshan33788 于 2026-7-12 04:38 编辑

特别懂这种难受

顺带发现第二个问题
模板加载打印:
plaintext
[GIN-debug] Loaded HTML Templates (4):
        - login.html
        - reg.html
        - user.html
        -
里面没有 index.html
说明:
加载匹配HTML文件("templates/**/*.html") 没有读到 index.html


火山软件开发平台・Gin 框架插件 模板加载功能 Bug 反馈报告
一、基础信息
反馈模块:Gin Web 框架插件(服务端 HTML 模板渲染)
运行环境:Windows 10/11 火山编程平台
插件版本:官方内置 Gin 封装插件
严重等级:高(核心 Web 模板功能异常,无标准工程化目录方案)
问题场景:服务端渲染 SSR 开发、多页面项目、公共片段模板复用、分层目录管理模板文件
二、核心问题汇总(2 个底层封装缺陷)
问题 1:加载匹配HTML文件() 多次调用会直接清空并覆盖全部已加载模板,而非追加合并
原生 Go Gin 标准行为
LoadHTMLGlob() 多次调用为增量追加解析模板,多条 glob 规则可叠加载入不同目录模板,互不覆盖。
火山插件异常表现
先执行:加载匹配HTML文件("templates/*.html"),成功加载首页、登录、注册等根目录页面模板;
再执行:加载匹配HTML文件("templates/partials/*.html"),上一步所有模板直接被清空丢弃,仅保留本次匹配的 partials 子目录模板;
后续访问首页路由直接报错 template "index.html" is undefined,页面 404 无法渲染。
复现代码
火山
取程序().全局引用.Gin引擎.加载匹配HTML文件("templates/*.html")
// 第二次调用直接覆盖销毁前面所有模板
取程序().全局引用.Gin引擎.加载匹配HTML文件("templates/partials/*.html")
开发者痛点
项目规范分层(页面模板 / 公共组件模板分目录存放)是 Web 开发通用规范,因该覆盖问题,无法使用多 glob 路径批量加载多目录模板,只能被迫两种极端方案:
所有 HTML 文件全部平铺在 templates 根目录,项目文件杂乱无章;
手动罗列每一个 HTML 绝对路径写入加载HTML文件(),新增页面必须修改启动代码,维护成本极高。
问题 2:加载匹配HTML文件() 不支持标准递归通配符 **,无法一键递归扫描多级子目录
原生 Gin 标准语法
LoadHTMLGlob("templates/**/*.html") 可递归遍历 templates 下所有层级子文件夹,一次性载入全部 html 模板,是行业通用写法。
火山插件限制
传入 templates/**/*.html 无法匹配任何文件,加载日志无任何模板载入;
仅支持单层通配 *.html,只能匹配当前指定目录一级文件,不能向下递归;
Windows 环境下无替代递归方案,插件未封装目录遍历自动加载逻辑。
三、衍生连锁问题(用户实际开发报错)
按照 Web 工程规范新建partials公共模板文件夹存放头部、页脚复用组件,没有合法加载方式;
路由注册无语法错误,但启动后访问首页直接 404、提示NoRoute,根源为模板被覆盖丢失;
新手对照全网 Gin 教程编写代码完全无法运行,教程通用写法与火山封装行为不一致,学习成本极高;
项目体量稍大后模板文件难以分类管理,只能放弃目录分层,不符合软件工程化习惯。
四、临时规避方案(用户被迫使用)
取消子文件夹结构,所有 HTML 模板平铺至 templates 根目录,仅单行代码加载:
火山

                    

                        

                           

                           
正在渲染火山代码...

                        

                    

                    复制代码
               

五、期望官方修复方案(二选一即可)
方案 A(推荐最小改动)
修改 加载匹配HTML文件() 底层逻辑:
多次调用该方法时,新匹配到的模板追加合并进模板池,不再清空原有模板;
兼容识别 ** 递归通配符,实现一键遍历目标目录所有子层级 HTML 文件。
方案 B(兼容原生 Gin)
新增封装方法,完全对齐原生 Gin LoadHTMLGlob 原生逻辑,支持递归 glob 与增量加载。
六、补充参考
论坛已有其他开发者反馈同款问题:https://bbs.voldp.com/forum.php?mod=viewthread&tid=28283
属于插件封装层面未对齐 Gin 原生 API 设计,并非用户代码编写错误。
七、结尾建议
该功能属于 Gin 插件 Web 开发核心基础能力,目前封装行为与主流开发范式冲突较大,容易误导新手、增加项目维护负担,恳请官方评估迭代优化。










作者: 创世魂    时间: 3 小时前
加载匹配HTML文件  就是gin官方的方法,不是火山自己封装的。无法修改任何逻辑。用的就是 LoadHTMLGlob

作者: 创世魂    时间: 3 小时前
本帖最后由 创世魂 于 2026-7-12 09:51 编辑

大概率是你对 gin框架不太了解导致的问题。。

火山封的gin都是官方库的方法,也没有对官方库进行任何的修改。

先执行:加载匹配HTML文件("templates/*.html"),成功加载首页、登录、注册等根目录页面模板;
再执行:加载匹配HTML文件("templates/partials/*.html"),上一步所有模板直接被清空丢弃,仅保留本次匹配的 partials


你说的这个,是gin框架就是这么设定的。。本身就会覆盖,不会递增。。

作者: 飞拓联创    时间: 3 小时前
(, 下载次数: 1)
(, 下载次数: 1)
直接发送文件方式





欢迎光临 递归火山软件开发平台 (https://bbs.voldp.com/) Powered by Discuz! X3.4