English | 简体中文
- TypeScript
- 浏览器 Canvas2d API
- React
- Redux
该项目分为4层:
- Core层:处理电子表格相关的业务,比如存储,查询,公式计算等。其中有一个Driver子层,给很多接口提供实例化的模块(最终实现类似于IoC),供Core层的扩展和平台区分业务的兼容,也给Plugin层向Core注入相关的代码提供通道。
- UI层:处理电子表格绘制相关的业务,包括在电脑屏幕中的绘制(给用户提供所见即所得的电子表格)和打印机中绘制(用于打印),同时绘制一个用户操作层,并将用户事件上报到View层。
- View层:主要采用React技术实现,相关的图形用户接口,包括Ribbon,上下文菜单等等。
- Plugin层:提供一些外围功能,比如函数的扩展,注入驱动以修改Core层以及其他两层的行为。
- 桌面端运行,宿主环境为Electron,用于对接操作系统的文件系统API和服务器存储API
- 浏览器运行,用于对接服务器存储API
- Windows >= 7
- macOS >= 10.11.6
- 能够运行chromium的Linux平台
所有的现代浏览器,不支持IE
Edge | Firefox | Chrome | Safari | Opera |
---|---|---|---|---|
last 2 versions | last 2 versions | last 2 versions | last 2 versions | last 2 versions |
- NodeJS: 用于提供打包环境和electron端运行环境
- Webpack: 用于浏览器端资源的打包
- Electron: 用于将项目打包为桌面应用
依赖模块通过yarn包管理程序管理,在控制台执行
yarn
- 启动webpack调试服务器
npm run serve:electron
- 编译Electron主进程脚本并启动Electron项目
npm run electron
- 启动webpack调试服务器
npm run serve
- 启动浏览器,访问http://localhost:8080/
npm run build
这个项目具有很多的功能和代码量,我只有很短的业余时间去完成这个项目,我非常欢迎你的贡献,你可以通过以下方式和我们一起共建:
- 通过 Issue 报告🐛或进行咨询。
- 提交 Pull Request 以共同完成代码。
实现功能就好,没有代码评审,等完工了再整理相关的注释、代码风格等。
- Pull Request 合并到dev分支
ToDo列表请参见 英文版