百科问答小站 logo
百科问答小站 font logo



为什么没人做类似《艾尔登法环》风格的开放世界手游? 第1页

  

user avatar   narikiri 网友的相关建议: 
      

好家伙,现在打开老头环,去一趟盖利德地区看看,是不是显得血腥又恐怖?这种要素做手游在国内能过审啊????

以老头环的升级加点模式,再配合手游那群追求速度的效率厨,必然会出现一堆玻璃大炮无伤的情况。洗点卡和复活卡作为付费点,要不要加?怎么加?

既然都有级别了,加个战力系统很合理吧?反复挑战boss可以学习隔壁噬血代码的深层,再加上手游特色分难度机制,再搞个战力限制很合理吧?

好,假如做一个推荐100w战力的副本,80w可以进图,120w可以横着走。那还需要把boss做成老贼的形状吗?他们土豪肯定充钱砸战力80w就下本交钱复活也要打死boss用来吹牛,可平民玩家怎么办?

环还有各种装备及强化,人家土豪砸钱强化快装备好,pvp一般都会取得优势的。平民可以赢,玻璃大炮,上吧,被砍一下就被土豪送回家了。

所以国内手游做不来这种游戏,能做出来也不是一般人能氪的起的,何必呢?


user avatar   fu-chou-zhe-16-45 网友的相关建议: 
      

为啥中国车企不直接把外国顶流跑车模仿成电动车做出来,想必一定可以在国内市场爆火吧。


user avatar   gu-shou-jing-liu 网友的相关建议: 
      

魂系手游就有,《雀魂》。多端互通的。不过不是开放世界。

我后来想了一下,《雀魂》可以算开放世界。这种开放世界的玩法我们一般称之为“面麻”。


user avatar   goshizanka 网友的相关建议: 
      

看了一眼这题目下面的回答,只能感慨手游玩家里都开始有代差了。

所以大概已经没多少人知道2010年的手游玩家们花上一个月工资买个iPhone 4,越狱之后等着桌面上的这个图标下载完成,亮起,并准备点进去时有多激动了。


user avatar   feng-jie-4444 网友的相关建议: 
      

玩家出生,属性全5,穿着布甲拿着匕首轻盾,出门。

大树守卫见一次你死一次。

哦搓玻璃操作没那么方便,想要打赢更难。

然后首充188送陨石杖和陨石法术,充了之后发现滥不够打不死。

路口要塞也冲不过去,只能杀垃圾怪存钱升级。

升级价格得翻倍。

刷两天把大树守卫干死。

后面以此类推。

手游的重点是数值和延迟满足,拉长游戏的投入产出时间,逃课要花钱。

艾尔登法环是单机游戏的杰作,拿去手游里就是粪作,因为太难了。


user avatar   li-ming-33-94 网友的相关建议: 
      

离完美的全能本还差几步?——华硕 天选3评测(i7+3070版)

天选系列从诞生至今,一直有着极高的讨论度和不错的销量。无论是二次元属性的天选姬,还是备受好评的「魔幻青」配色都是一道非常靓丽的风景线。

此外,天选系列的前2代总有着特殊的引发讨论技巧:

1代面世时除了其首发AMD的4000系CPU之外,那块45%NTSC色域的144Hz屏幕也成功打破了「高刷屏都是好屏幕」的定律,QLC表面固态硬盘也是2020年华硕非常独家的特色;

2代改进了屏幕刷新率,换上了TLC固态,但性能释放沦为了2021年游戏本基石单位,不支持独显直连更是进一步奠定了其稳定的地位。

这些并没有妨碍天选系列不错的销量,也好在产品经理没有躺在销量数据和拥趸的支持之上,在这次的3代做出了不小的进步。

独显直连有了,性能释放好了,机身还更轻薄了,青天就有了!(x

购入渠道

这次的首发供货非常少,京东渠道出货不到1万台。我是从咸鱼加价400入手的。(可能是经历了去年,居然感觉加价400完全可以接受…)

配置一览

表格漏写了,机器网卡是Intel的AX201

对这样高功耗的i7-12700H、RTX 3070,同时还能有90Wh的电池,机身做到了2.05kg,重量控制非常好。某种程度上完全可以起到部分全能本的职能。

最遗憾的是不支持PD充电。

故外带时要带上1斤4两的240瓦适配器,出行重量骤增。

测试环境/跑分原则

室温保持在24.0°C~26.0°C之间(空调调温,没法做到恒温,望见谅)。

机器在控制台中有3个模式可以选「安静模式」、「性能模式」和「狂飙模式」,可用Fn+F5进行切换。

若无,测试均采用「增强模式」。

除了续航测试使用「集显输出」(iGPU)之外,其他测试均开启MUX的「独显直连」选项。

「独显直连」图形性能更好,「混合输出」续航更好。

所有跑分、帧数测试都会重复5次,每次跑完后静置5分钟再开始下一次,取最高分。

外观

英特尔版天选3的3070显卡只有「日蚀灰」配色可选,无魔幻青。黑色有个小缺点,就是手上的油容易沾染,看上去比较明显。幸好比较好擦。

A面有LOGO「TX」代表天选(和企鹅没啥关系),位于上部。

B面&屏幕素质

B面为一块2160*1440分辨率、165Hz刷新率的屏幕。没有采用16:10的屏幕稍有可惜,下巴2指宽。

屏幕来自京东方。

作为一块广色域屏幕,色域容积142.7%sRGB、101.1%DCI P3;色域覆盖99.9%sRGB、98.9%DCI P3。

sRGB基准下,色准并不理想。有条件的话最好自行校色。

屏幕最高亮度为310尼特,边缘仅250尼特左右,在同定位&同价位游戏本里明显偏低。


C面键盘布局

键盘布局方面,风格延续上一代,WASD采用了反色设计。方向键半高。空格左半部分的突出被取消。数字小键盘相对完整,Delete和小键盘切换按键被做到了一起,对我来说需要适应。键盘手感回弹偏软。

最大可开合角度如图。

机器有运输模式,不插电无法直接开机。

CPU:i7-12700H(90W)

之前已经测过了,而这也不会是最后一台,应该未来很长一段时间时间内很熟悉很主流的CPU。

15轮R20:稳定分6622

除了开头2次之外,之后基本稳定在6620分左右,取后5轮中位数6622。

观察功耗可以发现,第一次较高,第二次逐步下降到100W,第三次出现波动,第四次开始比较平稳,打包功耗90W,IA大约83W,符合跑分曲线。

蓝线打包功耗,橙线IA功耗

大小核频率如图。(蓝线大核频率,橙线小核频率)

R23跑分:多核16619,单核1803

功耗表现如图(蓝线打包功耗,橙线IA功耗)

大小核频率如图(蓝线大核,橙线小核)

显卡:RTX 3070(140W)

RTX 3070是我心目中笔记本最值得选购的旗舰级显卡,处于一个性能与价格的甜区。

跑分

TimeSpy图形分 10261分

FSE图形分:13134

Superposition 1080P Extreme:6637

游戏表现实测

网游

测了DOTA2、CSGO和《彩虹六号·围攻》3款网游在1440P和1080P下的表现。

DOTA2:全最高特效,比赛编号6040722034,完美世界视角。

CSGO:开多核渲染,其他全部最低,创意工坊BenchMark。

彩虹六号围攻:全最高档,性能测试。

可以看出网游部分的1080P和1440P分辨率下,帧数基本非常接近。可以任意按照自己喜好开高。

单机游戏

对比上面的网游,单机中,1440P和1080P分辨率下,帧数差距还是比较大的。帧数和清晰度不可得兼。

续航测试

机器电池为90Wh。

把机器切换至核显输出,系统为「均衡模式」,中心亮度150尼特,开WIFI,关蓝牙,PC Mark 8的Conventional测试,办公场景下的中高负载,成绩比较接近实际使用。

实测续航为5小时15分,Conventional 3.0 Score为3572分。

还好买了个延时相机,现在拍续航方便多了,不再担心错过

烤机/散热测试

室温在25°C附近。

单烤CPU

使用AIDA64中的Stress FPU单烤CPU。

20分钟后,CPU功耗为90W,温度为87°C,大核3.6GHz,小核2.9GHz。

图上可以看出一个小插曲:单烤CPU期间,桌面突然变成一片白…我寻思又不是海涛,给我看一片纯白干甚…之后在任务管理器启动Explorer才恢复正常。

单烤期间功耗如图。

前期会冲到115W左右,前3分钟会保持在约100W(中间有过瞬间掉下去),之后稳定在90W。


单烤显卡

使用Furmark 1.10.6(比较老的版本了,只不过我之前电脑都用这个烤的,所以暂时还没换新版本)。

关抗锯齿、1920*1080、勾选Burn-in和X Burn-in。

20分钟后,GPU温度75.8°C,功耗139.5W,频率1260MHz。

除了偶尔掉到过125W左右,其他时间基本全程在140W左右。

双烤

同时进行上面2项测试。数据取20-30分钟的平均值。

CPU功耗48W,温度为82°C,大核频率2.54GHz,小核频率2.29GHz。

GPU功耗115W,温度78.1°C,频率837MHz。

CPU功耗、GPU功耗与总功耗如图。

从110秒左右开始区域稳定,达到CPU 48W加上GPU 115W的功耗水平。

测试时电脑和分贝仪有固定位置,大概是在这个位置关系,比较接近人耳所听到的噪音,可能会比其他测试者的数据低一些。

烤机全程最高为52.3分贝,总体还算可以接受的水平。

此时键盘表面温度如图。

腕托为室温,WASD区域仅30°C附近比较低,键盘最热的区域在上部,键帽最高温在F8按钮名为48.4°C。中间有一个倒三角区域相对偏热,其他的地方温度都不算很高。

另外,这台机器用瓶盖垫高机身之后,双烤成绩上除了CPU和GPU的频率稍微提高,其他部分几乎完全一致,可能是原本已经有4个出风口充分散热的关系,底壳基本不出风。


拆机

拆机不难,机器底面除了右下角的螺丝之外的11颗螺丝全部拧下。

注意拆的时候右下角一颗螺丝是和后盖一体的,无法取下,但一定一定也要拧松。

先从这个螺丝周围开始撬开,右边撬开之后就比较方便可以拆下了。

机器为双风扇、五热管、四出风口的散热设计。贴纸下面有硬盘和内存。

内存

我这台机器内存是三星的,跑分如图。读写都在56GB/s左右,延迟102.3ns偏高(DDR5目前的通病)

硬盘

硬盘为美光的3400,大文件读写的跑分如图。

ASSSD的10GB读写跑分如图。

CrystalDiskMark的32GB读写跑分如图。

硬盘初始状态没有分盘,全部在一个C盘下,还剩余396GB(图为393是因为我装了测试软件)

机器总结部分

优点

1.机身轻

一拿到手的时候,就能感觉到,机器总体的重量比以往任何一台15.6寸的3070游戏本都要明显轻,这种第一印象是很好的。

在这样的机身重量下,双烤成绩弱于部分更重、更大的游戏本,其实是完全可以接受的。

2.游戏表现达到主流水准

双烤47+115不算特别出色,但已经完全不拉跨了。相比于上一代天选2的3070,那这一代进步非常明显。

游戏的表现也都达到了主流水平。除了个别像2077这样优化不好的游戏,或者像《全战·三国》这样同屏单位多的游戏,其他大部分单机游戏都能1440p开预设的高档位拿到60帧以上,这个成绩是很令人满意的。

3.散热和隔热还行

键盘的键帽温度热区在中间,基本避开了WASD部分,而且腕托很凉快。

同时,噪音比想象中要小很多,也不是特别吵的那种,使用体验是OK的。

缺点

1.屏幕素质有待提高

当价格来到五位数的时候,我认为屏幕最高亮度至少也得有350尼特吧…310尼特真的有点拿不出手了,这点真的不得行啊。

机器的其他硬件已经都没啥问题了,硬盘、内存都没缩,网卡也是AX201,但就是这个屏幕给了个300尼特屏…淦…

同时,作为一块广色域屏幕,在色彩管理上基本没花心思和力气,非常放任。

2.不支持PD充电

这点其实是我感觉特别难受,要是这台机器支持PD,那我就不出二手留下自用了。

不满意的地方在于,明明ROG是支持PD的,而且之后会发售的天选Air也是支持PD的,天选3不支持PD完全是有意而为之的选择,真的感觉很不爽…

这样一来,机身轻的优势完全被不支持PD给削了一大部分。

左:65W GaN;中:100W GaN;右:天选3适配器

我要是出趟门,你猜我更愿意带这三个充电器里左边这两个,还是右边这个?

尤其对我这种有紫米20充电宝的,我就更希望会支持PD了,这样找不到插头还能用充电宝应急。

3.i7+3070版目前只有一个配色

不是很清楚为啥机器没有天选3经典的「魔幻青」配色。倒不是我多喜欢这个颜值,只是黑色真的容易看起来脏。

而且锐龙版3070也有,怎么这Intel版的3070就没这个颜色了…很奇怪。

缺货,需要加价

这个没啥好说的,英特尔版京东放货7000台,锐龙版甚至不到5000台…目前需要加价购买。

购买建议

总得来说,天选3是天选最均衡的一代,这次测试的3070版表现也远超个人的预期。

由于个人原因经常在多个城市之间来往,手头的17.3寸笔记本多有不便,今年也一直在考虑换一台笔记本。天选3差一点就成了我的落脚处,可惜最终由于屏幕不够亮、不支持PD两个主要原因,算是擦肩而过了…

总得来说,如果你对天选系列的外观垂涎已久,那天选3就是目前最值得购买的一代。

如果你需要当一个便携的全能本来用,那记得要把适配器重量也考虑在内。

如果上面提到的2个问题你不在意,又需要换一台12代的新3070游戏本,那目前天选3的3070版是值得考虑的。


至于上面提的2个主要缺点,大家多吐槽吐槽,按照天选以往每年的进步来看,说不定天选4就会更好。


这台机器,原价10299,我10700入手,按惯例一般是自刀300。

不过这台机器涨价买,而我无论如何都不太能接受自己的二手价高于首发价,会有点良心不安,因此折价500,按10200出。

等我视频做完就会放上海鲜二手平台,有兴趣的朋友可以去蹲一下。


user avatar   adam-yang-49 网友的相关建议: 
      

很少有人不基于框架直接写GUI界面啦,我这个回答就从GUI框架反过来推什么语言做GUI合适。(只聊桌面端GUI编程框架)

Qt

几乎是C++领域最流行的跨平台桌面端软件开发框架了,这个框架是两个挪威人在1995年创建的,发展至今可以说历史相当悠久,稳定性也很有保障。很多大公司都在用它做界面比如金山的WPS。

它内置了自绘引擎,也就是说界面上的一个按钮,一个文本框,都是Qt的引擎自己画的,这保证了基于Qt开发的软件界面在不同操作系统上看起来是一模一样的。

它提供了大量的与界面无关但与软件开发息息相关的API,比如、网络、文件系统、剪切板等,而且让这些API在不同的操作系统下都有效,这极大的节省了开发人员的时间。

但它也有一些缺点,比如在处理一些特殊需求上很不方便,比如:目前Qt有没有比较好解决高分屏下缩放显示的方案?Qt没有真正完美的无边框解决方案吗?等,在一些组件的渲染上也会出一些隐藏的较深的问题(QListItem),一旦遇到,就很难解决。

Qt近年来不太专一,qml,qtquick等,搞了很多,而且这些新玩意儿一直不温不火,有些模块做了又废弃了,比如:qt script,搞来搞去,搞的模块繁多且复杂,用起来不是很舒服。

Qt有界面描述语言(XML描述界面),可以通过设计器拖拽空间设计界面,编译期界面描述语言被转义成C++代码,性能上没啥损失。

Qt商业授权不太友好,开发商业应用一定要谨慎,之前听说有公司为此付出了高额的版权费。个人开发者可以免费使用。Qt的免费版本不允许静态链接,会有版权上的限制,但开发者还是可以通过一些特殊的编译方法静态连接Qt的库的。

除了使用C++开发Qt应用外,开发者还可以使用其他语言开发Qt应用,最流行的就是使用Python基于PyQt做Qt应用了,其他语言的绑定不是很成熟,但PyQt仍然有版权的问题。

GTK

GTK是1997年创建的,也非常成熟稳定,是C语言开发的,但有很多语言的绑定,比如官方支持的JavaScript、Rust等,当然用C++语言操作GTK也很方便,它也有自绘引擎(Cairo),也提供了大量系统相关的API,商业授权也非常友好,基于GTK开发商业软件不用担心收到律师函的问题,虽然它是一个跨平台桌面软件,但它似乎只在Linux操作系统领域流行,有非常多的Linux桌面软件都是基于GTK开发的。

这也直接导致GTK的维护者很重视Linux领域的发展,而忽视Windows和Mac领域。这个框架提供的很多API,只在Linux下有,Windows和Mac下没有。这样的API数量众多。甚至在Windows下编译一下GTK的源码都要比Linux下难很多。而且GTK的渲染引擎在Windows下性能表现也不如在Linux下好。

GTK在Windows上也没办法静态连接,它到不是因为版权的问题,而是它依赖MSYS2的一些库,这个库用于在Windows上模拟Linux环境,这也是为什么GTK在Windows上表现不佳的原因之一。

另外,由于GTK是C语言开发的,所以开发风格也很C语言化,这对于部分开发者来说可能觉得繁琐。

wxWidgets

wxWidgets是1992年英国的一个大学教授开创的跨平台GUI软件,也非常成熟稳定,商业授权非常友好。它没有自绘引擎,而是对不同平台下的界面API做了整合和封装,这样开发者在Windows下开发的软件看起来就是Windows窗口风格、Linux开发的软件看起来就是Linux窗口风格,这对于某些软件来说,正是他们想要的,但要想搞一些花哨的特效就没那么容易了。它同样也提供了大量的系统相关的API供开发者使用。

它是C++开发的,所以对C++开发者非常友好,除此之外它还支持静态连接,也就是说开发个应用不用分发给用户一大堆dll,当然Qt也支持静态连接,但是你得自己编译Qt的源码(不是很方便),而且Qt的授权规则也不允许普通开发者这么做。

它会有些小问题,比如我之前提的:wxEVT_NOTIFICATION_MESSAGE_DISMISSED event emit twice,但总体来说还是非常稳的。除了开发的界面比较死板外,没啥大的问题。目前使用这个框架开发软件的人越来越少了。

FLTK

fltk是1998年创建的跨平台开源GUI框架,历史悠久,商业授权友好,而且C++之父也用它,它非常轻量级,支持静态连接,一个简单的应用编译后只有500K左右,非常赞,

它有自己的自绘引擎,没记错的话用的是OpenGL,但它的重绘机制是按区域重绘的,如果组件A所在的区域上存在组件B,那么A组件重绘时,会把B组件的给重回掉,开发者必须自己写代码处理这种情况。想象一下,如果你想实现一个A组件fade out的同时B组件fade in的效果,就会非常麻烦。

FLTK提供的一些组件样式都比较刻板,绘图API也比较少,你想实现一个漂亮一点的圆角按钮(它内置圆角按钮的圆角大小是不能改的),必须自己画,而且还得借助一些非常奇葩的手段才行(如果你想知道,可以联系我)

它是C++开发的,但API不够现代,用起来总体还算舒服的,它有Rust绑定:fltk-rs。它的用户比前面三个都少。它提供了一些与界面无关的操作系统API,但非常少,几乎可以忽略。

Duilib

是2010年国内一个开发者开发的GUI开发框架,因为底层基于DirectUI开发,所以只支持Windows平台,不支持跨平台,开源协议友好,商用没有任何问题(需要附加Lincence文件),国内有很多大厂基于这个技术做桌面端应用,比如网易、腾讯、百度,这个框架是基于C++开发的,对C++开发者友好。但框架本身还有一些问题,比如对高分屏支持不佳、特殊控件绘制上也有一些小问题,除了界面相关的API外,几乎没有提供系统级的API,作者纯粹是用爱发电来开发这个框架,所以更新不是很及时。

相对来说网易基于Duilib开发的分支更完善一些:NIM_Duilib_Framework,添加了高分屏支持、多国语言、整合了多线程处理的支持,但环境搭建相对比较麻烦。如果开发者要用这个框架,一定要用develop分支下的代码,master分支下的代码问题很多,这个框架看上去也是作者一个人努力的成果。

Sciter

Sciter是2006年创建的跨平台闭源GUI框架,足够稳定,商业授权不友好,但个人开发者可以随便用(只能用动态链接库),一旦公司规模超过3人,就得买版权了(有权静态连接)。

它内部封了一个浏览器核心,让开发者使用HTML,CSS,JS来创建界面,但对这个浏览器核心做了大量的精简,不像Electron和NW.js动辄上百兆的体积,它只要6M就够了。当然这也意味着有些浏览器特性它是不支持的,比如CSS3的flex布局,它就不支持(但它提供了自己的flex布局实现方式)。以前它使用自研的一个脚本语言(和JavaScript很像),自从集成了Fabrice Bellard大神的QuickJs之后,就全面支持JavaScript了。它还对一些特殊的场景做了内置的支持,比如渲染大列表。

它使用C++开发,对C++开发者很友好,有Rust、go、Python等语言的绑定,但都是社区提供的,质量堪忧。有很多知名厂商都用这个库做界面,比如360、teamviewer、赛门铁克等。

RmlUi和Sciter很像,可以看成Sciter的替代框架,但RmlUi这个项目有三界作者,一个一个的弃坑不知道新任作者会不会弃坑,目前还不是很成熟,比如我正在尝试帮作者解决的CJK输入法的问题,目前还不推荐大家使用这个框架。

CEF

CEF是2008年创立的,基于Chromium的跨平台GUI框架,稳定且商业授权友好,国内很多大厂都用的CEF:比如微信桌面端、网易云音乐桌面端、QQ桌面端、微信桌面端、MATLAB、FoxMail、OBS Studio,装机量破亿。

由于它几乎封了一个完整的Chromium,所以体积非常大,但支持所有的HTMLCSSJS特性,它几乎不提供任何与操作系统相关的API,创建个托盘图标、读写个文件啥的,都要开发者自己完成,它是C/C++开发完成的,对C++用户非常友好,它有gopythonjava等语言的绑定,但都是社区提供的,质量值得担忧。

它对Chromium封装的很好,避免了开发者直接与Blink、V8、Chromium等复杂的代码打交道,很多功能都有默认实现方式,遵从约定由于配置原则,有经验的C++开发者可以很轻松的驾驭CEF框架。

由于Chromium是版本弟,所以CEF版本发布也非常频繁,很多被标记为稳定的版本,还是会出一些莫名其妙的问题,选一个好的版本非常重要。

与Electron一样,它也是分主进程和渲染进程的,所以开发者要非常娴熟的运用跨进程通信的技术,虽然CEF提供了跨进程相关的API,但复杂度还是有点高的,使用的时候要认真细心。

MAUI

这是微软的跨平台GUI框架,不仅仅支持桌面端,还支持移动端,但官方并不支持Linux的桌面端(黑人问号,感觉与微软近些年向开放、开源的大方针相悖),这个框架新的狠,至今还没发布稳定版。目前还没什么人用。而且不知道将来会不会被微软放弃。

它是.NET平台下的GUI框架,有自绘引擎,对C#开发者很友好,界面依然是用XAML描述的,可能很多人一听到XAML就直接弃坑了。XAML表现力确实弱一些,我觉得WPF没火起来跟XAML有直接关系。

使用这个框架开发桌面应用得封一个.NET框架给用户,当然有了.NET框架应用程序访问一般的系统级API也就不成问题了。

Compose Multiplatform

这是JetBrains搞的跨平台GUI框架,也非常新,前段时间刚刚推出1.0.0版本,但这个版本还不是很稳,至少比Flutter Desktop的第一个稳定版要差很多。同样也几乎没什么人用。

它的自绘引擎用的是Google的skia,这个自绘引擎稳的很,Chrome和Flutter都是用的它,所以排版、绘制、渲染之类的工作不太会出问题。比Java生态圈里的Swing和JavaFx要好很多。

JetBrains的东西当然对Kotlin开发者友好啦,Java生态下的很多东西你都能用,访问系统级API也没啥大问题,同样也得考虑封一个JRE给用户。

flutter-desktop

这是谷歌的跨平台开发框架,开源、免费、文档齐全、投入力度大且持久,同样也新的很,Windows版本刚刚发稳定版,Mac版本还没稳定。

如果你完全没搞过移动端的flutter,想用这个框架开发桌面应用,那么意味着你要学的东西还挺多的。好在dart和flutter入门都不是很难,学习曲线比较平缓。

由于flutter在移动端积累了很多年,所以界面上的一些东西在desktop端都比较稳(skia自绘引擎),与操作系统相关的东西还不成熟,生态也不太好,比如你想订制一下窗口的标题栏,想访问一下注册表这类工作可能得自己想办法。不过它有类似FFI的支持,跟C/C++语言打交道很方便。

开发者直接使用Dart语言描述界面,这会导致众多大括号嵌套在一起的问题,可能很多开发者不习惯。

webview2

这是微软Edge浏览器团队推出的跨平台GUI引擎,是闭源的,目前只支持Windows,对C#和C++开发者友好,如果使用C#开发,就得考虑把.NET运行时分发给用户,如果使用C++开发,就得自己处理系统级API的操作,webview2本身是不对系统级API做封装的。

这个框架推出也没多久,很多API也还不稳定,更值得担忧的是这个团队,他们前不久刚刚放弃了自己的浏览器核心转而使用Chromium浏览器核心,不知道他们会不会放弃webview2这个框架。

它的优势是可以复用系统当中已存在的webview2二进制资源,也就是说它虽然封了一个Chromium浏览器核心,但如果你可以确定客户电脑已经存在了基于webview2开发的应用,你的安装包体积可以足够小。

它也是多进程架构,甚至比Electron还要多一个进程(为了复用二进制资源),资源占用比较多。

webview

这个库使用操作系统的浏览器引擎来达到减小安装包体积的问题,Mac上使用Cocoa/WebKit,Linux上使用gtk-webkit2,Windows 10上使用Edge(也就是上一个小节里提到的webview2),它应该是不支持Win7的。开发者要考虑前端代码浏览器兼容的问题。

开源且免费(MIT)有go、Rust、Python等语言的绑定,不过官方支持的是go语言,C和C++,操作浏览器的API非常少,不支持自定义scheme,更别提系统级API了。

TAURI

采用的技术方案与webview类似,所以安装包也足够小,非常新,还没发布稳定版,开源免费。webview框架碰到的问题TAURI都有,

使用Rust开发,将来会支持Deno,作者说将来会直接使用webview的技术来支持多平台,

NW.js

NW.js最早把Chromium和Node绑定到一起,用前端知识做界面,用Node技术访问操作系统,最早叫node-webkit,在2012年创建。NW.js基于MIT开源,可以无忧使用。没记错的话,微信小程序开发工具是用NW.js开发的。作者是英特尔的员工,英特尔的一些工具也是用NW.js开发的。

除了Chromium和Node的能力外,NW.js自己也封装了一些系统级API,类似托盘图标、剪切板、系统菜单这种,但数量明显比Electron要少。

NW.js可以在多个窗口间共享同一个Node.js上下文,而且还可以通过配置让Node的上下文和Dom上下文混合,这给开发者带来了很多便利。心智负担减少很多。不像Electron要时刻想着进程间通信,哪些模块当前进程不能用这类问题。

NW.js虽然起步早,但奈何没有杀手级应用,周边的生态和工具链没发展起来。用的人越来越少,维护的投入也不如Electron大,再加上Chromium更新非常频繁,导致NW.js的有些API也不是很稳,恶性循环加剧。

Electron

Electron的作者曾经在NW.js团队工作过(NW.js项目贡献第二多的人就是Electron的作者),后来辗转到了github公司,于2013年在创建了Electron,也是个开源免费的产品。由于VSCode、slak等国际型产品都选择了Electron,所以从者甚众,生态和周边工具链也完善的多。虽然开发方式上有点蹩脚的地方(多进程架构及模块归属进程),但瑕不掩瑜。

Electron每创建一个窗口都会多一个进程,这使Electron创建窗口的效率不高(秒级),NW.js有复用进程的机制,即使新窗口加载完全不同域的页面也不会创建新的进程(毫秒级)。这也是为什么很多基于Electron开发的应用都使用Dom模拟弹窗的原因。

无论是浏览器相关的API,还是系统级API,Electron提供的都比NW.js多。

--------2022-02-25更新--------

这些框架除了对开发者使用的编程语言有要求外,还有一个重要的差异就是有没有独立的界面描述语言(也就是UI DSL),这非常重要,涉及到一个框架表达业务的重要能力。

类似XAML、qt的ui文件、HTML+CSS都是界面描述语言,下面这种也可以算界面描述语言,但我感觉它不够纯粹(flutter、qml和Compose Multiplatform都是类似这样的):

       panel {   row {     checkBox(...)     row {       textField(...) // indented relatively to the checkbox above     }   } }     

但无论如何,显而易见的是,没有任何一个界面描述语言能比的上HTML+CSS组合。想想看:HTML里各种花里胡哨的语义化标签和Dom操作技巧,CSS里的布局方式、伪元素、动画描述...,对比之下你就会觉得XAML、qml直流都是弟弟。

除此之外,一个优秀的GUI框架还有两个重要的需求,这里我简单聊聊:

强大的事件处理机制必不可少。

想想这些:鼠标事件、键盘事件、触屏事件...界面加载完成、媒体播放结束、元素大小改变...网络状态变更、数据段传输完成...另外,还得处理事件冒泡、事件捕获、事件分发吧...

qt的开发者曾经说过qt的SIGNAL和SLOT机制是有性能问题的(但影响很小)

强大的异步处理机制必不可少

你不能在用户处理业务逻辑的时候,让界面渲染工作阻塞,这就需要一个强大的异步处理机制,让开发者自己去开线程去完成业务处理,无疑是又麻烦又会增加开发者的心智负担。

我记得很早之前在C# WinForm应用中,点击一个按钮,如果不用Invoke执行逻辑处理的话,界面就会卡死。

这么看来,在你的GUI应用里包一个浏览器核心还是挺有必要的,这样你就可以用HTML+CSS强大的能力来描述你的界面,用JavaScript强大的事件处理机制和异步处理机制来完成用户交互。

可能有人会想,这会带来很多问题呀,比如应用体积会增大的100M以上、会占用更多的CPU和内存资源,还会更耗电等等。

确实,目前来看这些都是问题,但仔细想想,这些问题应该不会持续太久,网络会变的更快,用户的磁盘和内存会变得更大,CPU处理能力也会更好,耗电的问题当然会持续存在,甚至会愈发耗电,但电的供应会持续增长呀。

web相关的技术之所以胜出,并不是这些技术的设计者有多厉害,而是这20多年间,有大量的人涌入了这个领域,前赴后继的推动着它前进。其他任何一个领域都没有这么热火朝天的景象。推荐大家看看我的另一个回答:

------------2022-02-27更新----------

用Web相关的技术做GUI应用的优势是,让开发者可以把大部分精力投注在业务本身上,而不是处理与GUI相关的技术细节。

实际上所有的框架,都应该是这个目的,比如ORM框架,目的应该是让开发者把大部分精力投注在业务与数据之间的关系上,而不是管理关系型数据的技术细节。

当然这肯定是有损耗的,在性能、稳定性、资源消耗上,都会有所削减。而且,因为有框架的存在,开发者很难深入到框架内部做一些特殊的事情。比如,我们该如何修改HTML的排版渲染机制呢?

所以,有些框架注重性能,有些框架注重开发效率,开发者做选择题的时候也应该衡量这两个问题,你的应用对哪些方面要求多一些呢?

你如果要开发一个视频监控系统,没多少业务功能,但要24小时不间断的记录视频数据,随时调取某一段时间的视频数据,这种应用可能Qt是最好的选择。

你如果要开发一个类似飞书的团队协作应用,业务逻辑复杂的一塌糊涂,而且要在短时间内满足更多用户的需求,占领更多的市场,那么Electron可能是更好的选择(目前飞书已经不再用Electron了,他们自己编译了Chromium核心,自己封了一个类似CEF的框架)

目前微软、谷歌、JetBrains等公司都非常重视桌面端开发框架,也在推各自的框架产品,说明桌面应用领域并没有没落,反而应该更加受到重视。

虽然移动端应用大行其道,但我认为,只有生活、社交、轻娱乐等方向上的应用在移动端有较好的发展。文档协作、大型游戏、开发工具、专业管控软件等应用还是在PC端发展的更好一些,毕竟PC端有更多样的输入输出设备、更广阔的显示和交互的空间,更强的存储和计算能力。

希望桌面软件开发领域的从业者都能获得幸福。

满屏荒唐言,一把辛酸泪,一把辛酸泪,一把辛酸泪...



user avatar   chen-si-qi-22-3-44 网友的相关建议: 
      

很少有人不基于框架直接写GUI界面啦,我这个回答就从GUI框架反过来推什么语言做GUI合适。(只聊桌面端GUI编程框架)

Qt

几乎是C++领域最流行的跨平台桌面端软件开发框架了,这个框架是两个挪威人在1995年创建的,发展至今可以说历史相当悠久,稳定性也很有保障。很多大公司都在用它做界面比如金山的WPS。

它内置了自绘引擎,也就是说界面上的一个按钮,一个文本框,都是Qt的引擎自己画的,这保证了基于Qt开发的软件界面在不同操作系统上看起来是一模一样的。

它提供了大量的与界面无关但与软件开发息息相关的API,比如、网络、文件系统、剪切板等,而且让这些API在不同的操作系统下都有效,这极大的节省了开发人员的时间。

但它也有一些缺点,比如在处理一些特殊需求上很不方便,比如:目前Qt有没有比较好解决高分屏下缩放显示的方案?Qt没有真正完美的无边框解决方案吗?等,在一些组件的渲染上也会出一些隐藏的较深的问题(QListItem),一旦遇到,就很难解决。

Qt近年来不太专一,qml,qtquick等,搞了很多,而且这些新玩意儿一直不温不火,有些模块做了又废弃了,比如:qt script,搞来搞去,搞的模块繁多且复杂,用起来不是很舒服。

Qt有界面描述语言(XML描述界面),可以通过设计器拖拽空间设计界面,编译期界面描述语言被转义成C++代码,性能上没啥损失。

Qt商业授权不太友好,开发商业应用一定要谨慎,之前听说有公司为此付出了高额的版权费。个人开发者可以免费使用。Qt的免费版本不允许静态链接,会有版权上的限制,但开发者还是可以通过一些特殊的编译方法静态连接Qt的库的。

除了使用C++开发Qt应用外,开发者还可以使用其他语言开发Qt应用,最流行的就是使用Python基于PyQt做Qt应用了,其他语言的绑定不是很成熟,但PyQt仍然有版权的问题。

GTK

GTK是1997年创建的,也非常成熟稳定,是C语言开发的,但有很多语言的绑定,比如官方支持的JavaScript、Rust等,当然用C++语言操作GTK也很方便,它也有自绘引擎(Cairo),也提供了大量系统相关的API,商业授权也非常友好,基于GTK开发商业软件不用担心收到律师函的问题,虽然它是一个跨平台桌面软件,但它似乎只在Linux操作系统领域流行,有非常多的Linux桌面软件都是基于GTK开发的。

这也直接导致GTK的维护者很重视Linux领域的发展,而忽视Windows和Mac领域。这个框架提供的很多API,只在Linux下有,Windows和Mac下没有。这样的API数量众多。甚至在Windows下编译一下GTK的源码都要比Linux下难很多。而且GTK的渲染引擎在Windows下性能表现也不如在Linux下好。

GTK在Windows上也没办法静态连接,它到不是因为版权的问题,而是它依赖MSYS2的一些库,这个库用于在Windows上模拟Linux环境,这也是为什么GTK在Windows上表现不佳的原因之一。

另外,由于GTK是C语言开发的,所以开发风格也很C语言化,这对于部分开发者来说可能觉得繁琐。

wxWidgets

wxWidgets是1992年英国的一个大学教授开创的跨平台GUI软件,也非常成熟稳定,商业授权非常友好。它没有自绘引擎,而是对不同平台下的界面API做了整合和封装,这样开发者在Windows下开发的软件看起来就是Windows窗口风格、Linux开发的软件看起来就是Linux窗口风格,这对于某些软件来说,正是他们想要的,但要想搞一些花哨的特效就没那么容易了。它同样也提供了大量的系统相关的API供开发者使用。

它是C++开发的,所以对C++开发者非常友好,除此之外它还支持静态连接,也就是说开发个应用不用分发给用户一大堆dll,当然Qt也支持静态连接,但是你得自己编译Qt的源码(不是很方便),而且Qt的授权规则也不允许普通开发者这么做。

它会有些小问题,比如我之前提的:wxEVT_NOTIFICATION_MESSAGE_DISMISSED event emit twice,但总体来说还是非常稳的。除了开发的界面比较死板外,没啥大的问题。目前使用这个框架开发软件的人越来越少了。

FLTK

fltk是1998年创建的跨平台开源GUI框架,历史悠久,商业授权友好,而且C++之父也用它,它非常轻量级,支持静态连接,一个简单的应用编译后只有500K左右,非常赞,

它有自己的自绘引擎,没记错的话用的是OpenGL,但它的重绘机制是按区域重绘的,如果组件A所在的区域上存在组件B,那么A组件重绘时,会把B组件的给重回掉,开发者必须自己写代码处理这种情况。想象一下,如果你想实现一个A组件fade out的同时B组件fade in的效果,就会非常麻烦。

FLTK提供的一些组件样式都比较刻板,绘图API也比较少,你想实现一个漂亮一点的圆角按钮(它内置圆角按钮的圆角大小是不能改的),必须自己画,而且还得借助一些非常奇葩的手段才行(如果你想知道,可以联系我)

它是C++开发的,但API不够现代,用起来总体还算舒服的,它有Rust绑定:fltk-rs。它的用户比前面三个都少。它提供了一些与界面无关的操作系统API,但非常少,几乎可以忽略。

Duilib

是2010年国内一个开发者开发的GUI开发框架,因为底层基于DirectUI开发,所以只支持Windows平台,不支持跨平台,开源协议友好,商用没有任何问题(需要附加Lincence文件),国内有很多大厂基于这个技术做桌面端应用,比如网易、腾讯、百度,这个框架是基于C++开发的,对C++开发者友好。但框架本身还有一些问题,比如对高分屏支持不佳、特殊控件绘制上也有一些小问题,除了界面相关的API外,几乎没有提供系统级的API,作者纯粹是用爱发电来开发这个框架,所以更新不是很及时。

相对来说网易基于Duilib开发的分支更完善一些:NIM_Duilib_Framework,添加了高分屏支持、多国语言、整合了多线程处理的支持,但环境搭建相对比较麻烦。如果开发者要用这个框架,一定要用develop分支下的代码,master分支下的代码问题很多,这个框架看上去也是作者一个人努力的成果。

Sciter

Sciter是2006年创建的跨平台闭源GUI框架,足够稳定,商业授权不友好,但个人开发者可以随便用(只能用动态链接库),一旦公司规模超过3人,就得买版权了(有权静态连接)。

它内部封了一个浏览器核心,让开发者使用HTML,CSS,JS来创建界面,但对这个浏览器核心做了大量的精简,不像Electron和NW.js动辄上百兆的体积,它只要6M就够了。当然这也意味着有些浏览器特性它是不支持的,比如CSS3的flex布局,它就不支持(但它提供了自己的flex布局实现方式)。以前它使用自研的一个脚本语言(和JavaScript很像),自从集成了Fabrice Bellard大神的QuickJs之后,就全面支持JavaScript了。它还对一些特殊的场景做了内置的支持,比如渲染大列表。

它使用C++开发,对C++开发者很友好,有Rust、go、Python等语言的绑定,但都是社区提供的,质量堪忧。有很多知名厂商都用这个库做界面,比如360、teamviewer、赛门铁克等。

RmlUi和Sciter很像,可以看成Sciter的替代框架,但RmlUi这个项目有三界作者,一个一个的弃坑不知道新任作者会不会弃坑,目前还不是很成熟,比如我正在尝试帮作者解决的CJK输入法的问题,目前还不推荐大家使用这个框架。

CEF

CEF是2008年创立的,基于Chromium的跨平台GUI框架,稳定且商业授权友好,国内很多大厂都用的CEF:比如微信桌面端、网易云音乐桌面端、QQ桌面端、微信桌面端、MATLAB、FoxMail、OBS Studio,装机量破亿。

由于它几乎封了一个完整的Chromium,所以体积非常大,但支持所有的HTMLCSSJS特性,它几乎不提供任何与操作系统相关的API,创建个托盘图标、读写个文件啥的,都要开发者自己完成,它是C/C++开发完成的,对C++用户非常友好,它有gopythonjava等语言的绑定,但都是社区提供的,质量值得担忧。

它对Chromium封装的很好,避免了开发者直接与Blink、V8、Chromium等复杂的代码打交道,很多功能都有默认实现方式,遵从约定由于配置原则,有经验的C++开发者可以很轻松的驾驭CEF框架。

由于Chromium是版本弟,所以CEF版本发布也非常频繁,很多被标记为稳定的版本,还是会出一些莫名其妙的问题,选一个好的版本非常重要。

与Electron一样,它也是分主进程和渲染进程的,所以开发者要非常娴熟的运用跨进程通信的技术,虽然CEF提供了跨进程相关的API,但复杂度还是有点高的,使用的时候要认真细心。

MAUI

这是微软的跨平台GUI框架,不仅仅支持桌面端,还支持移动端,但官方并不支持Linux的桌面端(黑人问号,感觉与微软近些年向开放、开源的大方针相悖),这个框架新的狠,至今还没发布稳定版。目前还没什么人用。而且不知道将来会不会被微软放弃。

它是.NET平台下的GUI框架,有自绘引擎,对C#开发者很友好,界面依然是用XAML描述的,可能很多人一听到XAML就直接弃坑了。XAML表现力确实弱一些,我觉得WPF没火起来跟XAML有直接关系。

使用这个框架开发桌面应用得封一个.NET框架给用户,当然有了.NET框架应用程序访问一般的系统级API也就不成问题了。

Compose Multiplatform

这是JetBrains搞的跨平台GUI框架,也非常新,前段时间刚刚推出1.0.0版本,但这个版本还不是很稳,至少比Flutter Desktop的第一个稳定版要差很多。同样也几乎没什么人用。

它的自绘引擎用的是Google的skia,这个自绘引擎稳的很,Chrome和Flutter都是用的它,所以排版、绘制、渲染之类的工作不太会出问题。比Java生态圈里的Swing和JavaFx要好很多。

JetBrains的东西当然对Kotlin开发者友好啦,Java生态下的很多东西你都能用,访问系统级API也没啥大问题,同样也得考虑封一个JRE给用户。

flutter-desktop

这是谷歌的跨平台开发框架,开源、免费、文档齐全、投入力度大且持久,同样也新的很,Windows版本刚刚发稳定版,Mac版本还没稳定。

如果你完全没搞过移动端的flutter,想用这个框架开发桌面应用,那么意味着你要学的东西还挺多的。好在dart和flutter入门都不是很难,学习曲线比较平缓。

由于flutter在移动端积累了很多年,所以界面上的一些东西在desktop端都比较稳(skia自绘引擎),与操作系统相关的东西还不成熟,生态也不太好,比如你想订制一下窗口的标题栏,想访问一下注册表这类工作可能得自己想办法。不过它有类似FFI的支持,跟C/C++语言打交道很方便。

开发者直接使用Dart语言描述界面,这会导致众多大括号嵌套在一起的问题,可能很多开发者不习惯。

webview2

这是微软Edge浏览器团队推出的跨平台GUI引擎,是闭源的,目前只支持Windows,对C#和C++开发者友好,如果使用C#开发,就得考虑把.NET运行时分发给用户,如果使用C++开发,就得自己处理系统级API的操作,webview2本身是不对系统级API做封装的。

这个框架推出也没多久,很多API也还不稳定,更值得担忧的是这个团队,他们前不久刚刚放弃了自己的浏览器核心转而使用Chromium浏览器核心,不知道他们会不会放弃webview2这个框架。

它的优势是可以复用系统当中已存在的webview2二进制资源,也就是说它虽然封了一个Chromium浏览器核心,但如果你可以确定客户电脑已经存在了基于webview2开发的应用,你的安装包体积可以足够小。

它也是多进程架构,甚至比Electron还要多一个进程(为了复用二进制资源),资源占用比较多。

webview

这个库使用操作系统的浏览器引擎来达到减小安装包体积的问题,Mac上使用Cocoa/WebKit,Linux上使用gtk-webkit2,Windows 10上使用Edge(也就是上一个小节里提到的webview2),它应该是不支持Win7的。开发者要考虑前端代码浏览器兼容的问题。

开源且免费(MIT)有go、Rust、Python等语言的绑定,不过官方支持的是go语言,C和C++,操作浏览器的API非常少,不支持自定义scheme,更别提系统级API了。

TAURI

采用的技术方案与webview类似,所以安装包也足够小,非常新,还没发布稳定版,开源免费。webview框架碰到的问题TAURI都有,

使用Rust开发,将来会支持Deno,作者说将来会直接使用webview的技术来支持多平台,

NW.js

NW.js最早把Chromium和Node绑定到一起,用前端知识做界面,用Node技术访问操作系统,最早叫node-webkit,在2012年创建。NW.js基于MIT开源,可以无忧使用。没记错的话,微信小程序开发工具是用NW.js开发的。作者是英特尔的员工,英特尔的一些工具也是用NW.js开发的。

除了Chromium和Node的能力外,NW.js自己也封装了一些系统级API,类似托盘图标、剪切板、系统菜单这种,但数量明显比Electron要少。

NW.js可以在多个窗口间共享同一个Node.js上下文,而且还可以通过配置让Node的上下文和Dom上下文混合,这给开发者带来了很多便利。心智负担减少很多。不像Electron要时刻想着进程间通信,哪些模块当前进程不能用这类问题。

NW.js虽然起步早,但奈何没有杀手级应用,周边的生态和工具链没发展起来。用的人越来越少,维护的投入也不如Electron大,再加上Chromium更新非常频繁,导致NW.js的有些API也不是很稳,恶性循环加剧。

Electron

Electron的作者曾经在NW.js团队工作过(NW.js项目贡献第二多的人就是Electron的作者),后来辗转到了github公司,于2013年在创建了Electron,也是个开源免费的产品。由于VSCode、slak等国际型产品都选择了Electron,所以从者甚众,生态和周边工具链也完善的多。虽然开发方式上有点蹩脚的地方(多进程架构及模块归属进程),但瑕不掩瑜。

Electron每创建一个窗口都会多一个进程,这使Electron创建窗口的效率不高(秒级),NW.js有复用进程的机制,即使新窗口加载完全不同域的页面也不会创建新的进程(毫秒级)。这也是为什么很多基于Electron开发的应用都使用Dom模拟弹窗的原因。

无论是浏览器相关的API,还是系统级API,Electron提供的都比NW.js多。

--------2022-02-25更新--------

这些框架除了对开发者使用的编程语言有要求外,还有一个重要的差异就是有没有独立的界面描述语言(也就是UI DSL),这非常重要,涉及到一个框架表达业务的重要能力。

类似XAML、qt的ui文件、HTML+CSS都是界面描述语言,下面这种也可以算界面描述语言,但我感觉它不够纯粹(flutter、qml和Compose Multiplatform都是类似这样的):

       panel {   row {     checkBox(...)     row {       textField(...) // indented relatively to the checkbox above     }   } }     

但无论如何,显而易见的是,没有任何一个界面描述语言能比的上HTML+CSS组合。想想看:HTML里各种花里胡哨的语义化标签和Dom操作技巧,CSS里的布局方式、伪元素、动画描述...,对比之下你就会觉得XAML、qml直流都是弟弟。

除此之外,一个优秀的GUI框架还有两个重要的需求,这里我简单聊聊:

强大的事件处理机制必不可少。

想想这些:鼠标事件、键盘事件、触屏事件...界面加载完成、媒体播放结束、元素大小改变...网络状态变更、数据段传输完成...另外,还得处理事件冒泡、事件捕获、事件分发吧...

qt的开发者曾经说过qt的SIGNAL和SLOT机制是有性能问题的(但影响很小)

强大的异步处理机制必不可少

你不能在用户处理业务逻辑的时候,让界面渲染工作阻塞,这就需要一个强大的异步处理机制,让开发者自己去开线程去完成业务处理,无疑是又麻烦又会增加开发者的心智负担。

我记得很早之前在C# WinForm应用中,点击一个按钮,如果不用Invoke执行逻辑处理的话,界面就会卡死。

这么看来,在你的GUI应用里包一个浏览器核心还是挺有必要的,这样你就可以用HTML+CSS强大的能力来描述你的界面,用JavaScript强大的事件处理机制和异步处理机制来完成用户交互。

可能有人会想,这会带来很多问题呀,比如应用体积会增大的100M以上、会占用更多的CPU和内存资源,还会更耗电等等。

确实,目前来看这些都是问题,但仔细想想,这些问题应该不会持续太久,网络会变的更快,用户的磁盘和内存会变得更大,CPU处理能力也会更好,耗电的问题当然会持续存在,甚至会愈发耗电,但电的供应会持续增长呀。

web相关的技术之所以胜出,并不是这些技术的设计者有多厉害,而是这20多年间,有大量的人涌入了这个领域,前赴后继的推动着它前进。其他任何一个领域都没有这么热火朝天的景象。推荐大家看看我的另一个回答:

------------2022-02-27更新----------

用Web相关的技术做GUI应用的优势是,让开发者可以把大部分精力投注在业务本身上,而不是处理与GUI相关的技术细节。

实际上所有的框架,都应该是这个目的,比如ORM框架,目的应该是让开发者把大部分精力投注在业务与数据之间的关系上,而不是管理关系型数据的技术细节。

当然这肯定是有损耗的,在性能、稳定性、资源消耗上,都会有所削减。而且,因为有框架的存在,开发者很难深入到框架内部做一些特殊的事情。比如,我们该如何修改HTML的排版渲染机制呢?

所以,有些框架注重性能,有些框架注重开发效率,开发者做选择题的时候也应该衡量这两个问题,你的应用对哪些方面要求多一些呢?

你如果要开发一个视频监控系统,没多少业务功能,但要24小时不间断的记录视频数据,随时调取某一段时间的视频数据,这种应用可能Qt是最好的选择。

你如果要开发一个类似飞书的团队协作应用,业务逻辑复杂的一塌糊涂,而且要在短时间内满足更多用户的需求,占领更多的市场,那么Electron可能是更好的选择(目前飞书已经不再用Electron了,他们自己编译了Chromium核心,自己封了一个类似CEF的框架)

目前微软、谷歌、JetBrains等公司都非常重视桌面端开发框架,也在推各自的框架产品,说明桌面应用领域并没有没落,反而应该更加受到重视。

虽然移动端应用大行其道,但我认为,只有生活、社交、轻娱乐等方向上的应用在移动端有较好的发展。文档协作、大型游戏、开发工具、专业管控软件等应用还是在PC端发展的更好一些,毕竟PC端有更多样的输入输出设备、更广阔的显示和交互的空间,更强的存储和计算能力。

希望桌面软件开发领域的从业者都能获得幸福。

满屏荒唐言,一把辛酸泪,一把辛酸泪,一把辛酸泪...



user avatar   sithferia 网友的相关建议: 
      

因为阿宅是非不分,脑回路奇葩,胸大+倒贴,他们甚至可以拿仇人当老婆。

蕾姆开头是怎么对待486的?直接杀穿!一点商量都不带的那种。

魔女的香气就你蕾姆能闻到?用得着这么赶尽杀绝么?486都快被逼疯了,最后是谁出面化解的?

还不是艾米莉亚!

自己重要的东西都不顾,对陌生的486伸出援手的是谁?这心胸是蕾姆能比的?

好,你说这是白莲花人设,那咱不说她多么善良。

但人总要分个好歹吧,你代入角色,进个异世界被蕾姆虐杀那么多回,得亏是486脑回路奇葩,放别的正常人,谁不想砍死蕾姆,恨都恨不过来,还有心情谈恋爱?

一个手无缚鸡之力的少年,就因为身上带点味道,被拦在半山腰,拿流星锤,围着打!

会功夫了不起啊,欺负普通人良心不会痛吗?

第一次绝望轮回雷姆杀你千百回,我也不知道该夸486大气还是脑子不正常,纵身一跳说雷姆我要拯救你。

论恩,绝境中伸出援手的是你永远可以相信的图书馆老太婆。

明明无甚交集,关键时刻肯为男主站出来和拉姆对线,在这一点上我觉得比艾米莉亚第一集的小恩小惠强得多。

而这个时候艾米莉亚其实是有责任的,把救命恩人带回家,明知城堡上下都对他怀有敌意而不加以保护,搞得486逃都逃不掉。

但艾米莉亚可能是没料到蕾姆如此心狠手辣,最后发话阻止双姆辣手摧花,还给个膝枕,勉强扯平了吧。

阿宅只看见后期蕾姆被攻略变得忠心耿耿,全然忘记了初期杀穿主角的事。

反观艾米莉亚,即便不知道死亡轮回的事,也保留了很大一部分的善意,王选那么大的事也带他玩了,还给名分。

也就486自己飘了才整出一系列窘迫的事,这486自己也承认,能怪emt?不会吧不会吧,不会真的有人在那一段自白中破防了还怪女主怪世界吧?

蕾姆全身心交托这点是很吸引阿宅,可仔细考虑一下,忠于“我”的时候当然爽了,为你赴汤蹈火粉身碎骨在所不惜;忠于别人的时候呢?身为普通人连怎么死的都不知道,完全不肯坐下来谈谈。


0. 阿宅泛指观众;

1. 是非不分的形容没那么言重,类似于p社玩家人均战犯,毕竟拿仇人当老婆怎么了,我也把持不住啊,阿宅不用太敏感;

2. 说我拉踩的建议优先出警捧雷踩艾的回答,况且雷姆暴打486这明明是事实吧..


3. 说喜欢蕾姆和486有什么关系的,哎,喜欢雷姆还真得和男主绑在一起,你喜欢蕾姆的啥心里没数吗?

奉献、忠犬?患难与共?

哪一点和你有关系啊,不代入486能感受到吗?蕾姆是会对486小鸟依人,但会对你多看哪怕一眼吗?




  

相关话题

  如何看待《赛博朋克 2077》1.2 版本补丁跳票? 
  游戏音乐音效的切换有哪些技巧和技术? 
  如何看待广电总局新规定:手游中不得出现英文以及繁体字? 
  为什么有人会把游戏《明日方舟》中罗德岛的所作所为贬的一文不值? 
  《赛博朋克 2077》会出手游吗? 
  你玩《黑暗之魂3》玩到最崩溃的是什么时候? 
  什么是「实时渲染」技术? 
  如何看待部分手游玩家认为氪金抽卡制给玩家带来的体验优于买断制? 
  你为什么卸载《原神》? 
  如何看待华为全面下架腾讯游戏,回应称「因腾讯单方面就合作做出重大变更」?对游戏行业会有哪些影响? 

前一个讨论
为什么单位给年轻人提供了工作,年轻人却不懂得感恩?
下一个讨论
住建部谈青年买不起租不好房:下决心下力气解决问题。对此你有什么想法?





© 2024-11-21 - tinynew.org. All Rights Reserved.
© 2024-11-21 - tinynew.org. 保留所有权利