TA的每日心情 | 慵懒 2022-3-8 11:41 |
---|
签到天数: 2 天 [LV.1]初来乍到
荣誉开发者
- 积分
- 1381
|
发表于
2022-7-27 21:58:44
|
显示全部楼层
我的观点相反,我个人是不太建议用jquery写脚本的,一个是jquery的体量还是有点大,网站用jquery是因为其本身代码量就不小,jquery对代码的精简作用一般比jquery自身更大,但在脚本里就反过来了,如果你的代码达不到上千行的程度,jquery反而成了累赘。另一个问题是jquery毕竟不是为脚本设计的,有些运行环境方面的隐患存在,像是这个之前讨论过多次的document问题(https://bbs.tampermonkey.net.cn/thread-1080-1-1.html),由于jquery的代码涉及document的访问,特定情况下可能引发错误。可以新建以下脚本进行测试:
- // ==UserScript==
- // @name 测试jquery
- // @namespace ...
- // @author ...
- // @version 1.0
- // @match https://docs.qq.com/*
- // @require https://cdn.jsdelivr.net/npm/jquery@2.2.3/dist/jquery.min.js
- // @grant unsafeWindow
- // @run-at document-start
- // ==/UserScript==
复制代码
随便打开一个腾讯文档的页面(比如https://docs.qq.com/doc/DQ1BMTk1BWlVWcndF),F12观察启用/禁用脚本对copy事件的影响,可以发现仅仅引入一个jquery,就破坏了原有的事件劫持!如果有网站的加载过程依赖事件劫持,而你在不恰当的时机引入jquery,就有可能造成页面崩溃。这也是我不赞成脚本中引入vue等大型框架的原因,除非这些框架有针对脚本环境做专门的适配。
至于jquery对代码精简的作用,其实如果对原生代码足够了解,完全可以自己实现的。比如经典的$(选择器)可以这样:
- const $ = document.querySelector.bind(document);
复制代码
其他功能也可以自己写函数代替,实现另一种意义上的“按需加载”。 |
|