这是本文档旧的修订版!
客户端
技术要求
参与启动器开发,可能需要你掌握下面的技术
- nodejs
- vue
- electron
- typescript
- JavaScript (ES6)
- gulp
架构图
简单用文字叙述
客户端分为两个部分,安装器和启动器
下文中启动器的asar包简称为“启动器”
安装器构建出来为二进制程序包,分为windows和macos两种平台
安装器其实是作为了启动器的“运行壳子”,用户在运行安装器之后,安装器会检查在当前用户电脑上是否已经安装过启动器,如果没有,就先检查自己有没有更新,如果有,就自动下载并指导用户替换掉旧版的安装器文件。如果自己为最新,那么就去下载最新版本的启动器,下载完成后,通过重启从而直接运行启动器中的js代码,将程序控制权转交给启动器。
可以看出来,安装器只负责在首次运行的时候检查自身更新和下载最新的启动器,当用户机器上已经安装有启动器的时候(无论安装器自己和当前安装的这个启动器是不是最新的),就直接运行启动器中的代码,将运行权转交。
这么做是为了尽量减少安装器内部的代码逻辑,让大部分代码处于可以通过自动下载asar包并自动执行更新的状态(仅仅几M流量)。在运行权转交给启动器后,检查更新的任务就交给了启动器。
那么如果你需要构建windows包,你需要装有windows的电脑
那么如果你需要构建macos包,你需要装有macos的电脑
本项目采用electron开发,使用electron-packager打包,具体用法请查阅它们的github文档
开发项目
首先,从git上clone下本项目的开发分支
然后,安装所有依赖
npm install
注意,下面的依赖需要全局安装,可能需要管理员权限
npm install electron -g npm install typescript -g npm install babili -g
然后,编译所有的ts文件
tsc
如果你熟悉typescript和他的自动编译开发,那么下面的这段你可以忽略
注意,本项目使用typescript开发,我推荐你使用PHPstorm的自动编译功能将typescript编译为JavaScript,当然你也可以使用其他的工具来实现这一目标,如果你没有使用这种工具,你需要运行下面的命令来编译js
tsc xxx.ts
当然,在你每次修改ts文件之后,你都需要重新编译。
现在,你可以运行项目了
npm start
构建项目
请使用下面的命令
npm run build