这几天在构思项目,研究了一下Electron,记录下来。

说起WEB桌面程序,当前最火的就是Electron了。

Electron的架构用一句话总结,就是一个main.js进程加上一个或数个chrome窗口,每个窗口都包含一个独立的Node.js。

这样的架构,使得这种桌面应用必须是一个(或数个)单页面应用(SPA),而这个SPA还拥有访问本地API的能力(Node.js)。

一方面,程序对前端框架的依赖必然加强,想再JQuery打天下就不那么容易了;另一方面也大大加强了前端框架的能力与版图。

这样它把前端与后端的战火,从服务器蔓延到了桌面。使得JS解决一切的宗旨,又得到了贯彻。

相比较这种新的架构,还有三种早已出现在WEB桌面程序。一般基于嵌入式Chromium框架(CEF)。

一种就是CEF+远程访问。这种程序体验极差,就是个单页面的网站。

值得注意的是Electron+远程访问,是极度危险的,只需劫持JS,则可利用Node.js为所欲为。

另一种就CEF+本地服务。本地服务常见的有.net和java,也有用PHP和Node.js的。

这种组合与前一种组合体验类似,而且体积臃肿,但胜在页面延时较小。

最后一种就是CEF+本地资源+远程API接口。这种是手机WebAPP的常用模式。体验尚可。

和这些架构比较起来,Electron的体验和能力上得到很大的增强,但是有着天生的弱点。

一、安全性,这是脚本语言的弱点

二、投入大,SPA不同于原有的WEB开发,必然导致新的投入和旧资源的浪费。

三、体验,虽然WEB应用的体验在不断增强,但天生就必然限制在chrome窗口中

理想当中的混合应用应该是Electron作为模块嵌入其它编译型语言中,不必追求JS解决一切,更不要追求一切皆是WEB。

强强联合,团队作战的效果远大于语言或平台大一统带来的好处。

比如这个go-astilectron项目,使用GO语言开发主进程代替main.js,弱化JS的依赖是个不错的想法,但还远不成熟。

(完)

Electron与WEB桌面应用程序开发及其它的更多相关文章

  1. 手把手教你WEB套打程序开发

    WEB套打可选方案不多,理想的更少,利用免费控件Lodop+JavaScript实现精确套打,算是较为经典的选择.这种方案其实比较简单,利用一个htm文件就可以实现模板设计过程,几乎是“空手套”式的开 ...

  2. 开发 web 桌面类程序几个必须关注的细节

    HoorayOS 写了差不多快2年了,在我的坚持下也有一部分人打算着手自己也写套类似的程序,我想我可以提供一点经验. 俗话说细节决定成败,开发2年多来,我看过大大小小类似的程序不下20个,各有优点也各 ...

  3. 将现有vue项目基于electron打包成桌面应用程序

    一.前言 项目本来打算采用B/S架构去做的,浏览器网址方式打开还是让用户不方便: 二.使用electron集成桌面应用 本身项目是使用vue-cli开发的,在使用electron之前,需要将本身的项目 ...

  4. QtQuick桌面应用程序开发指南 4)动态管理Note对象_B 5)加强外观 6)许多其他的改进

    4.2.2 Stateless(不管状态)JavaScript库 为了让开发轻松点, 使用一个JavaScript接口来和数据库交互是个好主意, 它在QML中提供了方便的方法; 在QtCreator中 ...

  5. QtQuick桌面应用程序开发指导 3)达到UI而功能_B 4)动态管理Note物_A

    3.2 把Page Item和Marker Item绑定 之前我们实现了PagePanel组件, 使用了三个state来切换Page组件的opacity属性; 这一步我们会使用Marker和Marke ...

  6. electron打包成桌面应用程序的详细介绍

    1.前提条件 a. 安装了node b.安装了electron c.你知道自己写的东西(js,css,html等等)放在那个文件夹(假设这个文件夹命名为 app,下面会用到)中 2.安装electro ...

  7. c#桌面应用程序开发--登陆窗口

    一.显示登陆窗口 应用程序入口点为Main方法,因此在Main方法中创建登陆窗体. 1)创建登陆窗体(登陆窗体UI已提前创建好); 2)显示窗体,以模式对话框的形式显示,并赋值给result; 3)判 ...

  8. electron之Windows下使用 html js css 开发桌面应用程序

    1.atom/electron github: https://github.com/atom/electron 中文文档: https://github.com/atom/electron/tree ...

  9. Web桌面应用框架3:Web桌面应用开发的N种Style

    研究Web桌面应用开发有一段时间了,总结了Web桌面应用开发的一些主流方式. 一.前端Style 这种方式的就是直接实现一个Web程序,再封装一个浏览器展示,相当粗暴和有效.著名的框架就是Electr ...

随机推荐

  1. 三、安装并配置Kubernetes Node节点

    1. 安装并配置Kubernetes Node节点 1.1 安装Kubernetes Node节点所需服务 yum -y install kubernetes   通过yum安装kubernetes服 ...

  2. Linux SSH无密码登录

    Linux服务器常见的登录方式有两种:密码登录.秘钥登录.工作中我们最常使用的是用秘钥登录的方法,因为使用秘钥登录更高效.更安全. 如何实现SSH无密码登录: 原理:无密码ssh登录的主要操作为将本机 ...

  3. [ACM_模拟] UVA 12503 Robot Instructions [指令控制坐标轴上机器人移动 水]

      Robot Instructions  You have a robot standing on the origin of x axis. The robot will be given som ...

  4. Checkpoint--查看各DB上的脏页

    可以使用sys.dm_os_buffer_descriptors来看数据页在buffer pool中的状态,其中is_modified来标示数据页是否为脏页 --------------------- ...

  5. SqlDataReader 结果集 转成 DataTable

    /// <summary> /// SqlDataReader 转成 DataTable /// 源需要是结果集 /// </summary> /// <param na ...

  6. leetcode 两数之和 II - 输入有序数组

    给定一个已按照升序排列 的有序数组,找到两个数使得它们相加之和等于目标数. 函数应该返回这两个下标值 index1 和 index2,其中 index1 必须小于 index2. 说明: 返回的下标值 ...

  7. .Net Core in Docker - 在容器内编译发布并运行

    Docker可以说是现在微服务,DevOps的基础,咱们.Net Core自然也得上Docker..Net Core发布到Docker容器的教程网上也有不少,但是今天还是想来写一写. 你搜.Net c ...

  8. JavaScript学习知识点归纳

    JavaScript学习包括几大方面: 1.基础语法 2.JavaScript核心对象 3.DOM操作 4.BOM操作 5.正则表达式 6.AJAX 7.面向对象编程 以下依次为各版块相关内容==&g ...

  9. flask之信号

    Flask框架中的信号基于blinker,其主要就是让开发者可是在flask请求过程中定制一些用户行为. pip3 install blinker 1. 内置信号 request_started = ...

  10. js有关数组的函数

    map()和filter()函数 js的数组迭代器函数map和filter,可以遍历数组时产生新的数组,和python的map函数很类似1)filter是满足条件的留下,是对原数组的过滤(筛选):2) ...