今天晚上突然间想到的解决方法,实验完成了。
项目背景: 一个网络版本的应用系统,类似企业内部使用,而非受众面广的互联网应用。使用用户基本可控。
问题: 项目中整合了 Bootstrap 3 和 Reveal.js。结果,Reveal.js 不支持 IE 8 …… Bootstrap 3 的显示效果也是一团渣。 好吧,这个不是他们两个的错误。 但是,肯定,我们很难解决浏览器的这个问题,估计将来的用户群中可能还会有 IE 6 存在,强制用户升级这件事情估计不太靠谱。
另外,我知道可以要求用户安装 Chorme 或者 Chrome Frame,但是,有个非常郁闷的问题,这中国的网络环境,着实让人郁闷。反正,我安装 Chrome Frame 就没有顺畅的时候。
灵感: Node-Webkit。其实这个系统一开始的要求是写单机版,无奈真的不懂单机的开发技术栈,就想着用熟悉的技术来做。后来选型:Node-Webkit+AngularJs+Bootstrap 3+WebSQL。结果,后来写的我想吐,就转为写 Rails 了。 Node-Webkit 本身就是一个 Chrome 浏览器,目前来说,相对成熟。
最终,考虑到 IE 8 下效果基本成为废品,心力憔悴啊。就开始考虑有什么方法可以比较轻松的解决这个问题。
后来,想到 Node-Webkit 的 Package.json 应该可以指定URL
而不是单纯的file://
,就尝试了下。
Bang。可以实现,并且打包成 exe 安装包。
整个 Node-Webkit 项目目录就两个文件,Package.json 和图标文件。 使用 Inno Setup 打包成安装包之后,15MB,XP 安装无压力。安装之后的大小 50MB,并且可以占据用户的开始菜单和桌面图标。(要知道很多人从来不记 URL)。建议保留 Node-Webkit 的 Frame,隐藏 Toolbar。 同时,Inno Setup 还可以定制安装界面,更好的做宣传。要知道,Inno Setup 常用来打包游戏,界面可以华丽到爆。
这样,就可以将用户浏览器的升级转变为强制安装一个专用浏览器。想起了有道 hex 博客中有这样一句话
开发效率,如果你有过 web 前端开发经历,现在仅要求你支持最新版的 chrome 浏览器,你觉得如何?睡着了都能笑醒的事,heX 做到了;
顺道吐槽下,本来单机版想用有道的 heX 开发,结果,不仅文档欠缺,后期代码都从 Github 上面消失了……
相关链接: https://github.com/rogerwang/node-webkit https://github.com/rogerwang/node-webkit/wiki
贴一下我的 Package.json
{
"main": "http://10.211.55.2:3000",
"name": "study",
"description": "学习系统客户端",
"version": "0.1.0",
"keywords": [ "node-webkit" ],
"window": {
"title": "学习系统",
"toolbar": false,
"frame": true,
"width": 960,
"height": 600,
"position": "mouse",
"min_width": 780,
"min_height": 480,
"icon": "nsfc.png"
},
"webkit": {
"plugin": true
}
}
真的项目里面仅有两个文件,一个是这个代码,一个就是 nsfc.png
。
如果你仅仅是想解决 Chrome Frame 安装的网络问题,可以从 http://www.google.com/chromeframe/eula.html?msi=true 预先下载离线安装包。