免费下载试用 :
http://note.youdao.com/share/?id=9ec4c6efab0d152f83fb7870fe6e4f18&type=note官网:
https://tylingsoft.com/mdp运行环境要求: 不支持 Windows XP,需要 Windows 7 或者更高版本。需要安装 .Net Framework 4.5
如果发现 bug,欢迎向我反馈: service@tylingsoft.com
---
---
下面分享一些技术选型中的感悟(干货),欢迎交流拍砖:
上周发布了 Markdown Plus 的第一个 Windows 版本,由于只在 Win8.1 64 位上面测试过,在 Win7 上面运行问题很多,甚至不能运行。这周从技术层面进行了重写,抛弃了之前依赖于IE的实现方式,转而通过 CefSharp 来实现。
我把这类应用叫做 HTML5 桌面应用。 因为它们运行在桌面,却利用了HTML5的技术。用 HTML5 技术开发 Windows 桌面应用,有几种流行的方式,各有利弊:
1. 通过 NW.js
https://github.com/nwjs/nw.js 这个项目在GitHub上面关注人数很多。Node.js 和 Webkit 相结合的产物。用浏览器技术和 Node.js 技术来开发桌面应用。跨平台。这个我从来没用过。貌似近期有一些项目是借助这个实现的。据说上手很快,只要你会JS,前端后端都是JS。。。
2. Qt + WebView Qt 里面有 WebView 控件,它也是基于 Webkit 的。曾经写过一个简单的项目:
https://github.com/tylerlong/NeoEditor (此项目已废,勿关注)这个一旦写出来也是跨平台的,因为 Qt 跨平台。我个人感觉这个方式最大的问题就是Qt是基于C++的,而我不是一个C++高手。。。
3. C# + CefSharp
https://github.com/cefsharp/CefSharp Windows 平台上最 “Native” 的编程语言可能是 C#。微软对这个语言的支持比较好(它自己的亲儿子)。所以我选了用 C# 开发。 CefSharp 是基于 CEF 的, CEF 又是基于 Chromium 的,所以本质上还是 Webkit。不,也许是Blink:
http://www.chromium.org/blink 。
4. C# + WPF WebBrowser 控件。 Windows 上开发桌面应用最快的方式可能是 WPF。WPF 的WebBrowser 控件本质上就是嵌套了一个IE。所以,IE 的版本很重要。 Win7 默认的是 IE8,注定了对HTML5 的支持很垃圾。所以几乎肯定要求用户升级 IE。 升级到 IE9 会好很多,但是也不一定够,升级到 IE10 以上就要求 Win7 必须先升级到 SP1. 很蛋疼,用户为了用你的软件,又要升级IE,又要打SP1补丁。。。
5. C# + Winform WebBrowser 控件。这个跟上面的是类似的。WPF 技术出现得比 WinForm 晚,很多人认为 WPF 是用来取代 WinForm 的。但是,值得指出的是,WinForm 的 WebBrowser 控件比 WPF 的 WebBrowser 控件要强大得多。如果你需要一些高级的功能,比如监听浏览器打开新窗口的事件等等,WinForm WebBrowser 是更好的选择。从这方面看,WPF 似乎比 WinForm 还退步了。好消息是,WPF 中也可以嵌入使用 WinForm 的控件,二者可以共存。
6. Chrome extension + NPAPI 这个其实不能算桌面应用了,因为它只能运行在 Chrome 内。 我曾经有一个作品:
http://slimtext.org/ 它跟普通的浏览器扩展或者app相比,有一个明显的区别,就是它能任意访问用户的硬盘。Chrome 是不允许 app / extension 访问硬盘的,NPAPI 技术可以绕过这个限制。NPAPI 是基于C++的,可以任意访问操作系统。Chrome 的强大再加上 C++ 的强大,这种开发方式在我看来是很爽的。现在 NPAPI 要逐渐退出历史舞台了,Chrome 很快就会彻底不支持 NPAPI。所以,这种开发方式大家也不必关注了。
7. Chrome App。这个不多解释。据说也可以创建桌面快捷方式,双击打开。这个东西的问题在于,Chrome 对于权限的限制是很严格的。比如 App 几乎不太可能可以直接访问硬盘和其它的硬件。只能在Chrome 提供的沙盒里做很有限的事情。有些App不需要太多权限,这样的App更像是网络App,而不是桌面App。Chrome App 面临这样一个尴尬的问题:一个桌面 App 不能访问桌面资源,那么干嘛不直接用网站呢?
8. 其它. 要说其它,这个真的还挺多的。因为我不熟悉,所以不能多说。你比如大家都很熟悉的Sublime编辑器,它用的技术就不同于我上面所说的任意一个。据说作者用C++自己画的界面控件。还有很多编程语言都有自己的界面库,比如java有swing,python有tk等等。。。欢迎留言补充。但是我不确信它们是否能够结合 HTML5 来做开发。
上面可以分为两大类,跟 Chromium 有关的以及跟 IE 有关的。这也在意料之中,因为想开发HTML5应用,离开浏览器技术还真是玩不转。跟 IE 有关的不能跨平台,好处是最终的程序体积小,第一个版本的M+ 不压缩也仅有不到10M; 跟 Chromium 有关的有一些可以跨平台,缺点是最终的程序体积大,M+ 1.4.2 版本压缩后大约35M。
各位朋友有没有开发 Windows 桌面 HTML5 应用的经验?你们用的是什么技术?有什么感悟?欢迎交流!
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
https://www.v2ex.com/t/186127
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.