Write the Code. Change the World.

3月 09

源于在 GitHub 看到的一个用 Electron 做的第三方微信客户端 — electronic-wechat ,然后想玩一下 Electron,所以开了个坑。

ZhihuDaily for Desktop 项目地址:https://github.com/DIYgod/ZhihuDaily-for-Desktop

目标是做一个跨平台(Windows、OS X、Linux)的知乎日报桌面客户端,有展示文章、提示文章更新、收藏文章等功能。

 

关于 Electron 文档的笔记:

中文文档火星很长时间了,更推荐英文文档

Electron FAQ

1. 两个网页间共享数据:使用 remote 模块

2. 为什么不能用 jQuery、RequireJS、Meteor、AngularJS:Electron 在运行环境中引入了 Node.js,所以在 DOM 中有一些额外的变量,比如 module、exports 和 require。这导致 了许多库不能正常运行,可以通过禁用 Node.js 来解决这个问题

Desktop Environment Integration

1. 桌面通知:使用 HTML5 Notification API

2. 最近文档(Windows & OS X)

3. 自定义 Dock(OS X)

在主进程内可用的模块:

app

控制整个应用的生命周期

事件:ready, window-all-closed, quit, activate(OS X)

autoUpdater

说是集成了Squirrel.Mac,然后没看懂怎么用

BrowserWindow

创建浏览器窗口

contentTracing

搜集tracing data,不知道是什么鬼

dialog

打开原生系统对话框

globalShortcut

快捷键

ipcMain

处理从渲染进程(网页)发送的消息

Menu

创建原生的菜单

powerMonitor

监听系统运行状态

powerSaveBlocker

保持系统和屏幕激活状态

protocol

自定义协议

session

session 的运作通过一个 session_id 来进行。session_id 通常是存放在客户端的 cookie 中,比如在 express 中,默认是 connect.sid 这个字段,当请求到来时,服务端检查 cookie 中保存的 session_id 并通过这个 session_id 与服务器端的 session data 关联起来,进行数据的保存和修改。(来自:http://wiki.jikexueyuan.com/project/node-lessons/cookie-session.html)

改对象还可以操作cookie

webContents

BrowserWindow 的属性,操作 web page

Tray

系统通知栏图标

在渲染进程(网页)内可用的模块:

desktopCapturer

没看懂

ipcRenderer

给主进程发送消息

remote

直接操作主进程

webFrame

定制 Web 页面

主进程和渲染进程(网页)内都可用的模块:

clipboard

粘贴板

crashReporter

发送崩溃信息

nativeImage

读取图片信息

screen

屏幕相关信息:屏幕大小鼠标位置等

shell

系统桌面相关函数:打开文件管理器 打开文件 浏览器打开链接 等

 

分析API:

感谢@izzyleung 整理的知乎日报 API

可以看到通过API可以做的事情还是很多的:

启动界面图像、最新消息、消息内容、过往消息、额外信息(消息的评论数 赞数)、长评论短评论、主题日报列表 内容 等。

 

暂时的项目结构:

暂定客户端(Main Process)和 Web 端(Renderer Process)分开, Web 端部署在我的远程服务器上,这样方便更新:(我感觉)多数情况只需要更新服务端而不用用户重新安装客户端。

Web 端保持相对独立,也放在同一个仓库里,可惜由于跨域的问题无法在浏览器里运行(以后也许会做个反代来解决这个问题)。

 

好了,现在知道可以做哪些事情了,下一步是整理下需求顺便用 Sketch 画出设计图来。

 

根据大家的意见修改了几次设计稿,下面是终稿,应该不会再有大的改动了:

开发start:

发现知乎设置了反盗链,图片加载不出来,暂时没想到解决办法,先改成加载本地文件

发表评论

电子邮件地址不会被公开。 必填项已用*标注

活捉 23 条
  1. 话说看到这个我还是觉得有必要提醒一下,现在知乎反盗版意识很高。做这个东西做得好没啥,做不好就基本上是被喷的份= =