模块:NavboxV2/doc
这是Module:NavboxV2的文档页面
| 此模块文档被引用于约52,000个页面。 为了避免造成大规模的影响,所有对此模块文档的编辑应先于沙盒或测试样例上测试。实施修改前,建议先在讨论页发起讨论。 模板引用数量会自动更新。 |
| 此模板不能在维基百科的移动版网页中显示,只能在桌面版网页中显示。 |
| 此模块使用Lua语言: |
| 本模块使用以下模板样式: |
{{NavboxV2}}是新一代高性能、集成化的多功能导航框模板,合并了{{Navbox}}相关的一系列模板。融合了{{Navbox}}的行式、{{Navbox subgroup}}的子代模块包含、{{Navbox with columns}}的列式,{{Navbox with collapsible groups}}的折叠行式。
若有进一步降低模板展开后长度的需要,可将{{NavboxV2|...替换为{{#invoke:NavboxV2|navbox|...,以直接调用底层Lua模块。
机制/原理
[编辑]简介
[编辑]合并了{{Navbox}}相关的一系列模板。融合了{{Navbox}}的行式、{{Navbox subgroup}}的子代模块包含、{{Navbox with columns}}的列式,{{Navbox with collapsible groups}})的折叠行式。
改写自模块:Navbox(oldid=42280913)。
设计用途
[编辑]在Category:引用模板后大小超过限制的页面中,有相当一部分页面是由于{{Navbox}}模板超载导致:
- 根据WP:模板限制中“嵌套展开”的说法,相同页面的多次嵌套调用是会被分次统计的(例如:页面A嵌入页面B,页面B嵌入页面C,页面C相对页面A统计到的展开字节数是被计算了2次)。而现在Navbox的子代块、列式,折叠行式的实现都是基于Navbox行式的模板调用或类似样式结构迭代,这样就符合内部多次调用Navbox的条件,页面很容易会超过模版展开后大小的限制。
- 实际上Lua的运行限制条件相当宽裕,50MB的内存限制,10秒的运行时限制,很多页面实际使用只在十分之一左右或以下,可以被大量压榨性能。
所以将Navbox所有的实现全部以Lua实现,希望能腾出解释器运行量到Lua运行量,降低解析器触发展开后大小限制的可能。
效果
[编辑]- 在对于包含一层子Navbox的情况,展开后大小下降最多有50~60%左右。
对比例子
[编辑]用法
[编辑]参数
[编辑]与{{Navbox}}系列模板基本兼容,首层Navbox无需加入border,按需指定type即可,并新增部分参数填入:
type:Navbox的类型,对应值为vertical(对应{{Navbox}})、horizontal(对应{{Navbox with columns}})、vertical_collapsible(对应{{Navbox with collapsible groups}}),默认值为vertical。border:Navbox的隐藏参数,用于控制Navbox的边框机制,来使子Navbox能被嵌入到父Navbox的值字段(例如list、col等)中,实际对应{{Navbox subgroup}}或{{Navbox|child}}的实现机制。对应值为child、subgroup任一个。
- 在本模板添加子Navbox层时,必须传入这两个参数,这是本模板区分是否存在子Navbox层的依赖。本模板首层Navbox层无需添加
border,按需添加type。
- 在本模板添加子Navbox层时,必须传入这两个参数,这是本模板区分是否存在子Navbox层的依赖。本模板首层Navbox层无需添加
removeGroupPadding:用于区别{{Navbox|child}}和{{Navbox subgroup}},后者在Groupn字段的单元格增加一组padding的配置,适用于子Navbox层。任意值,存在则可,为移除该padding配置(对应{{Navbox|child}})。- {{Navbox subgroup}}是{{Navbox generic}}改型为{{Navbox}}后的遗漏产物,在此变更后等效于{{Navbox|child}},该参数不再使用。
主参数
[编辑]| 参数名 | 默认值 | 说明 |
|---|---|---|
| type | vertical | Navbox类型:
vertical:垂直列表行式(对应{{Navbox}}) horizontal:水平分栏列式(对应{{Navbox with columns}}) vertical_collapsible:折叠行式(对应{{Navbox with collapsible groups}}) |
| border | 空 | 用于控制Navbox边框机制。嵌入子Navbox时填入child或 ubgroup(两者等效);若设为none则无边框。
|
| name | 空 | 模板页面名称,用于生成查·論·編的{{Navbar}}导航链接。
|
| state | autocollapse | 折叠状态:autocollapse、collapsed、expanded、plain、off。
|
| navbar | 空 | 设为off或plain时关闭Navbar。
|
| evenodd | 空 | 控制列表斑马纹:odd、even、swap(对调顺序)、off(关闭)。
|
| removeGroupPadding | 空 | (已废弃) 原用于区分{{Navbox|child}}与{{Navbox subgroup}}。在此更改后两者等效,该参数已不再使用。 |
子Navbox层识别参数
[编辑]在本模板添加子Navbox层时,必须同时传入以下两个前缀参数,这是本模板区分是否存在子Navbox层的判定依据:
| <list/content>N-type = vertical | horizontal | vertical_collapsible | <list/content>N-border = child | subgroup
例如:在list1嵌入子导航框,应宣告list1-type = vertical及list1-border = child。
外观与总样式
[编辑]| 参数名 | 说明 |
|---|---|
| navboxclass / bodyclass | 容器与内部表格的CSS类别(推荐设置hlist)。
|
| style / bodystyle | 外层容器样式。 |
| basestyle | 同时套用于title、above、below、group的基础样式。
|
| titlestyle / titleclass | 标题栏样式与类别。 |
| groupstyle / groupwidth | 分组表头统一样式与宽度。 |
| liststyle / listpadding | 列表单元格统一样式与内边距。 |
| oddstyle / evenstyle | 奇数、偶数行单元格样式。 |
| templatestyles | 额外加载的TemplateStyles页面。 |
垂直列表模式参数(type=vertical,上限35组)
[编辑]| 参数名 | 说明 |
|---|---|
| groupn | 第n项分组表头文字。 |
| listn | 第n项列表内容。 |
| groupnstyle / listnstyle | 第n项专用样式。 |
水平分栏模式参数(type=horizontal,上限20栏、10列)
[编辑]| 参数名 | 说明 |
|---|---|
| colwidth/fullwidth | 字段统一宽度/是否强制表格宽度为100%。
|
| colnheader | 第n栏表头。 |
| coln | 第n栏主要内容。 |
| colnfooter | 第n栏页脚。 |
| colnwidth | 第n栏独立宽度。 |
| colnheadercolspan | 第n栏表头跨栏数。 |
折叠分组模式参数(type=vertical_collapsible,上限20组)
[编辑]| 参数名 | 说明 |
|---|---|
| groupn / sectn / sectionn | 第n个可折叠分组的标题。 |
| contentn / listn | 第n个折叠组展开后的内容。 |
| abbrn | 分组简称。搭配顶层selected = <abbrN>指定默认展开的分组。
|
| staten | 指定第n个分组的折叠状态(collapsed或expanded)。
|
示例
[编辑]标准
[编辑]即type=vertical。
{{NavboxV2
| type = vertical
| name = Template:主要作業系統
| title = 主要[[作業系統]]
| state = autocollapse
| bodyclass = hlist
| above = 按內核架構與授權類型分類的現代常見作業系統
| group1 = [[類Unix]]系統
| list1 =
[[Linux]]
** [[Android]]
** [[Ubuntu]]
** [[Debian]]
** [[Fedora]]
[[BSD]]
** [[FreeBSD]]
** [[OpenBSD]]
[[macOS]]
[[iOS]]
| group2 = [[Windows NT]]系列
| list2 =
[[Windows 10]]
[[Windows 11]]
[[Windows Server 2022]]
[[Windows Server 2025]]
| group3 = 即時與微核心
| list3 =
[[QNX]]
[[VxWorks]]
[[FreeRTOS]]
[[鴻蒙|HarmonyOS]]
| below = 參見:[[作業系統列表]] · [[作業系統歷史]]
}}
水平列式
[编辑]即type=horizontal。
{{NavboxV2
| type = horizontal
| name = Template:電腦核心硬體
| title = 個人電腦主要核心硬體架構
| state = autocollapse
| colwidth = 25%
| fullwidth = true
| col1header = [[中央處理器]](CPU)
| col1 =
[[算術邏輯單元]](ALU)
[[控制單元]](CU)
[[快取]](L1/L2/L3 Cache)
[[暫存器]]
| col1footer = 運算與指令處理核心
| col2header = [[圖形處理器]](GPU)
| col2 =
[[串流多處理器]](SM)
光線追蹤單元(RT Core)
張量計算單元(Tensor Core)
視訊編解碼器
| col2footer = 大規模並行渲染
| col3header = [[隨機存取記憶體]](RAM)
| col3 =
[[DDR SDRAM]](DDR4 / DDR5)
[[LPDDR]]
[[ECC記憶體|ECC 糾錯]]
雙通道 / 四通道匯流排
| col3footer = 高速揮發性資料暫存
| col4header = [[電腦數據存儲|持久化儲存]](Storage)
| col4 =
[[固態硬碟]](PCIe NVMe SSD)
[[硬碟]](SATA HDD)
[[快閃記憶體]](NAND Flash)
主控晶片
| col4footer = 非揮發性檔案存儲
| below = 參見:[[馮·諾曼架構]] · [[主機板]] · [[匯流排]]
}}
折叠分组
[编辑]即type=type = vertical_collapsible。
{{NavboxV2
| type = vertical_collapsible
| name = Template:漫威電影宇宙
| title = [[漫威電影宇宙]](MCU)系列作品
| state = autocollapse
| bodyclass = hlist
| selected = phase3 <!-- 預設僅展開第三階段,第一、第二階段保持折疊 -->
| sect1 = 第一階段:復仇者集結(2008年-2012年)
| abbr1 = phase1
| list1 =
《[[鋼鐵人 (電影)|鋼鐵人]]》(2008)
《[[無敵浩克]]》(2008)
《[[鋼鐵人2]]》(2010)
《[[雷神索爾 (電影)|雷神索爾]]》(2011)
《[[美國隊長 (電影)|美國隊長]]》(2011)
《[[復仇者聯盟 (電影)|復仇者聯盟]]》(2012)
| sect2 = 第二階段(2013年-2015年)
| abbr2 = phase2
| list2 =
《[[鋼鐵人3]]》(2013)
《[[雷神索爾2:黑暗世界]]》(2013)
《[[美國隊長2:酷寒戰士]]》(2014)
《[[星際異攻隊 (電影)|星際異攻隊]]》(2014)
《[[復仇者聯盟2:奧創紀元]]》(2015)
《[[蟻人 (電影)|蟻人]]》(2015)
| sect3 = 第三階段:無限傳奇完結(2016年-2019年)
| abbr3 = phase3
| list3 =
《[[美國隊長3:英雄內戰]]》(2016)
《[[奇異博士 (電影)|奇異博士]]》(2016)
《[[星際異攻隊2]]》(2017)
《[[蜘蛛人:返校日]]》(2017)
《[[雷神索爾3:諸神黃昏]]》(2017)
《[[黑豹 (電影)|黑豹]]》(2018)
《[[復仇者聯盟3:無限之戰]]》(2018)
《[[蟻人與黃蜂女]]》(2018)
《[[驚奇隊長 (電影)|驚奇隊長]]》(2019)
《[[復仇者聯盟:終局之戰]]》(2019)
《[[蜘蛛人:離家日]]》(2019)
| below = 參見:[[漫威電影宇宙電影列表]] · [[漫威電影宇宙電視劇]]
}}
混合
[编辑]{{NavboxV2
| name = Template:太陽系探測
| title = [[太陽系]]空間探測任務
| state = autocollapse
| bodyclass = hlist
| above = 人類發射前往地月系以外天體的無人探測器與深空任務
| group1 = [[太陽]]
| list1 =
[[尤利西斯號]]
[[SOHO (太空船)|SOHO]]
[[日地關係天文台|STEREO]]
[[帕克太陽探測器]]
[[太陽軌道載具]]
| group2 = [[行星]]
| list2-type = vertical
| list2-border = child
| list2-group1 = [[水星]]
| list2-list1 =
[[水手10號]]
[[信使號]]
[[貝皮可倫坡號]]
| list2-group2 = [[金星]]
| list2-list2 =
[[水手2號]]
[[金星先鋒號]]
[[麥哲倫號]]
[[破曉號]]
| list2-group3 = [[火星]]
| list2-list3 =
[[海盜號]]
[[火星全球探勘者號]]
[[好奇號]]
[[毅力號]]
[[天問一號]]([[祝融號火星車|祝融號]])
| list2-group4 = 外行星
| list2-list4 =
[[先鋒10號]]
[[航海家1號]]
[[航海家2號]]
[[伽利略號]]
[[卡西尼-惠更斯號]]
[[朱諾號]]
| group3 = 參與機構
| list3-type = horizontal
| list3-border = child
| list3-colwidth = 25%
| list3-col1header = 美洲
| list3-col1 =
[[NASA]](美國)
[[加拿大太空局|CSA]](加拿大)
| list3-col2header = 歐洲
| list3-col2 =
[[歐洲太空總署|ESA]](歐洲多國)
[[法國國家太空研究中心|CNES]](法國)
[[德國航空太空中心|DLR]](德國)
| list3-col3header = 亞洲
| list3-col3 =
[[國家航天局|CNSA]](中國)
[[宇宙航空研究開發機構|JAXA]](日本)
[[印度太空研究組織|ISRO]](印度)
| list3-col4header = 其他
| list3-col4 =
[[俄羅斯航太|Roscosmos]](俄羅斯)
[[阿聯酋太空總署|UAESA]](阿聯)
| below = 參見:[[太陽系探測任務列表]] · [[深空網路]] · [[火星探測]]
}}
将原有嵌入{{Navbox}}系列模板的值字段listn(其他类同)改为listn-,并作为相应嵌套子Navbox模板的参数的前缀来加入,使这些模板嵌套转换为扁平化的一层模板参数。
| {{Navbox}}系列 | 本模板 |
|---|---|
{{Navbox
|name = Navbox/doc
|state = expanded
|image = {{{image}}}
|imageleft = {{{imageleft}}}
|title = {{{title}}}
|above = {{{above}}}
|group1 = {{{group1}}}
|list1 = {{Navbox subgroup
| title = {{{list1-title}}}
| above = {{{list1-above}}}
| below = {{{list1-below}}}
| imageleft = {{{list1-imageleft}}}
| image = {{{list1-image}}}
| group1 = {{{list1-group1}}}
| list1 = {{{list1-list1}}}
| group2 = {{{list1-group2}}}
| list2 = {{{list1-list2}}}
}}
|group2 = {{{group2}}}
|list2 = {{Navbox subgroup
| group1 = {{{list2-group1}}}
| list1 = {{{list2-list1}}}
| group2 = {{{list2-group2}}}
| list2 = {{{list2-list2}}}
}}
|below = {{{below}}}
}}
|
{{NavboxV2
|name = Navbox/doc
|state = expanded
|tracking = no
|image = {{{image}}}
|imageleft = {{{imageleft}}}
|title = {{{title}}}
|above = {{{above}}}
<!-- list1 -->
|group1 = {{{group1}}}
<!-- list1-sub-->
|list1-type =vertical <!--作为list1的子Navbox层,全部相应参数加上对应前缀“list1-”,下同,如此类推 -->
|list1-border=child
|list1-title = {{{list1-title}}}
|list1-above = {{{list1-above}}}
|list1-below = {{{list1-below}}}
|list1-imageleft = {{{list1-imageleft}}}
|list1-image = {{{list1-image}}}
|list1-group1 = {{{list1-group1}}}
|list1-list1 = {{{list1-list1}}}
|list1-group2 = {{{list1-group2}}}
|list1-list2 = {{{list1-list2}}}
<!-- list2 -->
|group2 = {{{group2}}}
<!-- list2-sub-->
|list2-type =vertical <!--作为list2的子Navbox层,全部相应参数加上对应前缀“list2-”,下同,如此类推 -->
|list2-border=child
|list2-group1 = {{{list2-group1}}}
|list2-list1 = {{{list2-list1}}}
|list2-group2 = {{{list2-group2}}}
|list2-list2 = {{{list2-list2}}}
<!--end-->
|below = {{{below}}}
}}
|
注意事项
[编辑]转换注意
[编辑]由于{{Navbox}}系列的实现较为复杂和涉及自我嵌套,本模板的实现也为此做了对应兼容性调整,可能会出现一些参数被过度透传(可能在样式控制部分,原因是原有设计通过控制参数传入来隔离,而本设计为了使参数扁平化,导致部分这些参数无法隔离)。而且模板参数非常依赖命名规律,在转换替换前,请进行testcase检查,确认转换后能与原来的样式、功能基本一致,才应用转换。如果出现问题,请保留案例并联络本模板维护编辑协助处理,或者放弃。
虽然可以在值字段(例如list、col等)重新嵌入{{Navbox}}系列模板,但这和原有做法一样,失去了本模板降低解析器限制的作用,不建议这样做。
限制大小
[编辑]模块内部设定了容量上限,超出范围的参数将不予处理:
垂直行式(vertical):最多支持35个列表项。
水平列式(horizontal):最多支持20栏,每栏最多支持10个list。
折叠分组(vertical_collapsible):最多支持20个分组。
子代深度:最多支持嵌套递归至第10层。
技术细节
[编辑]自动维护分类
[编辑]在模板命名空间(排除/doc、/sandbox、/testcases)下,本模块会自动将有问题的导航框归入相应分类(可透过tracking = no或nocat = true关闭):
- Category:没有使用水平列表的导航框:未检测到
hlist或plainlist样式。 - Category:使用背景颜色的导航框:在
titlestyle、groupstyle、basestyle中硬编码内联background颜色。 - Category:name参数和实际不同的导航框:传入的
name参数与当前页面实际标题不一致。
模块构成
[编辑]- Module:NavboxV2:主逻辑模块,负责参数解析、DOM生成与输出。
- Module:NavboxV2/NavboxContext:上下文管理模块,封装前缀路径与各层嵌套数据。
- Module:NavboxV2/EvenoddContext:统一维护跨层级奇偶行样式。
- Module:Navbar:导航列生成模块(提供“查·论·编”按钮)。
重定向
[编辑]- {{Navbox2}}