本帖最后由 Zapic 于 2020-9-26 15:50 编辑
在MCBBS Extender 2.0中,我一直致力于让更多人参与到MCBBS Extender的开发中.或者说,我一直致力于让超过700人的用户群里的论坛体验变得更好.
如果你不知道这是什么,请前往此处了解详情:https://www.mcbbs.net/thread-952104-1-1.html
为了让更多人的诉求得以实现,让更多人的强迫症得到安慰,我为开发者们提供了一个"简单易用的"开发MCBBS Extender的方案:模块式的添加功能
直到后来才发现,这一套方案会对MCBBS Extender的环境有强依赖,让开发者们的想法被强行绑定在MCBBS Extender中.
我认为论坛的二次开发应该是自由分散的,而不是封闭集中的.所以,我将晚上拿来逛bika的时间,花在了重新构建开发者体验上.
之后,在接下来的更新中,变得更加自由了.
你可以开发一个
脱离MCBBS Extender运行
但可以为MCBBS Extender用户 提供一个集中化管理界面
的MCBBS用户脚本程序,
或者一个
强依赖于MCBBS Extender
并使用预先封装好的论坛常用操作函数
以及拥有更优雅实现方法的用户操作事件API
的MCBBS Extender模块.
从现在开始,MCBBS Extender更像一个工具库,而不是一个核心.
开发者开发的脚本可以脱离MCBBS Extender以便让更多人体验到二次开发对体验的提升 .
用户也可使用不带任何功能的MCBBS Extender Core,然后从MCBBS Extender插件市场添加功能,获得更加客制化的体验.
请给我一些星星:
MCBBS Extender Project 开源地址:https://github.com/Proj-MExt
MCBBS Extender 插件市场: https://github.com/Proj-MExt/Modules-Repo
MCBBS Extender 开发指南: https://github.com/Proj-MExt/Modules-Repo/wiki
欢迎提交Pull Request,协助我修复错误,以及优化我并不是很好的代码质量.
以下是一些开发者比较用例:
在现有的MCBBS Extender中,所有模块强依赖MCBBS Extender,模块的入口必须位于模块体内部,由MCBBS Extender Core调用:
复制代码
在即将发布的更新中,你可以继续选择强依赖于MCBBS Extender:
异步方式:
复制代码
同步Promise方式:
复制代码
同步回调方式:
复制代码
或者开发可以脱离MCBBS Extender运行的用户脚本,并动态的接入MCBBS Extender:
复制代码
MCBBS提供了一些简单易用的事件,可以让开发者更方便的实现想要的功能,而不需要边骂"Discuz搞什么幺蛾子"边翻Discuz源码然后吐血.
你要吐的血我先吐了
比如添加自定义评分理由:
复制代码
在MCBBS Extender 2.0中,我一直致力于让更多人参与到MCBBS Extender的开发中.或者说,我一直致力于让超过700人的用户群里的论坛体验变得更好.
如果你不知道这是什么,请前往此处了解详情:https://www.mcbbs.net/thread-952104-1-1.html
为了让更多人的诉求得以实现,
直到后来才发现,这一套方案会对MCBBS Extender的环境有强依赖,让开发者们的想法被强行绑定在MCBBS Extender中.
我认为论坛的二次开发应该是自由分散的,而不是封闭集中的.所以,我将晚上拿来逛bika的时间,花在了重新构建开发者体验上.
之后,在接下来的更新中,变得更加自由了.
你可以开发一个
脱离MCBBS Extender运行
但可以为MCBBS Extender用户 提供一个集中化管理界面
的MCBBS用户脚本程序,
或者一个
强依赖于MCBBS Extender
并使用预先封装好的论坛常用操作函数
以及拥有更优雅实现方法的用户操作事件API
的MCBBS Extender模块.
从现在开始,MCBBS Extender更像一个工具库,而不是一个核心.
开发者开发的脚本可以脱离MCBBS Extender以便让更多人体验到二次开发
用户也可使用不带任何功能的MCBBS Extender Core,然后从MCBBS Extender插件市场添加功能,获得更加客制化的体验.
请给我一些星星:
MCBBS Extender Project 开源地址:https://github.com/Proj-MExt
MCBBS Extender 插件市场: https://github.com/Proj-MExt/Modules-Repo
MCBBS Extender 开发指南: https://github.com/Proj-MExt/Modules-Repo/wiki
欢迎提交Pull Request,协助我修复错误,以及优化我并不是很好的代码质量.
以下是一些开发者比较用例:
在现有的MCBBS Extender中,所有模块强依赖MCBBS Extender,模块的入口必须位于模块体内部,由MCBBS Extender Core调用:
- (async () => {
- await unsafeWindow.MExt;
- let MExt = unsafeWindow.MExt;
- MExt.exportModule({
- "core": (()=>{/* Core code */})
- });
- })();
在即将发布的更新中,你可以继续选择强依赖于MCBBS Extender:
异步方式:
- (async () => {
- const MExt = await new Promise(_ => { !unsafeWindow.MExt ? unsafeWindow.addEventListener("MExtLoaded", __ => { _(unsafeWindow.MExt) }) : _(unsafeWindow.MExt)});
- // Your Core code ...
- // ...
- // ...
- const Module = {
- "meta": {
- "id": "md_example",
- "name": "Example Module",
- "author": "Zapic",
- "version": "1.0.0",
- "updateInfo": []
- },
- "style": `/*Style*/`
- }
- MExt.exportModule(Module);
- })();
同步Promise方式:
- (() => {
- new Promise(_ => { !unsafeWindow.MExt ? unsafeWindow.addEventListener("MExtLoaded", __ => { _(unsafeWindow.MExt) }) : _(unsafeWindow.MExt)})
- .then((MExt) => {
- // Your Core code ...
- // ...
- // ...
- const Module = {
- "meta": {
- "id": "md_example",
- "name": "Example Module",
- "author": "Zapic",
- "version": "1.0.0",
- "updateInfo": []
- },
- "style": `/*Style*/`
- }
- MExt.exportModule(Module);
- });
- // Core code
- const Module = {
- "meta": {
- "id": "md_example",
- "name": "Example Module",
- "author": "Zapic",
- "version": "1.0.0",
- "updateInfo": []
- },
- "style": `/*Style*/`
- }
- MExt.exportModule(Module);
- })();
同步回调方式:
- const MyCore = (MExt) => {
- // Your Core code ...
- // ...
- // ...
- const Module = {
- "meta": {
- "id": "md_example",
- "name": "Example Module",
- "author": "Zapic",
- "version": "1.0.0",
- "updateInfo": []
- },
- "style": `/*Style*/`
- }
- MExt.exportModule(Module);
- }
- if(!unsafeWindow.MExt){
- unsafeWindow.addEventListener("MExtLoaded",() => {
- MyCore(unsafeWindow.MExt); });
- } else {
- MyCore(unsafeWindow.MExt);
- }
或者开发可以脱离MCBBS Extender运行的用户脚本,并动态的接入MCBBS Extender:
- (() => {
- let SelfConfig = {
- "enable": true
- }
- new Promise(_ => { !unsafeWindow.MExt ? unsafeWindow.addEventListener("MExtLoaded", __ => { _(unsafeWindow.MExt) }) : _(unsafeWindow.MExt)})
- .then((MExt)=>{
- SelfConfig.enable = MExt.Storage.get("example_enable");
- MExt.exportModule({
- "meta": { /*...*/},
- "config": [{
- "id": "example_enable",
- "name": "启用Example",
- "type": "check",
- "default": true
- }],
- "core": () => {
- // Code to run if MCBBS Extender exists...
- // ...
- }
- });
- });
- // Your Core code ...
- // ...
- // ...
- })();
MCBBS提供了一些简单易用的事件,可以让开发者更方便的实现想要的功能,而不需要边骂"Discuz搞什么幺蛾子"边翻Discuz源码然后吐血.
比如添加自定义评分理由:
- document.addEventListener("RateWindowOpened",(e) => {
- let myreason = document.createElement("li");
- myreason.innerHTML = "不愧是你";
- document.getElementById("reasonselect").appendChild(myreason);
- })
好!
(第一时间收到了新帖提醒
(第一时间收到了新帖提醒