Oct1a
Vue3自定义指令

除了核心功能默认内置的指令 (v-modelv-show),Vue 也允许注册自定义指令。注意,在 Vue2.0 中,代码复用和抽象的主要形式是组件。然而,有的情况下,你仍然需要对普通 DOM 元素进行底层操作,这时候就会用到自定义指令。举个聚焦输入框的例子

理解并实现秒传功能

大众化的网盘都支持秒传,如我们国内人都听惯的金山,出的金山快盘就有这个功能,还有金山T盘、RF、纳米、115,国内的360安全厂商也出品了360云盘,百度出品的百度网盘,腾讯打造出的微云同样运用了“秒传”技术。

Vue3 知识点总结

一、爷孙组件通信 provide>inject

这边以爷孙组件来命名,provide是无法在父子组件、兄弟组件通信,只有在爷孙组件才行

Provide/Inject用于非父子组件之间共享数据∶

比如有一些深度嵌套的组件,孙组件想要获取爷组件的部分内容;
在这种情况下,如果我们仍然将props沿着组件链逐级传递下去,就会非常的麻烦。

JS多种方式实现模糊查询

通常一些轻量级的数据,在前端进行过滤,会减少与后端交互,减少ajax请求。

1. indexof 方法

语法:stringObject.indexOf(searchvalue,fromindex)
参数:searchvalue 必需。规定需检索的字符串值。
fromindex 可选的整数参数。规定在字符串中开始检索的位置。它的合法取值是0到stringObject.length - 1。 如省略该参数,则将从字符串的首字符开始检索。

说明: 该方法将从头到尾地检索字符串 stringObject,看它是否含有子串 searchvalue。开始检索的位置在字符串的 fromindex 处或字符串的开头(没有指定 fromindex 时)。如果找到一个 searchvalue,则返回 searchvalue 的第一次出现的位置。stringObject 中的字符位置是从 0 开始的。如果没有找到,将返回 -1。

  /**
   * 使用indexof方法实现模糊查询
   * @param  {Array}  list     进行查询的数组
   * @param  {String} keyWord  查询的关键词
   * @return {Array}           查询的结果
   */
  function listQuery(list, keyWord) {
    return list.filter(v=>v.indexOf(keyWord) != -1)
  }

2. split 方法

  /**
   * 使用spilt方法实现模糊查询
   * @param  {Array}  list     进行查询的数组
   * @param  {String} keyWord  查询的关键词
   * @return {Array}           查询的结果
   */
  function listQuery(list, keyWord) {
    return list.filter(v=>v.split(keyWord).length >0)
  }

3. match 方法

  /**
   * 使用match方法实现模糊查询
   * @param  {Array}  list     进行查询的数组
   * @param  {String} keyWord  查询的关键词
   * @return {Array}           查询的结果
   */
  function listQuery(list, keyWord) {
    return list.filter(v=v.match(keyWord) != null)
  }

4. test方法(正则匹配)

 /**
   * 使用test方法实现模糊查询
   * @param  {Array}  list     原数组
   * @param  {String} keyWord  查询的关键词
   * @return {Array}           查询的结果
   */
  function listQuery(list, keyWord) {
    let reg =  new RegExp(keyWord);
    return list.filter(v=>reg.test(v))
  }

具体indexof,split,match,test方法的用法可以去参考官网查看学习,这里不做详解了www.w3school.com.cn/jsref/jsref…

总结:以上四种方法,除了match方法性能最差,其他三个方法在性能上差不多。不过test使用正则较灵活,推荐使用。

Auto.js 8.0以上解除权限

因Auto.js 8.0以上作者已经对市面上主流软件进行屏蔽,无法直接获取控件并模拟操作,在旧版本都是可以获取的

把下面解除限制代码放到你”ui”下面就可以了
打包后不限制APP使用

importClass(com.stardust.autojs.core.accessibility.AccessibilityBridge.WindowFilter);

let bridge = runtime.accessibilityBridge;
let bridgeField = runtime.getClass().getDeclaredField("accessibilityBridge");
let configField = bridgeField.getType().getDeclaredField("mConfig");

configField.setAccessible(true);
configField.set(bridge, configField.getType().newInstance());

bridge.setWindowFilter(new JavaAdapter(AccessibilityBridge$WindowFilter, {
    filter: function(info) {
        return true;
    }
}));

如何获取控件id信息?

因为软件无法通过悬浮窗来获取

我这边解决方法是:

  1. 使用旧版auto.js直接获取控件id等信息
  2. 使用vscode的auto.js Pro插件的布局分析获取,部分android版本无法获取画面,但还能获取到控件