Open waterbang opened 3 weeks ago
这篇我要求你来写,是要你先用你的方法做一遍,然后我再教你一遍我的方法。这样你会有一个对比。参考我的方法,一定程度上能辅助加速你的思维迭代速度。
这篇文章开始写之前, 首先需要明确你的愿景。就是为什么需要做这个事情,它有什么意义,尽可能多方位地考虑各种有直接关联的角色,思考他们能得到什么切实的好处。(这就是“以人为本”) 但因为是短篇,所以不用写得太复杂,抓住一些关键的重点来写就行。比方说: “ 我们将 Dweb Browser 的跨平台的内核提取出来,为开源社区提供一种新的跨平台开发的选择。 让 Dweb Browser 有更加广泛的应用场景,于我们团队而言,收获更加广泛范围的社区建议,也能更好地打磨架构和内核。 ” 我这边的关注点主要是社区和我们自己团队,针对的是跨平台开发这个需求点。 如果要写长篇,同理可以考虑更多的相关角色,比方说企业的综合影响力,比方说产品经理,比方说测试人员 、用户等等。 这些你可以不写,但要有这个考虑的过程,考虑的越多越远,你的知识储备就会被你翻出来,从而这些知识储备就会在这次思考中交织在一起,会给你新的启发和角度。同时你会对你的开发越清晰、接着混乱、接着清晰、这是一个螺旋上升的过程。 这个过程的本质,就是“选择”,也就是说你要开始做决策,也意味着你要舍得放弃一些东西。
紧接着,在这些愿景上,可以进一步细化一些专业性的东西。这里我考虑的是“跨平台”这个点,所以相对应的优势也是围绕开发者和产品能获得的 “优势” 来展开,这个过程中,你可以对比同类竞品,来强调优势,比方说: “ 它的主要优势在于:
对比的过程也是强化自己愿景和信心的过程
做完这些思考,你基本对你要做的事情已经比较清晰,接下来就是对任务的细化。此时需要的是两步走,第一步是 “想象”,第二步是 “时间” 。
关于想象力,正如你做的,想象作为用户,看到的应用的启动、使用的过程;想象作为开发者,开发应用的过程。 结合“优势”篇提到的特点展开想象:
完成“想象”后,接下来就是要面对现实,此时就是关于“时间”,你需要规划出“最小里程碑”。第一步很重要,需要你自己以最小的代价完成一个可用版本。比如我们可以针对 ssg 的 webapp 开发者,提供最小里程碑版本。 然后是在这个里程碑上逐步扩展:
扩展出它有 ssr 的开发需求(也就是现在的 plaoc/server 需要往前演进的)
扩展出它有一些原生接口开发的需求(比方说要使用微信支付宝的 android/ios-sdk)等等
启动屏幕如何做到多平台统一,这是一个比较复杂的问题,比方说广告的需求、可交互的需求、动画的需求、共享元素的需求等等
jxbrowser 是商业化的,我们如果去考虑 webview2,那么工作量实在不小(因为要支持离屏渲染)
以上只是列举了部分内容,需要根据时间逐步拆分。 第一里程碑非常重要,因为想象力所能触达的是理想情况下的需求。真正实践起来会遇到很多问题,有些问题甚至是无法绕过的。因此快速做出第一里程碑,并且确保接下来能快速迭代,才能尽早发现问题,有时候甚至需要推翻重来,重新制定开发路径。
cmp 代表的是最朴素的原生 GUI 开发,绝大多数问题其其它框架也无法避免的,甚至可以说并不能做的比 cmp 好。可以说其它框架能做好的 cmp 也能做好,其它框架做不好的 cmp 也有办法能做到。
目前 kmp 最大的问题其实在于它要涵盖的工作内容太多了,导致鸿蒙的支持一直没上线,也很难上线,目前只能等到 2025 年下半年国内一些其它厂商向上游提交解决方案。
plaoc bundle --android --ios
打包出 android和ios应用。
由于dweb 优势,应用开发的时候将动态调试,不需要每次编译到手机,所见即所得。
当前
Dweb Browser
提供的架构还缺少独立应用的能力,以下是一些实施过程。启动屏
splash-screen.nativeui.browser.dweb
为了适配单独的应用包,启动屏必不可少,并且也能适配HTML页面首页渲染的白屏。或者适配一些营销需求。
模块整合
模块整合有三类 核心模块,按需导入,必须移除。
核心模块
核心模块不可移除,包含:
dns.sys.dweb
: 路由关键模块。jmm.browser.dweb
: 提供页面渲染服务。js.browser.dweb
: 提供可编程后端服务。boot.sys.dweb
: 模块启动服务。file.std.dweb
: 文件服务。http.std.dweb
: 网络服务模块。permission.sys.dweb
: 应用权限管理模块。按需导入
针对用户引用的包如果能做到按需导入,移除不需要的模块,将大大减少应用体积。
plaoc
所包含的插件都可以按需移除,比如:geolocation.sys.dweb
。必须移除
desk.browser.dweb
: 桌面模块。web.browser.dweb
: 浏览器模块。 以及桌面上所有的模块,比如快捷指令,智能扫码,关于等模块。