Electron入门

362 阅读2分钟

1.Electron是什么

image.png 借用官网截图,如上 image.png 中文文档:www.electronjs.org/docs
使用 Web 技术来编写 UI,用 chrome 浏览器内核来运行 使用 NodeJS 来操作文件系统和发起网络请求 使用 NodeJS C++ Addon 去调用操作系统的 native API(juejin.cn/post/684490… Electron中有主进程和渲染进程

1.1 主进程
  1. Electron 运行 package.json 的 main 脚本的进程被称为主进程
  2. 每个应用只有一个主进程
  3. 管理原生 GUI,典型的窗口(BrowserWindow、Tray、Dock、Menu)
  4. 创建渲染进程
  5. 控制应用生命周期(app)
1.2 渲染进程
  1. 展示 Web 页面的进程称为渲染进程
  2. 通过 Node.js、Electron 提供的 API 可以跟系统底层打交道
  3. 一个 Electron 应用可以有多个渲染进程

2.一个简单的Electron项目

image.png 一个简单的项目最少包含三个文件,package.json,main.js,index.html。 其中,package.json里包含项目信息外,还包含入口文件main.js。

image.png main.js中创建了一个窗口,并且load index.html文件。真实项目中,我们很少去直接初始化原始项目。下面介绍Electron如何与Vue结合

3.Electron + Vue

Electron与Vue一起使用目前常用有两种方式

3.1 Electron-vue

利用Electron-vue来初始化项目:

vue init simulatedgreg/electron-vue electron-vue

image.png 初始化完项目目录如截图,目录结构比较清晰,包含模板渲染,主进程代码,render进程代码,能够在electron-vue初始化完的代码上直接进行开发。 不过该代码依赖的electron版本较老。升级困难,可以参考其目录结构以及部分功能实现,不建议项目中直接使用。

3.2 Vue-cli + electron-builder
1.vue create vue-test
2.vue add electron-builder

该做法可以保证electron版本很新,而且开发模式与vue类似,可以在chrome浏览器中调试布局等功能。个人更喜欢这种模式

image.png

生成完代码以后,可以参考Electron-vue的目录结构对代码进行调整,如图 其中,代码中的preload.js可以定义render进程与main进程的通讯接口,如下图:

image.png 详细参考git代码: 对应参考代码:github.com/miwufe/vue-…

4.常用的开发桌面端比较

  1. Native(c++/c#/objective-c) 高性能,原生体验,包体积小,缺点:门槛高,迭代速度慢
  2. QT (基于C++) 跨平台【mac,windows,ios,android/linux,嵌入式】 高性能,媲美原生体验,缺点门槛高,迭代速度一般 : DropBox WPS
  3. Flutter PC端还在发展中,基建少
  4. NW.js 跨平台,迭代快,Web 技术构建,源码加密、支持 Chrome 扩展,不错的社区 缺点:包体积大,性能一般
  5. Electron 跨平台 Web 技术构建 活跃的社区 大型应用案例 缺点:包体积大,性能一般

image.png

随着WebContainers的支持 xie.infoq.cn/article/b7f… 未来前端方向可折腾的东西也越来越多,electron未来可能也会退出舞台。