新词典软件UI调研

简单介绍下:

对词典软件来说最重要的就是浏览器内核,以MDX为例,MDX的词条正文大多数都是以网页HTML的形式保存,所以需要软件内置浏览器来显示它们。常用的浏览器内核有两种,WebKit和Chromium,依托这两种浏览器内核,产生了如下三种桌面应用程序的创建方式。

  1. QT+WebKit,GoldenDict就是使用这种方式,用WebKit内核的优点是单进程CPU内存占用都很低,内存占用一般在40~80M之间,QT封装的也很好,上手相对容易,主要缺点就是浏览器版本老,有HTML不兼容,加载的词条多了不如Chrome内核的平滑,也不支持高分屏。

  2. Electron, NW.js + Chromium,最新一代桌面应用程序创建方式,在有道词典早期版本,阿里钉钉以及迅雷最新版中有使用,优点是非常容易入门,使用HTML前端网页制作UI界面,效果非常华丽,也没有兼容性问题,缺点是体积大多进程CPU内存占用非常高,打开就要80M,加载词条正文后在120M左右,如果需要小窗查词,屏幕取词,类似GoldenDict的ctrl+c+c打开的小窗,内存占用应该在240M以上。网易云音乐有开源版本用此技术制作,可以在release那里直接下载测试,[链接]

  3. Duilib + CEF,很多国产软件使用,CEF和Chromium同源,表现也就和Electron类似,缺点是社区混乱,分支多,上手困难,什么都要从头写,优点是控制度高,打包体积小,可以自己选用浏览器内核的版本,测试使用CEF 49.2623 支持xp系统的最后版本,空白页57M,加载词条后在80M左右,开小窗查词应该在160M以内。社区有基于此制作的有道词典开源版本,但我没跑起来,[链接]

你倾向于哪种技术制作的词典软件?

  • QT+WebKit
  • Electron
  • Duilib + CEF

0 投票者

屏幕取词是否一定要有?

  • 必要
  • 不用

0 投票者

内存占用对你影响大吗?能接受的内存占用是?

  • 50~100M
  • 100~200M
  • 150~300M

0 投票者

4 Likes

mt兄看来还是调研的不错哈,但WebKit和Chromium并不是一个层级的东西。和WebKit对应的应该是Blink。就我个人偏好来讲,两极化比夹生饭好一点。也就是,要么用Electron或者NW.js,要么用CEF。当然要是有实力自己集成Chromium其实更强大。

1 Like

高分屏的问题可以试试下面的方法


Add QT_AUTO_SCREEN_SCALE_FACTOR=1 or QT_SCALE_FACTOR=2 to the environment.

最近想买 Surface Go 有查过一下,不知有没有用?

1 Like

已经用Electron做到一半了,用React+Mobx写的,发现内存控制不住,内存积累快释放慢,担心大家接受不了,就来调研下,现在看投票感觉还行,准备用TypeScript重写下,双窗口内存控制在200M以内。

网易云音乐那个Electron开源版本,Vue框架,打开就300M,切换几次页面就450M,内存回收的很慢,这还是单窗口的,用着没信心。
控制的比较好的是Github Desktop,内存占用100~150M,用TypeScript写的,表现很优异,内存回收很快。

集成Chromium不是一个人能完成的,CEF倒是可以和QT或者Duilib搭配使用。CEF和Duilib表现很好,写了个小DEMO,双窗口内存占用在150M左右。

不好用,qt5现在的高分屏支持还是可以的,但是qtwebkit不行。设置这个以后菜单和浏览器界面跟着一起放大,效果不好

1 Like

对QtWebkit没用。现在的GoldenDict在高分屏下,需要配合放大镜使用,但放大之后,页面就很卡,滚屏困难。

测试了下双窗口查词,Electron的渲染进程是复用的,内存占用应该可以控制在150M以内。