模組: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}}