MediaWiki讨论:Gadgets-definition

来自PRTS
跳转到导航 跳转到搜索

特殊:小工具
文档
由于resourceLoader会缓存代码,这有时会导致修改不能及时生效,可以通过在url末尾加入&debug=true来解决这个问题

为什么要用Gadget

  • 这个功能并不是所有人都需要
  • 缩短Common.js和内联js的长度(这有助于加快页面的加载速度)
  • 将一段代码注册进ResourceLoader
  • 阻止移动前端破坏js代码

参数

后文中的模块都是ResourceLoader意义上的模块,而不是lua

Name Parameters Description Since
ResourceLoader None 标记gadget中的脚本与 ResourceLoader兼容。 ?
dependencies 半角逗号分隔 模块名 这些模块将在当前gadget加载前准备就绪。注意:当当前gadget中没有与resourceLoader兼容的代码时,这个参数无效(比如没有css或js被标记位兼容的). ?
rights 半角逗号分隔 权限名 使这个模块指对有这些权限的人有效 (和可见) 。 ?
hidden None 在参数列表页不现实这些gadget。 这有两种用途:
  • 使一个gadget被启用且不能被关闭(as modular alternative to Common.js).
  • 这些gadget并不是用于给用户使用,而是被别的gadget加载。例如允许两个模块重用相同的代码,或者用于注册只在部分页面加载的‘核心’代码
1.28
skins 半角逗号分隔 皮肤名 使gadget指对使用了特定皮肤的人可用(和可见)。 ?
default None 使模块被默认的启用(即使没有登录)。登录了的用户仍可以在参数列表中关闭 1.18
targets desktop (default), mobile or desktop,mobile 为gadget设定ResourceLoader targer. 只填mobile的会导致错误[1] ?
type styles or general Use styles for modules that only modify styling for elements already on the page (e.g. when customising the skin, layout, or article content). 这会导致css通过<link rel="stylesheet">加载而不是通过resourceLoader。 [2]. 1.28
peers 半角 逗号分隔 模块名 要求gadget中只有css (通常被隐藏). 这些gadget将比dependencies的模块更早加载,而且即使JavaScript被禁用了也扔会加载[3]. 1.29.0-wmf.11
(pre-release)
top None (removed in 1.28) Makes the gadget to be top-loaded. This should be used sparingly, but may be needed for some initialization stuff like registering plugins with VisualEditor. ?

你可以加载额外的模块为了你的Gadget, 例如:

* mygadget[ResourceLoader|dependencies=jquery.ui, jquery.effects.clip]|mygadget.js|mygadget.css

我们要求 ResourceLoader为了mygadget 加载模块jquery.uijquery.effects.clip 。注意:gadget不能依赖于脚本来自页面/文件/链接, 只能依赖已经在ResourceLoader中注册的模块.为了使来自页面的脚本依赖于另一个来自页面的脚本,两者都应该被写成gadget来在ResourceLoader将自己注册成模块,然后他们可以被通过以下语法依赖 :

* childgadget[ResourceLoader|dependencies=ext.gadget.parentgadget]|childgadget.js

为了使模块被默认启用,使用 "default":

* mygadget[ResourceLoader|default|dependencies=mediawiki.util]|mygadget.js|mygadget.css

为了使模块指对有权限的人可用,设定 rights 参数. 例如,

* ImprovedDeletion [rights=delete] | ImprovedDeletion.js

这使得模块指对有删除页面的人可用。注意:限制基于权限而不是用户组 。例子:

* modrollback[ResourceLoader|rights=rollback]|modrollback.js
* UTCLiveClock[ResourceLoader|rights=purge]|UTCLiveClock.js
* Ajax_sysop[ResourceLoader|rights=patrol,rollback,markbotedits,delete]|Ajax_sysop.js