惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Recent Announcements
Recent Announcements
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
量子位
博客园 - 司徒正美
Security Archives - TechRepublic
Security Archives - TechRepublic
P
Palo Alto Networks Blog
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
Cyberwarzone
Cyberwarzone
小众软件
小众软件
T
Threatpost
Latest news
Latest news
J
Java Code Geeks
博客园 - Franky
博客园 - 三生石上(FineUI控件)
Project Zero
Project Zero
P
Privacy & Cybersecurity Law Blog
T
Tenable Blog
L
Lohrmann on Cybersecurity
大猫的无限游戏
大猫的无限游戏
WordPress大学
WordPress大学
Apple Machine Learning Research
Apple Machine Learning Research
Scott Helme
Scott Helme
Simon Willison's Weblog
Simon Willison's Weblog
C
CXSECURITY Database RSS Feed - CXSecurity.com
P
Privacy International News Feed
人人都是产品经理
人人都是产品经理
S
Schneier on Security
T
The Blog of Author Tim Ferriss
V
V2EX
有赞技术团队
有赞技术团队
Y
Y Combinator Blog
罗磊的独立博客
IT之家
IT之家
雷峰网
雷峰网
H
Help Net Security
C
Cyber Attacks, Cyber Crime and Cyber Security
T
Tor Project blog
C
Cybersecurity and Infrastructure Security Agency CISA
I
InfoQ
GbyAI
GbyAI
博客园 - 叶小钗
PCI Perspectives
PCI Perspectives
The GitHub Blog
The GitHub Blog
Martin Fowler
Martin Fowler
H
Heimdal Security Blog
Spread Privacy
Spread Privacy
博客园_首页
A
About on SuperTechFans
T
Tailwind CSS Blog
The Register - Security
The Register - Security

二丫讲梵

学习周刊-总第258期-2026年第15周 学习周刊-总第257期-2026年第14周 学习周刊-总第256期-2026年第13周 学习周刊-总第255期-2026年第12周 学习周刊-总第254期-2026年第11周 学习周刊-总第253期-2026年第10周 临时插播一条羊毛,免费领取450元大模型API代金券 学习周刊-总第252期-2026年第09周 学习周刊-总第251期-2026年第08周 学习周刊-总第250期-2026年第07周 学习周刊-总第249期-2026年第06周 诚邀评论,聊聊你所知欲知的我 学习周刊-总第248期-2026年第05周 我的QQ动态之2015年 我的QQ动态之2014年 我的QQ动态之2013年 我的QQ动态之2012年 我的QQ动态-2010-2011年 我的QQ动态-创栏小叙 学习周刊-总第247期-2026年第04周 Nexus社区版权益阉割--一文告诉你有哪些版本可以选择 学习周刊-总第246期-2026年第03周 学习周刊-总第245期-2026年第02周 学习周刊-总第244期-2026年第01周 学习周刊-总第243期-2025年第52周 学习周刊-总第242期-2025年第51周 开源项目ZenOps:带你领略禅意运维 学习周刊-总第241期-2025年第50周 用京东金融,享负债人生 学习周刊-总第240期-2025年第49周 学习周刊-总第239期-2025年第48周 整理我在静态服务透明代理上的极致求索之路,最后一个你绝想不到 学习周刊-总第238期-2025年第47周 我们输了,但收获颇多 太多了,太多了 学习周刊-总第237期-2025年第46周 学习周刊-总第236期-2025年第45周 学习周刊-总第235期-2025年第44周 二五年国庆二三事 学习周刊-总第234期-2025年第43周 学习周刊-总第233期-2025年第42周 学习周刊-总第232期-2025年第41周 学习周刊-总第231期-2025年第40周 学习周刊-总第230期-2025年第39周 西湖毅行 2025年开源世界逸闻三则 学习周刊-总第229期-2025年第38周 手抄《与妻书》 CNB开发与构建基于docker-cache缓存复用的配置实践心得 学习周刊-总第228期-2025年第37周 父亲善行录 学习周刊-总第227期-2025年第36周 带你认识我之看看我的高中同学录(其二) 学习周刊-总第226期-2025年第35周 带你认识我之看看我的高中同学录(其一) 认识神级MCP工具系列--用anyquery和数据库交互 学习周刊-总第225期-2025年第34周 学习周刊-总第224期-2025年第33周 学习周刊-总第223期-2025年第32周 学习周刊-总第222期-2025年第31周 学习周刊-总第221期-2025年第30周 CNB云原生开发环境届的瑞士军刀,详解qifei项目 vuepress-vdoing主题配置自建不蒜子统计 学习周刊-总第220期-2025年第29周 写在博客发表文章1000篇的节点 从claude cli的体验聊聊最大的敌人是我们自己的成见 学习周刊-总第219期-2025年第28周 学习周刊-总第218期-2025年第27周 学习周刊-总第217期-2025年第26周 理论正确,事实错误 学习周刊-总第216期-2025年第25周 学习周刊-总第215期-2025年第24周 学习周刊-总第214期-2025年第23周 学习周刊-总第213期-2025年第22周 学习周刊-总第212期-2025年第21周 从赵心童世锦赛夺冠聊聊我的斯诺克情缘 学习周刊-总第211期-2025年第20周 记录二五年五一之短暂回归家庭 学习周刊-总第210期-2025年第19周 学习周刊-总第209期-2025年第18周 学习周刊-总第208期-2025年第17周 Go开发实践之Gin框架将前端的dist目录embed到二进制 学习周刊-总第207期-2025年第16周 近期关于cobra库的一些实践心得总结 学习周刊-总第206期-2025年第15周 我的嗜好--嗑瓜子 记大宝参加幼儿园组织的清明烈士陵园扫墓活动 学习周刊-总第205期-2025年第14周 学习周刊-总第204期-2025年第13周 前端开发小笔记--在数组中给字段添加值与删除字段的操作 学习周刊-总第203期-2025年第12周 人生实苦,何以自渡 学习周刊-总第202期-2025年第11周 近期发现的一些优秀的工具提名(一) 学习周刊-总第201期-2025年第10周 学习周刊-总第200期-2025年第09周 记一次女友喝醉使我忍术破功 爱情风波--一次分手又复合的经历 学习周刊-总第199期-2025年第08周 整理我的信息源
过年时鼓捣xirang框架遇到的前后端问题两则
二丫讲梵 · 2024-02-20 · via 二丫讲梵

过年在家时,借鉴 gin-vue-admin 项目的多模块儿思路,抽空把 xirang (opens new window) 项目做了一波大改造,使之更加底层,也更易于扩展。在这个折腾的过程中,前后端都遇到了一个问题,在此记录。

# 后端-go-playground/validator 校验的零值问题

与其他 go-web 项目类似,我的这个框架中前端的菜单也是由后端管理的动态路由,这个路由是一个树的概念,每个层级通过 ParentId 字段串联,在请求参数中,这个字段的配置如下:

	ParentId uint `json:"parentId" validate:"required"`

1

之前针对菜单的增删改查一直没遇到什么问题,这次因为模块儿调整,涉及到一级目录的调整,发现更新一级目录的时候,总是会报一个错误:ParentId为必填字段,然而打开请求参数,却又发现,这个字段明明已经正常传递了值的:

经过网上一番检索,发现问题出在了 validate:"required",当你这么配置的时候,意味着该字段为必填,且不能为零值,而针对 uint 类型而言,0 则是不符合条件的,因此会出现这个错误。

这里可以调整为如下配置:

	ParentId uint `json:"parentId" validate:"gte=0"`

1

表示校验对应值大于等于 0 即可。

# 前端-多层路由面包屑重复渲染的问题

当我把项目重新设计为多模块儿之后,原本只有两级的菜单,会变成三级,因为自己对前端的一知半解,出现字段配置错误,从而搞出了一个卡了我半个月的问题来。

原本菜单中的日志管理是二级目录,现在统一划归到系统管理下,就自动变为三级目录,而在创建二级目录日志管理时,我想当然的以为目录的 component 应该跟一级目录一样,配置为 Layout,于是我就这么配了,配置之后发现,点击页面之后,出现的效果如下:

跳入这个坑之后,我就进入到了一个貌似没人踩过的坑里,检索了大量的网页,也没有寻到与我相同的问题。真正前端行内的人,也许不会犯我这种门外汉想当然而造成的错误。

不过出现问题也不见得是坏事,问题没有解决的这些日子里,我无法安稳入睡,无法将其他项目往前推进,始终念念不完,反而催促自己,阅读了解项目的源码架构,以及在 vue-element-admin 项目的 issue 区、官方文档中反复浏览。

但是最终仍旧没能将原因找到,更莫提问题的解决,我甚至已经开始了解新的框架 pure-admin 了。

后来还是在专业前端人士的指导下,发现了问题的根源,我的 日志管理 的配置的问题,我的配置信息如下:

{
	Model:     gorm.Model{ID: 7},
	Name:      "Log",
	Title:     "日志管理",
	Icon:      "log",
	Path:      "log",
	Component: "Layout",
	Redirect:  "/system/log/operationLog",
	Sort:      7,
	ParentId:  uint1,
	Roles:     roles[:2],
	Creator:   "系统",
}

1
2
3
4
5
6
7
8
9
10
11
12
13

问题原因:日志管理是二级菜单,而我配置的 component 为 Layout,目前还不是很了解这个 Layout 的意义代表什么,只不过将其改为如下信息:

{
	Model:     gorm.Model{ID: 7},
	Name:      "Log",
	Title:     "日志管理",
	Icon:      "log",
	Path:      "log",
	Component: "/system/log/index",
	Redirect:  "/system/log/operationLog",
	Sort:      7,
	ParentId:  uint1,
	Roles:     roles[:2],
	Creator:   "系统",
}

1
2
3
4
5
6
7
8
9
10
11
12
13

然后在 src/system/log 下创建 index.vue 文件,写入如下内容:

<!-- 如果路由有多个层级,那么此处需要如下代码,详见:https://panjiachen.github.io/vue-element-admin-site/zh/guide/essentials/router-and-nav.html#%E5%A4%9A%E7%BA%A7%E7%9B%AE%E5%BD%95-%E5%B5%8C%E5%A5%97%E8%B7%AF%E7%94%B1 -->
<template>
  <router-view />
</template>

1
2
3
4

此时再次点击操作日志的页面,就不会再出现顶部重复渲染的问题了。