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

研究Web桌面应用开发有一段时间了,总结了Web桌面应用开发的一些主流方式。

一、前端Style

这种方式的就是直接实现一个Web程序,再封装一个浏览器展示,相当粗暴和有效。著名的框架就是Electron和NW.js了。

代表应用程序是atom。

一般是基于node.js。也有其它语言的。

各种前端框架的拥趸是这种Style的狂热粉丝。这里就不放Demo了。贴段代码就可以感受到它的霸气侧漏。

app.on(‘ready‘, function() {
  // 创建浏览器窗口。
  mainWindow = new BrowserWindow({width: 800, height: 600});

  // 加载应用的 index.html
  mainWindow.loadURL(‘file://‘ + __dirname + ‘/index.html‘);
// 当 window 被关闭,这个事件会被发出
  mainWindow.on(‘closed‘, function() {
    mainWindow = null;
  });
});

二、炫酷Style

这种方式就是在应用界面上嵌入多个Web页面,一般都是效果炫酷的Flash或动画。

代表应用程序就是QQ了。

各种DirectUI或换肤框架的用户都是这种模式的真爱粉。

所谓尺有所短,寸有所长。把脏活累活甩锅给Web页面真是英明。各种不明觉厉的玩意儿能上的都给上了。

这里我用WxPython和tornado实现了一个小小的代码编辑器的Demo。颜值担当:zTree.js和codemirror.js。

class MyHtmlFrame(wx.Frame): 

    def __init__(self, parent, title):
        wx.Frame.__init__(self, parent, -1, title, size = (800,600))
        self.create_menu()
        self.Bind(wx.EVT_CLOSE, self.OnClose)

        self.statusbar = self.CreateStatusBar(2)
        self.statusbar.SetStatusText(u"status", 0)
        self.statusbar.SetStatusText(u"hello", 1)

        self.splitter = wx.SplitterWindow(self, style=wx.SP_LIVE_UPDATE)
        self.tree = wx.html2.WebView.New(self.splitter)

        self.html = wx.html2.WebView.New(self.splitter)

        self.splitter.SetMinimumPaneSize(200)
        self.splitter.SplitVertically(self.tree, self.html, 300)

        self.tree.LoadURL(‘http://localhost:8888/tree?v=%d‘%time.time())
        self.html.LoadURL(‘http://localhost:8888?v=%d‘%time.time())
    

三、嵌入Style

有人说所有Web项目都是开源的:(。Web的特性决定了,它的安全性(对于程序本身)很差。同时体验上也有一些限制性。

所以,嵌入Style放弃了纯粹的Web程序,采取了宿主语言与JavaScript双向绑定的方式,直接操作Web页面,来换取安全性和体验上的提升。

这种Style带来的开发难度的提升,使得它的狂热爱好者不多,暂时没有发现纯粹的代表应用程序 。大多是框架在做的事情。

下面是我用cef-python实现的一个Demo。颜值担当:GooFlow.js。

def main():
    check_versions()
    sys.excepthook = cef.ExceptHook  # To shutdown all CEF processes on error

    settings = {
         "product_version": "MyProduct/10.00",
         "user_agent": "MyAgent/20.00 MyProduct/10.00",
    }
    cef.Initialize(settings=settings)

    browser = cef.CreateBrowserSync(url="file:///html/flow.html",
                                    window_title="Tutorial")
    set_javascript_bindings(browser)

    cef.MessageLoop()
    cef.Shutdown()

四、组件Style

WEB组件,是一种由来已久的技术。最出名的就是.net平台WebForm技术,还有Java平台JSF、Tapestry等。

组件式开发的优点是简单直观,开发迅速。缺点是封装严重,界面呆板。一个字:丑。相对来说,是一种被认为相当落后和有缺陷的技术。

但是有意思的地方来了,

如果使用Web组件开发Web桌面应用,先忽略中间过程,只看组件…桌面应用,这却是一个相当正常和悠久的技术体系了。

负负得正,螺旋式上升,组件Style一下子变得高大上起来。

相对于传统组件式应用,新的组件style的优势在于跨平台GUI开发成本大大降低。相当于把浏览器当成GUI Render。

而且相比其它Style,安全性,炫酷度,体验度都大大增强。开发难度也不太大。

但这种Style还没有发现有人公开使用。

不过我发现了一款相当有潜力的Golang框架:github.com/zserge/webview

可以做一些组件Style的尝试。。。

五、终极Style

终极Style并非一种开发方式,而是评分标准,每项五颗星,总分共十五颗星。

终极的Web应用框架必须完美解决界面、成本、限制这三个方面的问题。大家可以自己来评评看。

界面 成本 限制

标准 高级 定制 皮肤 动画


学习 流行 开发 继承 前途


平台 体积 流畅 安全 开源

图例

满意 符合 不符

源码:cool style

(完)

时间: 2024-11-13 09:41:42

Web桌面应用框架3:Web桌面应用开发的N种Style的相关文章

Web桌面应用框架2:著名的WEB桌面应用分析

前一篇文章里,分析了包括NW.js和electron这种纯JS框架在内的几种Web桌面应用开发方式,实际上还有一种最古老的方式,那就是嵌入WebView的方式. 嵌入WebView的方式和整个程序都是WEB窗口不同,仅在窗口的部分子窗口使用WebView,和原生UI或DirectUI结合的方式. 这种在C/C++程序里嵌入WebView的方式,由于没有一种公认.通用的框架或方法,基本是最困难和最原始的方式蛮干,或者自研平台,难以公开.但是也有很多效果很棒,很著名的软件.那么下面我们来细数一下这些

[转] 国内外最全面和主流的JS框架与WEB UI库(强烈推荐)

国内外最全面和主流的JS框架与WEB UI库... 当下对于网站前段开发人员来说,很少有人不使用一些JS框架或者WEB UI库,因此这些可以有效提高网站前段开发速度,并且能够统一开发环境,对于不同浏览器的兼容性也不需要程序员操心,有了这些优点,当然大家都会使用这些框架或库. 本文整理了国内外最全面和主流的JS框架与WEB UI库,里面有许多人已经十分熟悉,比如JQUERY.当然也有很多是陌生的,可以通过本文了解他们各自的优缺点,或许你能找到更好用的也说不定! 几乎所有的富 Web 应用都基于一个

国内外最全面和主流的JS框架与WEB UI库

当下对于网站前段开发人员来说,很少有人不使用一些JS框架或者WEB UI库,因此这些可以有效提高网站前段开发速度,并且能够统一开发环境,对于不同浏览器的兼容性也不需要程序员操心,有了这些优点,当然大家都会使用这些框架或库. 本文整理了国内外最全面和主流的JS框架与WEB UI库,里面有许多人已经十分熟悉,比如JQUERY.当然也有很多是陌生的,可以通过本文了解他们各自的优缺点,或许你能找到更好用的也说不定! 几乎所有的富 Web 应用都基于一个或多个 Web UI 库或框架,这些 UI 库与框架

10个优秀的 Web UI库/框架

UI(User Interface)即用户界面,也称人机界面.是指用户和某些系统进行交互方法的集合,实现信息的内部形式与人类可以接受形式之间的转换.本文为WUI用户整理了10个优秀的 Web UI 库/框架,为你的下一个Web设计的高效开发作好准备. 1. IT Mill Toolkit IT Mill Toolkit是一个开源的Web UI 框架,为富 Web 应用程序提供widgets 和工具.无需担忧Web 浏览器.DOM . JavaSWMCMS的兼容性性问题. 2. LivePipe

互联网江湖,桌面客户端框架技术比武大会

By 技术怪咖 欧阳森林 导读:在互联网时代,如何将一个好的idea快速的转化为产品,如何在原有产品中增加新的特性,是产品能够快速的推向市场.快速占领的关键.因此,作为客户端的架构选型,面临哪几方面的需求?资深前端工程师欧阳森林针对其专业领域的经验,有着自己独到的见解. 前言 自从互联网江湖上出现了一部叫做"云"的秘籍,大大小小的门派,纷纷对外宣称自己掌握了"云"的核心,各种"云"应用层出不穷,Service的各种架构在一次次的华山论剑上大放异彩

Web应用框架在WEB工程中的作用

Web应用框架(Web application framework)是一种开发框架,用来支持动态网站.网络应用程序及网络服务的开发.它的出现是为了减轻网页开发时共通性活动的工作负荷并且可提升代码的可再用性.它是经过长期实践被大家认可的,正确,高效的代码. 常用的Web应用框架有MVC,CMS等.而这次我们团队所使用的Web应用框架就是MVC模式,这种模式的优点有很多例如耦合性低.重用性高.部署快.维护容易等详情参考百度百科http://baike.baidu.com/view/5432454.h

MyEclipse使用总结——在MyEclipse中新建Maven框架的web项目[转]

前面的文章我们已经在本机安装好了maven,同时在myeclipse中配置好了maven的插件. 链接如下: Maven安装----在Windows上安装Maven myeclipse安装maven插件 现在我们就开始在myeclipse中新建一个maven框架的web项目 新建项目 填写项目名称,一定记得勾选Add Maven support (java EE如果选取5.0报错,则选6.0) 我们的maven项目就新建好了,相关基本的依赖已经在pom.xml中.项目机构如下: 可能出现的错误及

《ASP.NET Web API 2框架揭秘》第一章 概述【样章】

<ASP.NET Web API 2框架揭秘>(详情请见<新作<ASP.NET Web API 2框架揭秘>正式出版>)以实例演示的方式介绍了很多与ASP.NET Web API相关的最佳实践,同时还提供了一系列实用性的扩展.本书详细讲解了ASP.NET Web API从接收请求到响应回复的整个流程,包括路由.Http Controller的激活.Action方法的选择与执行.参数的绑定与验证.过滤器的执行和安全等相关的机制.除此之外,本书在很多章节还从设计的角度对AS

使用spring等框架的web程序在Tomcat下的启动顺序及思路理清

大牛请绕过,此文仅针对自己小白水平,对web程序的启动流程做个清晰的回顾. 一.使用spring等框架的web程序在Tomcat下的启动流程 1)Tomcat是根据web.xml来启动的.首先到web.xml 2)web.xml中负责启动spring和spring mvc.对应的启动配置文件分别是 启动spring mvc,并进行所有资源路径映射 <servlet> <servlet-name>springMVC</servlet-name> <servlet-c