小程序引擎如何促进企业在金融行业的数字化转型及合规运营
1914
2022-09-15
本文关于关于首个开源小程序引擎你想知道的都在这里,游戏开发小程序引擎哪个好用呢?
本文关于首个开源小程序引擎你想知道的都在这里,游戏开发小程序引擎哪个好用呢?
fard 其实之前是我提出的一种多端小程序跨端的思路,后来 remax,goji,kbone,taro next 都使用了相同的思路,就这样烂大街了,哈哈哈
在我取名废的时候,又想起来了,因为真的很合适,fard 是主命的意思,就是主人的命令,正好对应小程序引擎里面的 master 和 cmd
下面详细介绍一下——
基本原理实际上很简单,就是在 worker 中跑 fre 和业务逻辑,从而彻底隔离了 dom 环境 画了个图:
如图所示,我们的所有的业务逻辑都在 master 层,也就是 worker 层,然后这一层会使用 Proxy 劫持 document 对象,将所有的 dom 操作都转化为一条条 cmd,然后发送给 slave 层即可,slave 要对 master 绝对服从
以上,小程序引擎基本都是一样的思路,只是大家打不同的组合牌,我凭借我的经验和权衡,给出了一副牌
使用 worker 作为沙箱
大家肯定要问,为什么不使用 v8 而是使用 worker 呢?
这里我需要解释一下,worker 也是 v8,它们的本质是一样的,但是 worker 的维护量更小,而且关键是:ios 端根本没有 v8!
worker 是最好的选择,维护量瞬间降低,worker 有多种,因为我需要使用 nobundle 的打包思路,所以暂时使用 web worker
等 service worker 正式支持 module,我们还可以切换到 sw,这样就可以瞬间拥有推送,离线,添加到桌面的功能了……
w3c.github.io/ServiceWork…
标准已经更新,但啥时候正式支持,可能就是猴年马月了::>_<::
基于 Proxy 的线程通信方案
zhuanlan.zhihu.com/p/198989762
前面提到,类似于 taro next,kbone 等框架,跨端主要是借助模拟 dom,这样下来上千行代码,而我使用 Proxy 去劫持 dom 操作只需要 200 多行代码
不是一个级别的抽象层次,也不是一个级别的维护量
另外,使用 Proxy 劫持,本身还是一种收集行为,我可以先收集,然后分批次发给 slave 层
跑 fre 框架
我不建议使用 react、vue 这种 runtime 很重的框架,甚至 fre 一开始我也不想用
Proxy 劫持说实话有一些坑,比如它只能劫持点操作符
dom['nodeValue'] = 'hello world' 复制代码
像这样的直接赋值的行为它劫持不到,我们得在 slave 层对它进行改造
Text.setAttribut = function(name, value){ if(this[name]) this[name] = value } 复制代码
nobundle server
类似 snowpack,vite 的思路,我第一次尝试将 type module 用于 worker
<script type="module"> import {connect} from './fard.js' const worker = new Worker('./worker.js', { type:'module' }) connect(worker) </script> 复制代码
优点是多快好省,缺点是 worker 对 module 的支持不全
很是绝望,是谁发明的 importScripts 啊,太坑了吧!
但是介于我们现在也是原型阶段,所以值得等,说不定等我们用于生产那天,大家就都愉快支持了呢~
electron ide
目前主流的方案都是自己打包 devtool-frontend 项目,说实话我也尝试过,但是这个项目的构建流程非常脱俗,不利于维护
所以换一个方向,我们使用 electron 自带的 devtool,然后使用 BrowserView 调用,然后使用它自带的远程调试就好了
有啥功能就通过 extension 的方式拓展即可
总结
以上,就是我打的组合牌了……可以看到,每一个环节和别人都不太一样,这就是一个典型的工程化项目,特别适合在公司做 kpi
但是我还是想说一下,小程序这组架构,是具有普适性的,除了小程序本身,还有很多地方可以用到
比如 vscode 插件系统,比如钉钉,飞书这种平台,特别适合搞一套这样的架构
文章中没有上其他大厂的架构图,因为这玩意本身是一个偏业务型项目,没有复杂难以理解的算法,我希望和 fard 能够和 berial 一样通俗易懂
小程序游戏开发三个引擎用哪个好呢 Cocos,Egret,Laya?
如果是新人做2D项目,推荐 Cocos Creator + fairygui
注意 Cocos Creator 和 Cocos Creator 3D 是两个东西。
Creator 3D 没用过,不敢说。
Cocos Creator 目前版本 2.4 ,
我从1.7用到现在,直观的说,对于2D小游戏项目,有如下优点:
1、入门教程丰富。
2、上手容易,工作流方便(creator编辑器就是精简版的unity),开发快。
3、发布轻松,坑少。尤其需要处理微信小游戏子域开发时,这简直太舒服了。
4、API友好。官方文档搜索容易。
5、社区友好,资源丰富。
6、真开源。真的遇到问题直接上git拿源码来改。
缺点是,很多有洁癖的程序员不能接受在工程的场景里直接对游戏物件进行拖放,甚至直接把代码拖到组件上面去。多人协同开发的时候你改一下场景我改一下场景很容易冲突——这就是我为什么说要弄个fairygui。
Egret没用过,不提了。
Laya,因为公司项目(3D)强制要求使用,就用了一段时间,API长得跟flash很像,也算好用(H5游戏引擎有什么难用的呢)。
但是,作为堂堂一个游戏引擎,的3d场景必须用unity编辑,3d资源必须用unity导出:
说实话,一个游戏引擎的场景和资源要依赖另一个引擎,还真是……恕我少见多怪。从法律角度讲,unity并不是免费的。使用unity你要付费的。当然,Laya也不是免费的:
不知道是不是因为不免费,所以laya的社区气氛……呃,有社区吗?反正你问什么都只有两个结果,一,没人回答,二,冷嘲热讽反问你为何如此小白。社区里有用的资源也没几个,不像隔壁连A*都有,而隔壁的隔壁(U开头的那家)更是资源丰富的怕你用不完。
免费的入门教程万年不更新,还停留在Air1.0时代,而2.0的所有课程都要收费。
上述就是小编为大家整理的关于首个开源小程序引擎你想知道的都在这里,游戏开发小程序引擎哪个好用的相关内容。
国内(北京、上海、广州、深圳、成都、重庆、杭州、西安、武汉、苏州、郑州、南京、天津、长沙、东莞、宁波、佛山、合肥、青岛)Finclip软件分析、比较及推荐。
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~