本WIKI由呜呜kurumi申请于2021年03月15日创建,编辑权限开放

如有内容错误,可以联系站长呜呜kurumi提交错误,赛马娘WIKI力求给大家带来最好的体验,也欢迎训练员们和我们一起建设
bugfix0531
全站通知:

赛马娘通用JS库

阅读

    

2023-05-15更新

    

最新编辑:素子ちゃん_official

阅读:

  

更新日期:2023-05-15

  

最新编辑:素子ちゃん_official

来自赛马娘WIKI_BWIKI_哔哩哔哩
跳到导航 跳到搜索
页面贡献者 :
素子ちゃん_official

概述

赛马娘通用JS库旨在集中JS开发中常用的函数、类、变量等

这么做有以下优点

  • 提高代码复用性
  • 让开发者无需关注通用功能的开发
  • 让不了解本WIKI的开发者迅速了解已有的函数封装


你可以做

  • 使用Uma.js
  • 添加新的收录
  • 添加新的收录文档


你不能做

  • 在没有明显BUG的情况下大幅修改或优化代码
  • 移除非几日内添加的条目
  • 添加过长的代码库,类似于Jquery、Vue、highlight.js
  • 添加没有任何通用性的代码,类似于与html页面绑定的js代码

引入方法

//请在需要使用的js文件中使用下列语句引入
import Uma from "./index.php?title=MediaWiki:Uma.js&action=raw&ctype=text/javascript";

收录方法

添加代码

MediaWiki:Uma.js下通过如下两种方法的一种添加代码

//方法一:直接添加
Uma.mineVar = "I'm a umamusume";
Uma.mineFun = function(mineName) {
    return `I'm a umamusume named ${mineName}`
}
Uma.mineClass = class {
    //懒得写了,一般用类的实例
    //balabala
}
Uma.mineObject = {
    //定义出一个命名空间,类似于Uma.tools Uma.parse 等
    //然后就可以套娃了(
    fun1: function() {
        //fun1 balabala
    }
    fun2: function() {
        //fun2 balabala
    }
}

//方法二:间接添加
//在Uma.js的最开头加上
import mineBigThings from "./index.php?title=MediaWiki:MineBigThings.js&action=raw&ctype=text/javascript";
//......
//balabala
//......
//然后再找个地方登记
Uma.mbt = mineBigThings;

添加收录文档

以下是文档的模板

<!-- 函数模板 -->
==命名空间==
'''命名空间概述'''
===函数A:function(参数1, 参数2) 函数A的简要功能===
*param:参数1 参数1类型 参数1介绍
*param:参数2 参数2类型 参数2介绍
*return 返回类型 返回介绍
===函数B:function(参数1, 参数2) 函数B的简要功能===
*param:参数1 参数1类型 参数1介绍
*param:参数2 参数2类型 参数2介绍
*return 返回类型 返回介绍

<!-- 变量模板 -->
==命名空间==
'''命名空间概述'''
===变量A:变量类型 变量A的简要功能===
===变量B:变量类型 变量B的简要功能===

收录

Uma.tools

Uma.tools可以放入所有页面开发中都可能用到的单例函数

isMobile:function() 判断移动端

  • return bool 当前设备是移动设备时,返回true

inBiliApp:function() 判断是否在app中

  • return bool 在bilibili app时,返回true

isLogin:function() 判断用户登录状态

  • return bool 当前bilibili账号登录时,返回true

getCurPos(el) 获取input或textarea的光标位置

  • el htmlElement input或textarea的html对象
  • return number 光标位置

setAtCur(el, val) 在input或textarea光标位置插入值

  • el htmlElement input或textarea的html对象
  • val string 插入的内容
  • return undefined

tippy(parent) 在dom改变后,需要重新载入tippy弹窗

  • parent string 可选值,tippy任意父节点的名字,用于精确定位,请使用jq的查询格式,如.root #parent
  • return undefined

Uma.parse

Uma.parse是WIKI动态解析API的封装,用于解析WIKI文本

wikiParser:function(wikitext, callback) 解析WIKI文本 不推荐

  • param:wikitext string 需要解析的wiki文本
  • param:callback object 解析完成后的回调函数
//callback格式
{
    "success": function(result) { 
        //成功函数 
        //result是解析得到的html代码
    }, 
    "fail": function(error) {
        //失败函数
    }
}
  • return 无需关注

wikiParserPro:function(wikitext) 解析WIKI文本 推荐

  • param:wikitext string 需要解析的wiki文本
  • return Promise 返回一个Promise对象
//wikiParserPro使用例
//本例使用了ES6语法,你也可以使用ES5老语法
import Uma from "./index.php?title=MediaWiki:Uma.js&action=raw&ctype=text/javascript";
const parse = Uma.parse;
//每次解析都会更新到最新的时间戳
const wikitext = `{{注意|哇!解析成功了! '''现在的时间戳是${Date.now()}''' }}`;
parse.wikiParserPro(wikitext).then(
    res => {
        //你可以使用其他语句作你想要的处理
        $("#mw-content-text").append(res);
        console.log("parse complete!");
    }, 
    err => {
        $("#mw-content-text").append("解析失败");
        console.log(err);
    }
);

可以看到,不同的时间运行会更新到最新的时间戳,实现动态解析WIKI文本 WikiParserPro.png

Uma.api

Uma.api是WIKI API的封装,用于访问WIKI的API

GET:function(param, symbol) GET请求WIKI的api

  • param:param object 访问api时提交的参数
  • param:symbol symbol 给api指定symbol,已默认指定一个Symbol对象(用于分类,供abort()函数精准终止请求,你通常不需要指定
  • return Promise 返回一个Promise对象

POST:function(param, symbol) POST请求WIKI的api

  • param:param object 访问api时提交的参数
  • param:symbol symbol 给api指定symbol,已默认指定一个Symbol对象(用于分类,供abort()函数精准终止请求,你通常不需要指定
  • return Promise 返回一个Promise对象

POST_notoken:function(param, symbol) POST请求WIKI的api(不请求csrftoken)

  • param:param object 访问api时提交的参数
  • param:symbol symbol 给api指定symbol,已默认指定一个Symbol对象(用于分类,供abort()函数精准终止请求,你通常不需要指定
  • return Promise 返回一个Promise对象

abort:function(symbol) 终止指定symbol的所有请求

  • param:symbol symbol 给api指定symbol,已默认指定一个Symbol对象(用于分类,供abort()函数精准终止请求,你通常不需要指定
  • return object 返回一个结果object
//结果object的格式,你通常不需要关注
{
    "num": /*终止请求的数目*/, 
    "symbol": /*终止请求的symbol*/, 
    "queue": /*当前仍在请求的队列*/
}

GET/POST使用例

//GET使用例
//本例使用了ES6语法,你也可以使用ES5老语法
import Uma from "./index.php?title=MediaWiki:Uma.js&action=raw&ctype=text/javascript";
const api = Uma.api;

//取得csrfToken
//这只是一个教程示例,在新的POST函数中,它可以自动为你获取csrfToken
api.GET({action:"query",meta:"tokens",format:"json"}).then(
    res => {
		const token = res.query.tokens.csrftoken;
		if (token === undefined) {
			alert("Getting CSRFtoken: Fail");
		} else {
			alert(`CSRFtoken: ${token}`);
		}
	},
    err => console.log(err)
);

Uma.lang

traditionalize:function(cc) 繁体化

  • param:cc string 需要转繁体的字符串
  • return string 转换后的字符串

simplize:function(cc) 简体化

  • param:cc string 需要转简体的字符串
  • return string 转换后的字符串

Uma.base64

此部分为Jquery的base64源码,提供base64的编解码

encode:function(strUni) base64编码

  • param:strUni string 需要编码的字符串
  • return string 编码后的字符串

decode:function(strUtf) base64解码

  • param:strUtf string 需要解码的字符串
  • return string 解码后的字符串

Uma.animate

此部分依赖于animate.js插件

showZ:function($el) 以ZoomIn动画显示

  • param:$el jquery对象 需要显示的对象
  • return undefined

hideZ:function($el) 以ZoomOut动画隐藏

  • param:$el jquery对象 需要隐藏的对象
  • return undefined

hideHover:function($el) hover隐藏补丁,防止动画过程中用户的小手不干净

  • param:$el jquery对象 需要隐藏的hover
  • return undefined