为什么选择 creta
现实问题
Electron
是当下最为热门的桌面端跨平台开发方案,它利用了 chromium、NodeJS 超强的性能以及跨平台的能力,使我们得以使用前端的方法来快速地开发桌面端应用。React
则是当下十分流行的交互式 UI 库,使用它开发的前端应用数不胜数。而 TypeScript
,你可以把它理解成是带有类型系统的 JavaScript。它不仅能减少开发过程中低级错误的出现频率,也能让你的 IDE 提供更加强大的类型提示,这是多么美妙!
然而,electron 应用的开发配置非常的繁琐,尤其是当我们尝试加入 React 以及 TypeScript 的时候,各种繁杂的配置向让人眼花缭乱。尤其是 electron 与 react 的运行环境存在非常大的差异,当我们试图将它们结合在一起时,还需要编写大量的脚本来辅助编译开发。
而 creta 的出现,正是为了解决这类问题,为开发者提供更快、更精简、也更清晰的开发方式。
为什么不是?
electron-forge
electron-forge 是 electron 官方提供的 electron 应用打包分发多合一的工具,它默认提供了 webpack
以及 webpack-typescript
两种模板。然而可惜的是,官方提供的模板过于简单,且并未对 electron 应用几个主要部分的代码进行隔离。若是要开发大型应用,还需要进行额外的配置工作,没能有效地做到开箱即用。而它所使用的 webpack 又往往被人诟病于其缓慢的速度。 而 creta 则是基于 Vite ,提供了更加迅速的构建能力。同时我们提供了大量的预配置,真正做到了开箱即用,为开发者节省了大量的时间。
electron-vite
electron-vite 自称是下一代 Electron 开发与构建工具,它确实是个很好的选择。事实上,你可以在 creta 中找到很多 electron-vite 的影子,我们有着同样的理念以及相似的设计。要说二者有什么不同的话,我想是在二者的专注点上。相对来说,creta 将重心放在了将 electron 与 React、TypeScript 结合这一点上,我们将专注于 React 社区进行开发,同时提供部分额外功能与特性。
很想吐槽一点
事实上,creta 这个项目是我在大三实习时想到的一个概念。因为实习公司所开发的 electron 应用存在比较多的问题,因此想要根据过去自己开发 electron 应用时总结的一些方案设计一套可以解决大量 electron 开发痛点的工具,为开发者带来极佳的开发体验。 因此,我在 creta 上注入了非常多的心血。然而问题在于,我先前一直在闭门造车,没有深入了解过社区的其它竞品。因为某一个契机,我发现了一个叫做 electron-vite 的项目。正在我诧异于二者近乎相同的理念以及十分相似的代码结构的时候,我突然意识到一件很恐怖的事 —— 我在 creta 上投入的大量时间和精力可能是无用功。 但是我仍很自信,因为在这半年的开发时间里,我的闭门造车为我带来了非常多的学习经历。为了完成这个项目,我主动去学习了非常多的相关知识,因为我想将这个项目做好。虽然最终发现了一个比 creta 完善许多的开源方案,但是我还是十分开心,因为我了解到我的方向是正确的 —— 至少有这样一群前辈,用着和我同样的开发理念,做出了一套与 creta 非常相似的解决方案。至少我的方向是对的,这一点我还是比较满意的。