# wke
**Repository Path**: ownery/wke
## Basic Information
- **Project Name**: wke
- **Description**: 基于Webkit精简的纯C接口的浏览器内核,可用于桌面UI、浏览器。
- **Primary Language**: C++
- **License**: Not specified
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 6
- **Created**: 2022-10-09
- **Last Updated**: 2022-10-09
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
wke 项目文档
===========================
目录
---------
- [项目介绍](#introduce)
- [编译指南](#build)
- [无脑版:不能保持源码同步](#build-flathead-way)
- [深究版:可保持源码同步](#build-hotshot-way)
- [FAQ](#FAQ)
- [FAQ1. wke 对 HTML5 的支持如何?](#FAQ1)
- [FAQ2. 为什么编译出错?](#FAQ2)
- [FAQ3. 为什么解决方案中 wke 项目没有设置为依赖 WebCore 项目?](#FAQ3)
- [贡献者名单](#contributors)
- [BlzFans](#blzfans)
- [Vincent.Lin√](#vincent-lin)
- [(__少](#shao)
- [光 光](#guang-guang)
- [蚂蚁](#ma-yi)
- [SOUI作者](#flyhigh)
- [其它贡献者](#others)
项目介绍
---------
wke 是一个基于 WebKit 精简的浏览器引擎,原项目地址 。原作者已停止更新,本人出于技术研究的目的 fork 过来,业余时间继续维护,既学习 WebKit 的相关技术,也实验将 web 技术用于桌面UI。如果你对本项目感兴趣,欢迎请关注并随时提出你的宝贵意见。如果你也是一名 WebKit 的研究者、开发者,也欢迎你通过本项目来分享你宝贵的经验。
若想快速浏览一下本项目完整的修改历史,可以浏览[提交日志](https://github.com/cexer/wke/commits/master)。也可以查看[修改记录](https://github.com/cexer/wke/blob/master/Document/history.md)了解最近的修改。若有任何与项目相关的问题或建议,欢迎加入QQ群 **178168957** [WebUI:wke/cef/mshtml/miniblink](http://shang.qq.com/wpa/qunwpa?idkey=ebe64628d19349ed41e2e77b6dfdb4bdd11fc1cb46f6721f24de1a674bd3bf9b) 反馈,内有大神。
编译指南
---------
**无脑版:不能保持源码同步**
此方法是最简单、最顺利的编译办法,缺点是下载的 ZIP 源码包无仓库信息,无法保持和 git 仓库同步。
1. 从 [本项目(https://www.github.com/cexer/wke)](https://www.github.com/cexer/wke) 下载源码的 **ZIP 包**并解压项目目录。
2. 根据需要选择执行项目根目录的 vs2008.bat、vs2010.bat、vs2013.bat,该批处理会设置好依赖环境并用 VS 打开解决方案。
3. 在解决方案中,首先编译 WebCore 项目,成功之后再编译 wkeBrowser、wkexe 项目。
严格按照上述步骤编译可避免99%的的踩坑翻车。如果想了解为什么必须这样编译,请见 [FAQ2. 为什么编译出错](#FAQ2)。
**深究版:可保持源码同步**
若你是一个凡事穷根究底的人,或者想保持与 git 仓库同步,建议采集此方法。
1. 仔细阅读[GitHub 第一坑:换行符自动转换](http://blog.jobbole.com/46200/),然后按其说明设置好 git 客户端。
2. 根据需要选择执行项目根目录的 vs2008.bat、vs2010.bat、vs2013.bat,该批处理会设置好依赖环境并用 VS 打开解决方案。
3. 在解决方案中,首先编译 WebCore 项目,成功之后再编译 wkeBrowser、wkexe 项目。
无脑版下载 zip 包的主要目的是规避 git 客户端在 clone 时的一个巨坑:[GitHub 第一坑:换行符自动转换](http://blog.jobbole.com/46200/),只要按照链接中的方法,设置好 git 客户端,就可以正常 clone、pull、push 仓库代码了。
FAQ
---------
### FAQ1. wke 对 HTML5 的支持如何?
wke 是由 WebKit 2011 年的版本精简而来,之后一直没有同步 WebKit 更新过,因此 wke 对 HTML5 的支持能力停留在 2011 年,一直未改进。一个更加直观的、然而不是很准确的概念就是 wke 对 HTML5 的支持大约是在 IE9 之上,在 IE10 之下,在 上跑分为 222 分,远在 CEF 的 530 分之下。因此若是对 HTML5 要求较高的环境,不建议使用 wke,请考虑 CEF 或者正在开发当中的 miniblink 内核。
### FAQ2. 为什么编译出错?
99%的可能性是由于以下两个原因:
**1. 脑残的 git 客户端 autocrlf 功能的问题:**
JavaScriptCore、WebCore 项目编译时需要利用 perl、python 等脚本来从模板生成源码文件、从IDL生成接口文件等,为方便起见,wke 项目自带一个精简的 cygwin 项目,且已经预置了 perl、python 等软件,而 cygwin 版本的 perl、python 和 linux 版本的一样,只支持读取包含 linux 风格换行符(`\n`)的文件,这没有什么问题,因为 wke 项目中所有的模板文件、IDL文件都是 linux 格式的换行符。**然而!!!**,自作聪明的 git 客户端默认会开启一个脑残的功能 `autocrlf`,这个功能开启之后,使用 git 客户端拉取代码的时候,会将所有源码文件、模板文件、IDL文件的换行符强行修改为当前系统的换行符(在 windows 上即 `\r\n`),导致 perl、python 等软件无法正常读取文件,无法生成那一堆源码文件、接口文件…………,而下载 ZIP 包可以绕过 git 客户端的脑残功能。
如果想详细了解这个问题,请查看链接 [GitHub 第一坑:换行符自动转换](http://blog.jobbole.com/46200/)。
**2. 智障的 VS2010 - VS2013 找不到自己 nmake 问题:**
如上所述 JavaScriptCore、WebCore 项目编译时需要利用 perl、python 等脚本来生成一堆文件,而 perl、python 是VS通过自家的 nmake 调起来的。然而患了肥胖症兼老年痴呆的 VS2010 - VS2013,默认找不到 自家的 nmake,必须在启动VS之前调用一下 vsvars32.bat 设置环境变量。项目根目录 vs2010.bat、vs2013.bat 等文件的作用其实就是这个。VS2008 倒是没有这个问题,但为统一起见,也在根目录下放了一个 vs2008.bat。
执行以上操作若仍未解决问题,请加QQ群 **178168957** [WebUI:wke/cef/mshtml/miniblink](http://shang.qq.com/wpa/qunwpa?idkey=ebe64628d19349ed41e2e77b6dfdb4bdd11fc1cb46f6721f24de1a674bd3bf9b) 反馈。
### FAQ3. 为什么解决方案中 wke 项目没有设置为依赖 WebCore 项目?
如 [FAQ2. 为什么编译出错](#FAQ2) 中的原因所描述的,因 JavaScriptCore、WebCore 等项目编译前会有很多的脚本调用,不论项目是否已经编译成功过,这些调用每次都会执行一遍,很费时间,而实际上 WebCore、JavaScriptCore 这两个项目在开发当中,是极少会有修改真正需要重新编译的。如果把 wke 设置为依赖 WebCore,那么每次 wke 编译都会导致 WebCore、JavaScriptCore 项目进行脚本调用,花费不必要的时间,因此折衷处理:设置 wke 不依赖 WebCore,在项目初始编译或者 WebCore 真正有修改时时,手动编译一次 WebCore,然后绝大多时间编译都不用花费不必要的脚本调用时间了。
贡献者名单
---------
### BlzFans
`BlzFans` 此位大侠功力深不可测然而为人极低调,将 wke 项目甩给开源界之后,从容离开去实现自己更高的人生价值了,挥一挥衣袖,不带走一声膜拜。感谢他的努力,如今我们除了在他开凿的道路上逶迤前进,也希望有一天他能够再次回到 WebUI 的队伍中来,带我们直接飞往 WebUI 技术的巅峰。
### Vincent.Lin√
`Vincent.Lin√` 是促成建立QQ群、建立 github 项目的原老。wke 之前一直没有QQ群和持续维护的开源项目,直到某次偶遇 `Vincent.Lin√` 并和他一起解决了几个 wke 的BUG,才萌生了要建立一个QQ群,新建个开源项目的想法,从此BUG修复、新增功能之类的有了一个分享和积累的仓库,wke 的用户有一个交流的场所。
### (__少
`(__少` 也是群的原老之一,为 wke 贡献了不少代码,比如增加了 cookie 操作的接口、增加了 POST 方式加载页面的接口等。作为群管理员(老鸨)之一,任劳任怨,XX如一日每日参与讨论技术问题、闲聊扯谈、为新人答疑解惑。
### 光 光
`光 光` 此君也是来无影去无踪的大神。wke 之前只有 vs2005、vs2008 的VS项目文件,经常有人想用 vs2010、vs2013 等版本来编译而不知法,苦得哭爹喊娘,`光 光` 这时候出来为 wke 贡献了 vs2010、vs2013 的工程。然后他也神秘消失了。然而也许 vs2017、vs2018 上市,我们为编译问题焦头烂额的时候,他又会踏着七色云彩出来解救众生。
### 蚂蚁
`蚂蚁` 老师是如今 wke 群的中坚技术力量,久经杀场,经验丰富,上能架构集群,下能逆向驱动。`蚂蚁` 老师不仅解决了困扰我们已久的 wke 绘制慢的问题(比如某些情况下会导致 codemirror 滚动条卡顿),并且实现了人民呼声很高的 websocket 功能(现在 wke 也能玩蝌蚪聊天了),功莫大焉。
### SOUI作者
`SOUI` 是新一代 DirectUI 界面库,其作者在我的记忆中是最早将 wke 从开源网站中拿到实际的 SOUI 工程中。他为 wke 增强了不少功能、修复了一些 BUG,比如绘制回调、URL改变回调等。也是从他的 SOUI 群里 wke 被越来越多的人知道。我们的这个项目仓库里,就有他最早的贡献,有兴趣的可以加他的 SOUI QQ群 **229313785**。
### 其它贡献者
其实还有很多其它人,也为 wke 项目做过贡献过,不管是代码上的还是别的方法的的贡献,在此一并感谢。
是每个贡献者的一份力量一起,使 wke 越来越强大!