Electron与WEB桌面应用程序开发及其它
这几天在构思项目,研究了一下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桌面应用程序开发及其它的更多相关文章
- 手把手教你WEB套打程序开发
WEB套打可选方案不多,理想的更少,利用免费控件Lodop+JavaScript实现精确套打,算是较为经典的选择.这种方案其实比较简单,利用一个htm文件就可以实现模板设计过程,几乎是“空手套”式的开 ...
- 开发 web 桌面类程序几个必须关注的细节
HoorayOS 写了差不多快2年了,在我的坚持下也有一部分人打算着手自己也写套类似的程序,我想我可以提供一点经验. 俗话说细节决定成败,开发2年多来,我看过大大小小类似的程序不下20个,各有优点也各 ...
- 将现有vue项目基于electron打包成桌面应用程序
一.前言 项目本来打算采用B/S架构去做的,浏览器网址方式打开还是让用户不方便: 二.使用electron集成桌面应用 本身项目是使用vue-cli开发的,在使用electron之前,需要将本身的项目 ...
- QtQuick桌面应用程序开发指南 4)动态管理Note对象_B 5)加强外观 6)许多其他的改进
4.2.2 Stateless(不管状态)JavaScript库 为了让开发轻松点, 使用一个JavaScript接口来和数据库交互是个好主意, 它在QML中提供了方便的方法; 在QtCreator中 ...
- QtQuick桌面应用程序开发指导 3)达到UI而功能_B 4)动态管理Note物_A
3.2 把Page Item和Marker Item绑定 之前我们实现了PagePanel组件, 使用了三个state来切换Page组件的opacity属性; 这一步我们会使用Marker和Marke ...
- electron打包成桌面应用程序的详细介绍
1.前提条件 a. 安装了node b.安装了electron c.你知道自己写的东西(js,css,html等等)放在那个文件夹(假设这个文件夹命名为 app,下面会用到)中 2.安装electro ...
- c#桌面应用程序开发--登陆窗口
一.显示登陆窗口 应用程序入口点为Main方法,因此在Main方法中创建登陆窗体. 1)创建登陆窗体(登陆窗体UI已提前创建好); 2)显示窗体,以模式对话框的形式显示,并赋值给result; 3)判 ...
- electron之Windows下使用 html js css 开发桌面应用程序
1.atom/electron github: https://github.com/atom/electron 中文文档: https://github.com/atom/electron/tree ...
- Web桌面应用框架3:Web桌面应用开发的N种Style
研究Web桌面应用开发有一段时间了,总结了Web桌面应用开发的一些主流方式. 一.前端Style 这种方式的就是直接实现一个Web程序,再封装一个浏览器展示,相当粗暴和有效.著名的框架就是Electr ...
随机推荐
- JEECG(三) JEECG minidao如何封装自己的 多表联合查询 分页查询
JEECG确实是一款实实在在的促进生产力的工具好处我想看到此文章的人应该都有所体会了 言归正传 JEECG框架自带的查询确实很省事,但是多表联合查询 分页查询 是我们开发业务系统当中不可避免的这时框架 ...
- s11 day103 luffy项目结算部分+认证+django-redis
1.增加认证用的表 class Account(models.Model): username =models.CharField(,unique=True) email= models.EmailF ...
- 打开SVN server图形化管理界面
来源:http://blog.csdn.net/u013495063/article/details/76796079 1.在ViaualSVN Service的安装目录:C:\Program Fil ...
- [转][SQL]如何实现存储过程中动态加入条件---没想到语句可以这么巧妙
在存储过程过程中,如果要实现Select查询的where子句动态查询,可以用exec ( "select .... where" +@whereStr)这样的方式.但这样的话,感觉 ...
- String 在内存中如何存储的
基本数据类型由于长度固定,且需要空间比较少,所以直接存储在栈中:而对象比较大,所以栈中只存储一个4btye的引用地址(逻辑地址). java中对String对象特殊对待,所以在heap区域分成了两块: ...
- jvm(2)类的初始化(一)
[深入Java虚拟机]之三:类初始化 类初始化是类加载过程的最后一个阶段,到初始化阶段,才真正开始执行类中的Java程序代码. 1,下面说的初始化主要是类变量的初始化,实例变量的初始化触发条件不同(一 ...
- day55 linux 基础以及系统优化
Linux系统基础优化及常用命令 Linux基础系统优化 引言没有,只有一张图. Linux的网络功能相当强悍,一时之间我们无法了解所有的网络命令,在配置服务器基础环境时,先了解下网络参数设定命令 ...
- AFNetworking 报3840
工作中遇到前后台交互,前端解析不了后端返回的数据格式 ,原因在于没有标准统一的请求格式 这是个坑,但是还是有办法修复 错误提示: Error Domain=NSCocoaErrorDomain Cod ...
- iOS--线程的创建
1.获取当前线程 NSThread *current=[NSThread currentThread]; 2.获取主线程的另外一种方式 NSThread *main=[NSThread mainThr ...
- POJ 2379
#include <iostream> #include <algorithm> #define MAXN 1005 using namespace std; struct n ...