Skip to content

精读《插件化思维》 #75

Closed
Closed
@ascoders

Description

@ascoders

插件化思维可以用来做技术工具,前端框架,或者做项目,一个合格的技术规划者应当拥有插件化思维。

可惜这方面文章比较少,除了零星的设计模式启发之外,很少能看到介绍如何做插件化的文章。笔者在经历许多项目的洗礼后,尝试总结一下,帮助大家养成插件化思维。

Activity

atian25

atian25 commented on Apr 12, 2018

@atian25

文章地址?

ascoders

ascoders commented on Apr 12, 2018

@ascoders
OwnerAuthor

@atian25 哎,找不到文章啊,就是想写这个主题的,有没有推荐文章?

我准备从做过的项目,以及看过的框架,cli 工具设计理念入手来分析。有文章指导就更好啦!

atian25

atian25 commented on Apr 12, 2018

@atian25

也没有,不过这块倒是接触不少。

FIS,Egg 都是强插件化理念的。

ascoders

ascoders commented on Apr 12, 2018

@ascoders
OwnerAuthor

这俩我都是忠实用户,哈哈。

有点慌,因为这个文章是写给做架构的同学看的,写完后如有理解不足之处希望批评指正,我这次先献丑了!

atian25

atian25 commented on Apr 12, 2018

@atian25

洗耳恭听~

huxiaoyun

huxiaoyun commented on Apr 14, 2018

@huxiaoyun
Contributor

抛个砖:
感觉插件化思想很老了,系统为了保证扩展性,给第三方提供更大的自由度,提供插件化的机制。对于系统来说重要的是提供一个标准,能够让插件统一接入,并让系统调用方使用。

相对于java 系统可以提供统一的接口,让第三方按照规定实现指定的方法,前端似乎就比较开放。有些像jquery 的插件,只需要开发者往 $.fn 上挂载一个方法,输入参数、设计都随意开发者发挥了。像webpack 的插件,就规定了 apply 方法的入口,往钩子上写自己的逻辑代码。

ps: 还真没怎么找到插件架构方面的文章。。。
https://developer.apple.com/library/content/documentation/Cocoa/Conceptual/LoadingCode/Concepts/Plugins.html#//apple_ref/doc/uid/20001272-98794-CJBEAEAD

ascoders

ascoders commented on Apr 15, 2018

@ascoders
OwnerAuthor

@huxiaoyun 说的更像 interface(接口)的定义,做技术项目需要的插件化思维是更上层的概念,要考虑的点也更多。

比如如何加载插件?如何定义插件语法?支持一套还是几套插件?核心也用插件写吗,要注意拿捏到何种分寸?哪些项目可以用插件机制做,带来的好坏处如何权衡,等等。

ascoders

ascoders commented on Apr 15, 2018

@ascoders
OwnerAuthor

上面先抛个砖,如果能吸引一些讨论,文章也会更好写一些。

ghost

ghost commented on Apr 16, 2018

@ghost

image

linonetwo

linonetwo commented on Apr 23, 2018

@linonetwo

我之前整理了一些可以参考的文章 http://onetwo.ren/%E5%89%8D%E7%AB%AF%E6%8F%92%E4%BB%B6%E7%B3%BB%E7%BB%9F%E8%AE%BE%E8%AE%A1/#%E5%8F%82%E8%80%83
之前想做一个支持插件的笔记系统来着,不过坑了,所以我写的那篇文章也太监了。

usernamedd

usernamedd commented on Sep 10, 2020

@usernamedd

我是想看桌面程序的插件化思想的,结果这里的是更灵活的前端的东西,但是思想有相同的地方,系统留一些切口供插件插入。想深入插件化开发模式,可以参考Visual studio , visual studio code ,ellicpse,但是都是桌面程序的例子。
最后,闲着没事把这个issue关了弄啥

linonetwo

linonetwo commented on Sep 10, 2020

@linonetwo

@usernamedd 现在很多桌面程序就是用 electron 开发的,我最近在开发跨平台战棋游戏,用的就是 electron + react + pixi

usernamedd

usernamedd commented on Sep 11, 2020

@usernamedd

@usernamedd 现在很多桌面程序就是用 electron 开发的,我最近在开发跨平台战棋游戏,用的就是 electron + react + pixi

嗯,不错,有开源地址吗,欣赏学习一下

linonetwo

linonetwo commented on Sep 11, 2020

@linonetwo

@usernamedd 游戏是 https://github.com/linonetwo/Eternity-Foundation 还刚开始开发

mod 系统是 https://github.com/linonetwo/Eternity-Foundation/blob/634ccd4e31784c855f6d8f3e1036bf070a196b6d/src/redux/models/mod.ts#L5 ,其实是把一些 API 暴露给 new Function ,载入用户脚本,利用 electron 的 contextIsolation 沙盒保证 mod 代码没法作恶。

Pines-Cheng

Pines-Cheng commented on Nov 3, 2020

@Pines-Cheng

推荐 VSCode/Theia 源码里面的 Extension/Plugin 设计,基于强大的、轻量级的 IoC 容器 InversifyJS,高级优雅而又功能强大。整个 IDE 都是 Extension 组成的,对外提供 Plugin 机制进行拓展。

参考:Authoring Theia Extensions 以及 Authoring Theia Plug-ins

Echohzy

Echohzy commented on Nov 8, 2024

@Echohzy
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

      Development

      No branches or pull requests

        Participants

        @atian25@linonetwo@huxiaoyun@ascoders@usernamedd

        Issue actions

          精读《插件化思维》 · Issue #75 · ascoders/weekly