Markdown Plus Windows 1.4.2 版发布

2015-04-24 21:59:13 +08:00
 tylerlong
免费下载试用 : 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 应用的经验?你们用的是什么技术?有什么感悟?欢迎交流!
5012 次点击
所在节点    分享创造
12 条回复
kuxiazi
2015-04-24 22:40:15 +08:00
hjc4869
2015-04-24 23:32:49 +08:00
@kuxiazi 我没有尝试过拿HTML5开发桌面app,但是比较常用的方法是fallback机制,在有IE11时用WebBrowser的体验会比较好,没有时自动Fallback到Chromium。
另外Win8/8.1/10的商店App都支持原生js应用(不一定要用巨硬给的WinJS框架,IE能跑的一般都能直接拿来写App),也能无缝调用C#/C++,比起考虑传统桌面上的技术,个人更倾向于Modern版。考虑到win8/8.1的Modern应用只能全屏,并不适合桌面用户使用,可以等win10 RTM后再考虑。这样有一个更重要的优点是容易销售,直接放商店标价或者内购就可以了。缺点是win7用户无法使用。
twor2
2015-04-25 01:10:31 +08:00
我之前装的 1.4. 1 不能自动升级到 1.4.2

我用的挺好用的,如果1个月后,还在用,就购买哈
kuxiazi
2015-04-25 06:53:29 +08:00
@hjc4869 嗯 商店里分发销售版本升级管理 都很容易控制 对开发者来说绝对是好事 而且手机 平板电脑 笔记本电脑 台式机 游戏机都能运行 就等win10占有率的提升了
osss
2015-04-25 09:03:40 +08:00
不能自动更新到 1.4.2,工具栏图标比1.4.1模糊
jun4rui
2015-04-25 10:01:13 +08:00
phonegap好像也可以开发桌面程序,就是没这么干过
hx1997
2015-04-25 10:42:31 +08:00
建议下,能不能加个复制成 HTML 代码的功能?虽然可以导出再复制但是有点麻烦。
tylerlong
2015-04-26 09:06:29 +08:00
@hjc4869
@kuxiazi
微软应用商店的应用只能全屏运行,不支持win7,win10普及又遥遥无期,目前来讲不靠谱。前面几点任意拎出来一点就能把它否决了: 不支持win7,win7目前市场占有率最大;只能全屏运行,这个只能在小屏幕手机上用用;win10据说能以非全屏模式运行,但是win10的普及属于八字刚有一撇。
tylerlong
2015-04-26 09:10:15 +08:00
@twor2
@osss
1.4.1 和 1.4.2 技术上是完全不同的,一个基于IE,另一个基于Chromium。 改动比较大,所以自动升级已经废掉了。
做这个技术更新之前,我也纠结了很久。主要是因为流程图,顺序图的mermaid库对IE支持太差了,IE11都无法正常运行。最终我决定迁移到Chromium。 当然,其实我可以弃用mermaid。目前来看很难讲哪种选择更好些。
hjc4869
2015-04-26 09:53:52 +08:00
@tylerlong 所以说等win10普及的差不多了再去做也不迟,win7差不多也该退场了,反正正版用户可以免费升级10。。
dahvlh
2015-07-04 14:54:12 +08:00
为什么 Windows版本要贵一倍呀
dahvlh
2015-07-04 15:25:54 +08:00
有没有计划增强引入 http://ionicons.com/http://fontawesome.io/icons/

这两个网站无法快捷复制图表明,希望mdp若能有选择器页面就好了。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/186127

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX