什么是油猴子
校对完成,更新时间:2020-07-23 07:06:02
我并不喜欢它这个名字,但我又实在背不下来它的英文,就只好这样了。
英文似乎是叫做:TamperMonkey Greasemonkey(抱歉,这里写错了,但是后面的描述居然不用改),但是稍微去了解一下的话,就会发现有一个脚本管理器就是这个名字。所以这里面总有一丝商业宣传的味道,就仿佛 Word,Excel,PPT,这究竟是软件还是格式?当一个软件的名称被人们理所当然的用来称呼一类格式,那这个软件在营销上可以算是相当成功的。
不过我更喜欢另外一个名字:用户脚本(UserScript)。这个英文我能够背得下来,而且又十分准确的说清楚了这是什么东西,但这个名字并不如油猴子那样叫的响亮,大概就是让人觉得莫名其妙的东西反倒更加吸引眼球。
就从这个名字来解释一下,用户脚本就是用户自己书写的一些脚本。果然名字太直白了,以至于对它的解释简直就是一个朴素的扩句。
当然你可以不用自己去书写,而拿别人的脚本过来使用。但因为它具有自己书写这种特性,就意味着你对它的修改编辑都会比较便捷。一些类似的功能,我们通过小书签或者浏览器扩展也可以进行实现,但是这两者的可编辑性,就要比用户脚本差上好多。而且一些脚本市场会要求发布的脚本代码不可以进行压缩和混淆,也就进一步保障了脚本的可编辑性。
什么是脚本呢?这算一个相对细致的分类,但如果你对这方面不太了解,直接解释这个细致的分类,就不如先笼统的看它的大分类更容易理解。这就好像我对生物学没有什么了解,你给我介绍一个东西,上来就告诉我这是什么纲什么目什么属,我会觉得你说的头头是道,但我内心里依然一头雾水。就不如直接告诉我这个究竟是动物还是植物,能不能吃,会不会打我……
脚本就是一种代码,所以写脚本就是编程,不严谨的讲,你甚至可以认为这是在写软件。但只要是编程,目的就只有一个,就是告诉电脑如何去工作。用户为什么要去写脚本?因为他想让浏览器按照自己的想法去做一些工作。如果你理解了这句话,你应该也恍恍惚惚的开始感受到,这个东西似乎对自己是有一些用途的。谁还没有点古古怪怪的想法,但是又不知道如何去实现他们呢?
编程有那么多语言,我们又为什么会选择写脚本(脚本并不是特指某一种语言,而是一类)?因为脚本是无需编译的,好,你可能不知道编译是什么,那么脚本是写完就可以直接使用的,没有其他复杂的步骤。而且脚本语言大多是相对简单的。
现在总结一下,我作为一个用户,冒出了一个想法,但是苦于没有人替我实现,所以选择了一个简单的语言去书写脚本,而且写完之后就可以直接运行使用。这很合理,而且每一个动作都很直接的朝着实现目标前进,没有兜圈子,没有中间商赚差价。
再在这个基础上进一步进行提炼:
- 我很可能是用得上这些东西的,甚至可能存在着真正的需求,说不定它能够帮我解决一些困扰已久的问题,只是因为目前我对它没有了解,所以并不知道这就是解决这个问题的方法之一
- 学习书写用户脚本也许并不复杂
- 想要学习,需要的条件很简单
为什么是油猴子
这个真的没有为什么,同样能够充饥,为什么今天中午吃米饭不吃馒头?我总得选一个吧,鱼和熊掌不可兼得,就算同时选择了米饭和馒头,大饼和窝头也会抗议,肉夹馍嘟嘟囔囔的说:难道我就不香吗?
我写了一个表格,简单的对比了一下小书签,油猴子和浏览器扩展的一些特点。这并不是评判每个方法都好坏,因为结果必然是各有优劣。所以就看你实际的需求是怎样的,然后选择最适合自己的方法。而这一次我要给大家讲的就是油猴子。
提示:这个表格粗略浏览即可,初期可能并不是很能理解表格中的内容,也许在对三种方法都有一定了解之后,这个表格才更有参考价值。
对比项目 | 小书签 | 油猴子 | 浏览器扩展 |
---|---|---|---|
开发 | 需严格加分号或压缩代码 | 最简单 | 相对前两者 文件多,细节多 |
安装 | 拖拽安装,十分简单 但制作安装链接麻烦 细节处理不到位会 引入新的问题 |
市场安装 但要先安装脚本管理器 对于新用户不够友好 |
市场安装 国内访问困难 |
使用 | 一键点击 | 可以有菜单 其他界面要自己书写 并且考虑在他人页面下 的显示效果 |
可以很复杂 自带 popup、 工具栏按钮、 选项页面(显示区域) 选项样式 |
元数据 | 无 | 有 | 有 |
后台进程 | 无 | 对每个网页都要 判断是否执行 |
可以没有 |
开发限制 | 代码总长限制 但各种页面均可运行 |
特定页面无法使用 | 特定页面无法使用 但可以方便的进行 页面间通讯 |
发布审核 | 无 | 无(但有一定限制) | 有且慢 (不通过还不一定 告知原因) |
更新 | 用户主动重新安装 | 通过市场自动更新 | 通过市场自动更新 |
收费 | 很难实现 | 很难实现 | 支持收费 |
特殊权限 | 无 | 自带基础功能接口 | 可调用浏览器接口 |
书写的限制
如果我只告诉你:脚本相对简单,容易学。然后就推导出下一步:油猴子很简单。这肯定是非常不负责任的忽悠。
脚本并不简单,如果完全没有基础,想要入门编程,怎么也得花上几个月的时间。因为编程它有一套完整的知识体系,你要对其中的方方面面都有一定的了解之后,才能够开始逐渐的去理解它。就好像我们刚到一个新的地方,一切都很陌生,就会觉得周边的每一个位置都是遥远的,因为我们总要走过一些未知的,不了解的路途,才能够到达这个位置。而当我们在这个地方生活几年之后,在方圆几公里的范围内,都觉得是家门口。
但是你也不要急着逃跑,探索完整个世界是个宏大的愿望,应该没有几个人能够完成。但似乎也没必要每个人都立下如此宏大的愿望。像小老鼠这种随遇而安的性格,只要能够熟悉到楼下小卖店儿的道路,就可以开心的生活好多年了。而且现在快递这么发达,大概我只要熟悉走到门口,开门接快递就好。这样的新手探险任务,总还是可以学会的。而且当我们发现,只要我按照规则,交钱购物,小卖店的阿姨对我还是非常友善的,也许就愿意去街对面的大超市里看看有没有新奇的玩意儿。诶,就是这样一点一点的,这个五彩缤纷的世界在我们面前舒展开来,那么学习编程也是这个样子的。也许你并不知道它们能够做些什么,也许你并不觉得自己对它们有什么需求。但是请老鼠喝一杯咖啡,老鼠就跟你这儿絮絮叨叨的讲好多好多,哪怕听一乐儿,也都不亏;万一学会点什么,说不定还赚了;由此开始对编程感兴趣,或者解决了一些工作中的小难题,那岂不也是很美滋滋的。
好像说着说着有点跑题了,那我们讲回用户脚本书写中的限制。相比于书写网页,书写用户脚本要更复杂一些。写网页只是去实现对应的功能,而用户脚本呢,则是会运行在别人的网页之中,对这些网页进行修改,加入自己需要的功能。
那人家不让改怎么办?我就想办法去改,这就像一个攻防战。也可以理解为下棋,或者解谜游戏,就有一种对弈的感觉。这很有趣,也很开阔思路。所以一个写惯了普通网页的人,并不一定能够一下子就写出非常厉害的脚本,因为面对某些问题,思考的角度转变不过来。
书写用户脚本可能并不需要十分高大上的技能,但必须对基础知识尽可能的了解,甚至理解的十分透彻。因为在遇到问题的时候,这些基础知识能够有效的开阔思路的范围。
什么,本来你都已经被我安慰的决定继续读下去了,结果又被这段话吓到?
嘿,做人要讲良心啊!100 米以后路不太好走,我是不是得告诉你?你说你只在前面 50 米的范围之内晃悠,所以 100 米以外的事情和你无关。但我还得告诉你啊!万一哪一天你心血来潮,或者误入歧途,到了 100 米以外,稍微被绊着一下,肯定就要埋怨我事先不把事情说清楚了。
怎么,你听到数字就头疼,所以上面的例子让你觉得迷糊?
那……带孩子去游泳,虽然只让孩子在浅水区玩耍,但能不跟孩子们说清楚,深水区很危险,不要过去吗?(不过将来你能游的上下翻飞,想要去深水区,当然也不会有人拦着不是