Web桌面應用框架3:Web桌面應用開發的N種Style

研究Web桌面應用開發有一段時間了,總結了Web桌面應用開發的一些主流方式。javascript

 

1、前端Stylehtml

這種方式的就是直接實現一個Web程序,再封裝一個瀏覽器展現,至關粗暴和有效。著名的框架就是Electron和NW.js了。前端

表明應用程序是atom。java

通常是基於node.js。也有其它語言的。node

各類前端框架的擁躉是這種Style的狂熱粉絲。這裏就不放Demo了。貼段代碼就能夠感覺到它的霸氣側漏。python

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;
  });
});

 

2、炫酷Stylegit

這種方式就是在應用界面上嵌入多個Web頁面,通常都是效果炫酷的Flash或動畫。github

表明應用程序就是QQ了。web

各類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())
    

 

 

3、嵌入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()

 

 

4、組件Style

WEB組件,是一種由來已久的技術。最出名的就是.net平臺WebForm技術,還有Java平臺JSF、Tapestry等。

組件式開發的優勢是簡單直觀,開發迅速。缺點是封裝嚴重,界面呆板。一個字:醜。相對來講,是一種被認爲至關落後和有缺陷的技術。

可是有意思的地方來了,

若是使用Web組件開發Web桌面應用,先忽略中間過程,只看組件…桌面應用,這倒是一個至關正常和悠久的技術體系了。

負負得正,螺旋式上升,組件Style一會兒變得高大上起來。

相對於傳統組件式應用,新的組件style的優點在於跨平臺GUI開發成本大大下降。至關於把瀏覽器當成GUI Render。

並且相比其它Style,安全性,炫酷度,體驗度都大大加強。開發難度也不太大。

但這種Style尚未發現有人公開使用。

不過我發現了一款至關有潛力的Golang框架:github.com/zserge/webview

能夠作一些組件Style的嘗試。。。

 

5、終極Style

終極Style並不是一種開發方式,而是評分標準,每項五顆星,總分共十五顆星。

終極的Web應用框架必須完美解決界面、成本、限制這三個方面的問題。你們能夠本身來評評看。

 

界面 成本 限制

 標準 高級 定製 皮膚 動畫

 學習 流行 開發 繼承 前途

 平臺 體積 流暢 安全 開源

 

 圖例

 滿意 符合 不符

 

源碼:cool style

(完)

相關文章
相關標籤/搜索