声明:本回复是本人结合此帖总结顺便掺杂了个人观点的回复 不喜勿喷sorry
怎么说呢,一句话总结:
插件生态和一块板子本身就是优缺并兼的
首先在历史的发展大层次上插件的产生是具有进步性的。一开始编程是什么编程?就是一条命令从头到尾跑一遍,面面俱到。但是之后出现的面向对象编程就是类似于插件这种逻辑的演化进步。因为本质上你想想函数等它无非就是个代码块,你的主程序就是一颗树的主干,上面的叶子等功能性组成就相当于函数等内容。
本质上函数就是一个相当独立的暗箱,给予输入后经过操作转换为输出,而这就是类似于插件的基本逻辑。插件本质上就是把一些个重要的,重复需求的事务集合出来抽象成一个相对独立的个体行驶特定的使命。说实话插件之所以是“插件”就是在于那个“插”字,即插即用,不用的话再卸。无非就是一个插座(主体)里面插了许多插头(插件),到头来插头那一端是电脑,冰箱,洗衣机还是意大利炮(是不是混进去了什么奇怪的东西)这都和插座主体没关系,它无非就是个供电(提供API接口)的,你用来干嘛都行,就算是你什么也不插(一块死板),它也不至于让你家短路。
因此插件生态取代死板一条虽说是大势所趋吧,但是也不是人人刚需。例如:诶我就是觉得那个镶金插座很好看我就把它在那里供着,这样完全没关系。
总结一下:插件无非是让一个软件“活”起来了。
那么,
我也要活吗?
这是一个非常重要的问题,这个问题直接关乎于这个帖子的主题“我们真的需要插件系统吗?”
有人说:诶 你看那个edge里面的一堆插件,什么广告拦截啊、什么B站下载啊、什么自定义标签页啊,他们一个个老好用了,所以插件是我们的刚需!我们需要强大的STCN插件市场!这完全是屁话。
毕竟STCNbug都没有修完呢,还来什么插件?
这时候又有人说:诶?你这个插件不行啊,你看看我用了一辈子汇编(大雾),这不跑的好好的,就喜欢这种每一块内存都掌握在自己手里的feel。
但是不要忘了插件本身的地位:
插件是为了开发者懒得写功能时偷懒减轻压力的,毕竟如果你是一个随时都需要更新的软件,你敲得再快一时间也写不了多少功能。而如果你有一群黑奴开发者心甘情愿为你分担压力,那么这效率不就爬泰山一层一劫——劫劫高吗?(什么神秘歇后语)
但是如果你是一个个人开发者 只是想要实现一些个小功能,那么你写一个没有任何接口的程序也不是不可以,毕竟小而美谁不喜欢(微信除外)?
综上所述:
好的插件生态应该做的有良好的支持环境以及合作氛围,同时也需要你这个软件允许也支撑这个插件生态。(这正是文中提到的)
不然死板一条也不是不行~∀~
好的同学们再见(๑•̀ㅁ•́ฅ)
最后:Ciallo~(∠・ω<)⌒★
下面开始课外延伸了,不想看走人就行。
(大雾)
可是真的只讲这些吗?——写在主题外
我在这里想要插嘴跑题一下,还是很抱歉
我想要讲一下插件生态的实现方法这一块的内容(可以当我是硬生生拉上来个私货,因为我之前就在想这一类的事情 正好借题发挥一下 还请海涵 抱歉)
首先不得不承认这一块的水很深
常见的实现方式有七种之多 说实话单开一期都不过分 我就在这里简单讲述一下并且简单分享一下我个人的观点(还是很抱歉 我突然那么借题发挥,只不过是因为这一块与今日的主题契合所以我也我尽量快速讲完)
不多废话了,我为了方便阐述将这七种也简单分成以下几类
一、臣死君随型
(啥子豆包将此形容为舍友住你身体里?)
主要包含的就是:
1. 原生同进程模块
2. 嵌入式脚本插件
3. 同进程沙盒脚本插件
这些无一例外都是一个缺点:同进程,只要插件死了,主体就死了。这种的实现逻辑就是代码块调用(你可以简单理解成为调用函数)
二、臣死君不死型
这种就是现在最流行的方式,例如VScode,dsh之类的插件大多是这种类型的,主要包含:
4. 多进程模块化IPC插件
5. Wasm 沙盒插件
6. 远程Webhook / HTTP插件
其中第一种是最常见的如dsh之类的,而第二种简单理解就是一个个插件就是太空舱,就算炸了也没事(不过写起来不比第一种简单,不过安全性确实是有的),第三种简单来讲就是云端插件
三、我也不知道什么型
代表就是:7. 声明式配置插件
(豆包说CI类似这一种)
简单来讲就是刚才好几种的集合体(属于是我都要了),就是软件主体只负责提供挂载点提供消息,剩下的交插件干。(属于是一身轻松打舞萌了)
那么对于到底需要选择怎么实现插件生态呢?自然就想要看上面的简介,如果你完全不担心插件一个虫子你程序直接完蛋完全可以选择前者,如果你需要高安全性也可以选择后者。
简单来讲我这这里私开的一块,是已经讲的到插件生态具体的实现过程了,也相当于是在原题上借题发挥扩展延伸了()
感谢你看完这一段我随便瞎扯的黑幕,因为这一块其实应该单开一期,不过既然讲这事了,也就糊弄过去罢()
最后感谢听我扯完这些,不喜勿喷
拜拜ヾ(•ω•`。)