注意一下就能发现,到现在为止,所有拥有神之眼的人里
蒙德的基本都是公务员和冒险家,唯二的两个是猫尾酒馆的调酒师迪奥娜和占星术士莫娜,莫娜其实是枫丹人可以论外,所以迪奥娜是唯一的一个没有加入任何官方机构还拥有神之眼的人
这说明了蒙德跟冒险家行会其实一直在关注神之眼拥有者,只要发现要么想办法拉进骑士团要么让他进入冒险家行会,以便管理
——最直接的例子就是爷这种会元素力的人还没进城就“偶遇”安柏,进城以后没多久就跟整个骑士团高层见了个面,不会有人真的认为骑士团那帮人就这么闲吧。这说明了蒙德一直都在密切关注会使用元素力的人
璃月不一样,拥有神之眼的人各行各业都有,有开饭店的,有唱戏的,有唱摇滚的,有开船的,有降妖除魔的,有没事四处乱逛尘世闲游的,还有个做白事的……等等等等
这说明璃月其实并没有真正管理神之眼拥有者,更偏向“放任自流”
稻妻的话,因为之前眼狩令的存在,拥有神之眼的基本都是公务员——一斗是眼狩令结束以后才拿回神之眼的,宵宫干脆交了个假的上去,非公务员的托马差点被夺走神之眼,所以他们对神之眼拥有者的态度还不明确,但稻妻那环境……真不适合人住
综上所述,通过对神之眼拥有者的态度可以得出璃月是真正的包容一切人的城市,如果身为一个穿越者的话,去蒙德很有可能第一时间就被监视,去稻妻……能不能出离岛都是问题
所以我选择去璃月
正好现在比较闲,跟你一个个掰碎了说吧
首先,教会修女在蒙德这种政教合一的城市里隶属于教会管辖,严格来说算是公务员
芭芭拉是琴的亲妹妹(角色故事3),怎么都算不上平民
罗莎莉亚表面上是教会人员,实际上是类似火影忍者暗部那样干脏活的人(角色故事3),对应的是稻妻社奉行家麾下终末番的忍者,干这种活的人,不可能是平民
诺艾尔是骑士团候补,这个哪怕玩过诺艾尔邀约的人都知道,她只是乐于助人,因为这个就说她地位低,整个骑士团的人都要找你聊聊
雷泽背后是北风狼(虽然现在只剩一缕残魂)——当年跟温迪竞争风神的魔神之一,而且他还师从丽莎,表面上看起来很自由,实际上依然跟骑士团有千丝万缕的关系
以上四个其实至少处在蒙德教会势力或者骑士团势力之一的管辖范围内,可以证明本人“蒙德跟冒险家行会其实一直在关注神之眼拥有者并尽量将其管理”的论据
稻妻的万叶是流浪武士笑死我了,人家是落魄贵族好不好(角色故事2),而且万叶在璃月严格来说属于异乡人,就跟莫娜来蒙德公子来璃月一样
宵宫我已经在回答里除外了,而且有证据表明,宵宫其实代表的是日本的“黑道”,这可不是小角色啊
但凡玩过主线都应该知道托马不仅仅是个男仆,而是神里的心腹
早柚是呜呼流唯一传人,更是终末番有名有姓的忍者,有专门的巫女负责,必要的时候神子也会找她办事,本质上跟罗莎莉亚一样属于公务员,个人认为甚至更高一级,毕竟能让神子亲自出动委托任务,早柚的背景和实力深不可测
最后,“基本都是公务员”这句话你是没看见是不是
首先先说结论,在璃月找地方住,别去尤其是稻妻。
无论你是不是普通人,选择住所生活第一要素必定是“安全”,以安全为前提出发的话首先排除稻妻。
说实话的确稻妻老婆众多,但那地着实不算太平:距离暗之外海太近了。作为守护提瓦特大陆的第一道防线,无论有什么风吹草动稻妻永远都是第一战场。远的不说光光五百年前那场战争带给稻妻的伤痛百年都未曾平息,哪怕作为雷神的侍茶人都难逃一劫,作为普通人的话在稻妻生活无疑选择困难难度开局。
而蒙德的话倒是比稻妻太平不少,但就巴托巴斯那样……蒙德看似太平但暗地里已经成为深渊教团的主要目标,毕竟蒙德的魔神任务表面上是对战特瓦林,实际上却是和深渊教团的第一次角力。之后教团无论在璃月还是稻妻都安静了不少,一直到了渊下宫才重新出来搞事情。
显而易见教团对目前三国的渗透蒙德要远远大于璃月稻妻。毕竟蒙德魔神任务的最后作为王子的哥哥在悬崖上远远眺望荧妹在风龙废墟战斗,作为风神的巴巴托斯却没有任何表示,随即哥哥从容离去。之后风神像失窃也进一步证明巴巴托斯对于蒙德的控制力其实远远小过预料。
当然也不排除这个只会“哎嘿”的摸鱼怪是在演。但就目前来说蒙德的主力全部远征,蒙德的战力严重空虚,对于领土内的掌控力也大大下降。
至于璃月……前有夜叉二十四小时高强度锄地,后有申鹤时不时下山清理邪祟,另外还有不少驱魔世家心甘情愿巡逻璃月全境。所以璃月上没有蒙德那种好肉族好睡族大部落丘丘人占据山谷盘踞一方,下没有稻妻海乱鬼盗宝团横窜四方,平安的一匹。
至于璃月没动静时安静安详,一有动静最次都是魔神复苏,无论是千年前坨子哥翻身还是千年后奥赛尔挣脱封印。但只要想想头顶还有一个目前只会遛狗逗鸟的社会废人老大爷,就会得到前所未有的安全感啊。所以你看看无论是坨子哥还是奥赛尔跋渉都只是动静大罢了,实际上对于百姓什么影响都没有。
聊完了安全,再来说说人文一类的东西,毕竟人是群居动物,除了活的安全外最重要的就是活的舒服。
而三国的百姓虽说都有那么一小部分人不怎么当人,但绝大多数都是纯朴善良的,所以这一点我们主要讨论的是作为政府职能的骑士团,七星八门,三奉行有没有干人事。
这一方面的话骑士团先得一分,在法尔加统领下的骑士团怎么样不得而知,但在琴领导下的骑士团表现真的很不错,毕竟顶头上司是个能给市民找猫以至于累病的零零七爱好者,下头的西风骑士再怎么学巴托巴斯摸鱼也要讲究一个度的。
而稻妻的话要分成两部分讲,一是三奉行一是珊瑚宫,毕竟目前来说海祇岛和鸣神岛之间是臣属关系,但鸣神岛并没有直接管辖海祇岛的权利。
如果不考虑其他的话无疑海祇岛是个能定居的大好地方,心海的治理能力据她所说不如自己的军事能力,但看看百姓哪怕对鸣神岛开战导致物资被封锁生活困难对于心海都没有任何怨言就能知道她老凡尔赛。更何况珊瑚宫的巫女小姐姐都好看!
但考虑其他的话海祇岛差不多就垫底了,第一无疑太穷了,连萝卜都快种不出来的土地啊。第二海祇岛下面的那个渊下宫就是一个定时炸弹,上一个填在里面的大蛇连一点水生都没能发出来,也就是黄毛阿姨命硬硬是打通了全程,随便换一个人进去就是十死无生之地。
之后就是三奉行,社奉行不评价的前提下其余两个奉行,干的那都是人事?
勘定奉行的开创者柊弘嗣毫无疑问是个有魄力有野心的人物,一穷二白下在离岛开启了日后稻妻经济中心,也把勘定奉行提升到三奉行的地位。但他的后人却没能遗传他的能力,野心到一点不少。闭关锁国导致离岛日益凋零还能说是影的错,但在离岛纵容手下肆意欺压他国商人毫无疑问就是在自断生路。和愚人众勾结更是妥妥的卖国行为,最后家主得到的惩戒仅仅只是锒铛下狱无疑太轻了。
而天领奉行更是一绝,对外三岛只能堪堪打平海祇岛一岛,对内欺压百姓倒是轻车熟路。魔神任务中手工师傅在狱中被士卒虐待殴打虽说被九条制止,但这也表示这绝非偶然事件。收缴因为眼狩令逃亡的人们家产后发买还能说是因为上头命令,但强制征兵上战场的举动就迷的很,绀田村的二郎出去冒险一部分是因为这孩子是真的二,一方面就是为了逃兵役!而将无辜的,被魔神气息感染的无辜百姓骗上船,在海中把船凿沉淹死后嫁祸给反抗军的举动看一次就感觉上头一次。至于勾结愚人众,大营就在一旁却眼睁睁的看着炉子爆炸不去支援什么的反而是小事了。
而三奉行之间还鼓掌倾轧,从雷神传说任务第一章就能稍见一些。十几年前社奉行神里一家失势的时候几乎被赶出社奉行,千钧一发之际从不参政的神子出言保住了神里一家,连神子都看不下去了这之间的倾轧可见一斑。换到其他国家你能想象刻晴和凝光争权夺利,琴和迪卢克挣着卖国的场景吗?
相比起三奉行的种种上头操作,璃月的七星与千岩军是真的靠谱,往大了说作为七星的凝光能为了璃月决定两次放弃群玉阁,往小了说哪怕轻策庄在怎么偏远,哪怕深处群山里面不过一些老弱病残也没有丝毫放弃的打算。两次海灯节都组织千岩军去轻策庄看望,哪怕零零七爱好者的刻晴都会放下手头工作优先处理轻策庄事务,而就在这种盛日不卜庐白术都不辞辛苦来这里坐诊。你是真的能感觉到哪怕璃月在怎么繁荣也不会忘根的,哪怕父母逝世无依无靠的孤儿都从未缺过一点接济,这种人文关怀也就只有在璃月和她的原型能感的到吧。
综合评价,璃月大于蒙德大于稻妻,要是觉得非稻妻不可的话务必定居鸣神岛,最好搬到镇守之森去,虽说五百藏不靠谱到狸猫可不会伤人,距离神里家近还能考虑近水楼台先得月什么的。其次去清籁岛找寝子,虽说穷是穷了点但安全有保障。
总结一句话在稻妻生活,妖比人靠谱。
为了防止有朝一日哪位少侠真的穿越了,找不到地方安家,那么这里我就把我看中的地方分享一下。
毫无疑问最安全的地方当属去璃月港安家,但考虑璃月港是全提瓦特最繁华的城市,估计那里的房价比起来上海深圳只高不低,没荧妹那么大面子让仙人赠送尘歌壶的话那么在野外安家就是必不可少的选择了。
首先排除轻策庄和明蕴镇,前者留守儿童和老人太多完全没有发展出路,后者已经废弃并且挨着雪山要是雪崩了都没地方跑。更何况两者都在荒郊野岭出行不便。
其次南天门绝云间也要排除,理由同上,更何况荒郊野岭遇到个丘丘人你大概率直接无了,只能祈祷申鹤今天有没有下山。
那么我推荐的地方相比起来优势就很大了。
首先最重要的一点,安全!安全!绝对他么的安全!!!
距离望舒客栈只有一河之隔,早知道望舒客栈房顶上可是有一位抬头不见低头见,全璃月全年高强度锄地的矮个子仙人,有他在除非有一位魔神在他打哈欠的时候偷偷弄死你外完全没必要为了安全担心。
至于仙人外出的话也没必要担心,先不说无论荻花洲还是归离原都有千岩军驻扎,单单算望舒客栈的掌柜也是有功夫在身的,据“荻花有客栈”任务简单分析一下以往归离原附近有什么魔物都是掌柜的负责清理,只是后来发现雇佣一个黄毛的二傻子更划算才没自己出手。毕竟是七星安插在这里的特务嘛。
安全有保障我们就要看看宜居性了,首先水源不用担心,并且沿着河往北走还能发现村庄的旧址,年幼的北斗曾经在那个村庄生活过一段时间,那里还有一个钓鱼点,那么无论种植还是养殖捕捞都是可以的。
而过了桥就是商道,联通蒙德与璃月,唯一的陆地上的商道,老爷子做饭要用清泉镇当天猎杀的新鲜兽肉,可想而知这条商道是畅通的且有固定的商队,购买日常生活用品不成问题。
其次进可攻退可守:往东过了河就是归离原,往北跨越荻花洲和石门就是蒙德,往南一片坦途璃月港近在咫尺。而往西就是去绝云间的大道,如果有仙缘去留云借风真君那刷刷存在感也不难。
完美。
璃月港口适合有野心的人打(nei)拼(juan),但一般人显然卷不过大商会;轻策庄一带风景如画,适合养老。
蒙德的话,氛围轻松自由,城市居民大多热情好客,作为精神领袖的教会没有什么陈腐的规矩束缚,西风骑士团比起暴力机构更像保姆;因此适合在内卷狂潮中感到疲惫、又不愿到乡下去养老的现代人居住。个人作为摸鱼怪确实也更喜欢蒙德。
稻妻……没啥好说的,适合革命者和野心家去干出一番事业。
共产主义政党长期治理的喀拉拉邦在印度处于人类发展指数的前茅,这就是共产主义对印度的影响。
另外,南亚人是非常非常喜欢取经名的。这也是一个地域特色了。
很少有人不基于框架直接写GUI界面啦,我这个回答就从GUI框架反过来推什么语言做GUI合适。(只聊桌面端GUI编程框架)
几乎是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是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是1992年英国的一个大学教授开创的跨平台GUI软件,也非常成熟稳定,商业授权非常友好。它没有自绘引擎,而是对不同平台下的界面API做了整合和封装,这样开发者在Windows下开发的软件看起来就是Windows窗口风格、Linux开发的软件看起来就是Linux窗口风格,这对于某些软件来说,正是他们想要的,但要想搞一些花哨的特效就没那么容易了。它同样也提供了大量的系统相关的API供开发者使用。
它是C++开发的,所以对C++开发者非常友好,除此之外它还支持静态连接,也就是说开发个应用不用分发给用户一大堆dll,当然Qt也支持静态连接,但是你得自己编译Qt的源码(不是很方便),而且Qt的授权规则也不允许普通开发者这么做。
它会有些小问题,比如我之前提的:wxEVT_NOTIFICATION_MESSAGE_DISMISSED event emit twice,但总体来说还是非常稳的。除了开发的界面比较死板外,没啥大的问题。目前使用这个框架开发软件的人越来越少了。
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是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是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,但复杂度还是有点高的,使用的时候要认真细心。
这是微软的跨平台GUI框架,不仅仅支持桌面端,还支持移动端,但官方并不支持Linux的桌面端(黑人问号,感觉与微软近些年向开放、开源的大方针相悖),这个框架新的狠,至今还没发布稳定版。目前还没什么人用。而且不知道将来会不会被微软放弃。
它是.NET平台下的GUI框架,有自绘引擎,对C#开发者很友好,界面依然是用XAML描述的,可能很多人一听到XAML就直接弃坑了。XAML表现力确实弱一些,我觉得WPF没火起来跟XAML有直接关系。
使用这个框架开发桌面应用得封一个.NET框架给用户,当然有了.NET框架应用程序访问一般的系统级API也就不成问题了。
这是JetBrains搞的跨平台GUI框架,也非常新,前段时间刚刚推出1.0.0版本,但这个版本还不是很稳,至少比Flutter Desktop的第一个稳定版要差很多。同样也几乎没什么人用。
它的自绘引擎用的是Google的skia,这个自绘引擎稳的很,Chrome和Flutter都是用的它,所以排版、绘制、渲染之类的工作不太会出问题。比Java生态圈里的Swing和JavaFx要好很多。
JetBrains的东西当然对Kotlin开发者友好啦,Java生态下的很多东西你都能用,访问系统级API也没啥大问题,同样也得考虑封一个JRE给用户。
这是谷歌的跨平台开发框架,开源、免费、文档齐全、投入力度大且持久,同样也新的很,Windows版本刚刚发稳定版,Mac版本还没稳定。
如果你完全没搞过移动端的flutter,想用这个框架开发桌面应用,那么意味着你要学的东西还挺多的。好在dart和flutter入门都不是很难,学习曲线比较平缓。
由于flutter在移动端积累了很多年,所以界面上的一些东西在desktop端都比较稳(skia自绘引擎),与操作系统相关的东西还不成熟,生态也不太好,比如你想订制一下窗口的标题栏,想访问一下注册表这类工作可能得自己想办法。不过它有类似FFI的支持,跟C/C++语言打交道很方便。
开发者直接使用Dart语言描述界面,这会导致众多大括号嵌套在一起的问题,可能很多开发者不习惯。
这是微软Edge浏览器团队推出的跨平台GUI引擎,是闭源的,目前只支持Windows,对C#和C++开发者友好,如果使用C#开发,就得考虑把.NET运行时分发给用户,如果使用C++开发,就得自己处理系统级API的操作,webview2本身是不对系统级API做封装的。
这个框架推出也没多久,很多API也还不稳定,更值得担忧的是这个团队,他们前不久刚刚放弃了自己的浏览器核心转而使用Chromium浏览器核心,不知道他们会不会放弃webview2这个框架。
它的优势是可以复用系统当中已存在的webview2二进制资源,也就是说它虽然封了一个Chromium浏览器核心,但如果你可以确定客户电脑已经存在了基于webview2开发的应用,你的安装包体积可以足够小。
它也是多进程架构,甚至比Electron还要多一个进程(为了复用二进制资源),资源占用比较多。
这个库使用操作系统的浏览器引擎来达到减小安装包体积的问题,Mac上使用Cocoa/WebKit,Linux上使用gtk-webkit2,Windows 10上使用Edge(也就是上一个小节里提到的webview2),它应该是不支持Win7的。开发者要考虑前端代码浏览器兼容的问题。
开源且免费(MIT)有go、Rust、Python等语言的绑定,不过官方支持的是go语言,C和C++,操作浏览器的API非常少,不支持自定义scheme,更别提系统级API了。
采用的技术方案与webview类似,所以安装包也足够小,非常新,还没发布稳定版,开源免费。webview框架碰到的问题TAURI都有,
使用Rust开发,将来会支持Deno,作者说将来会直接使用webview的技术来支持多平台,
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的作者曾经在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端有更多样的输入输出设备、更广阔的显示和交互的空间,更强的存储和计算能力。
希望桌面软件开发领域的从业者都能获得幸福。
满屏荒唐言,一把辛酸泪,一把辛酸泪,一把辛酸泪...