摘要:微信小程序即將推出,還沒推出就火的不行了?;谖⑿胚@個巨大平臺,小程序必然能有巨大成功。如果我們自己想實現一個基于自己的包含類似微信的小程序功能,該如何實現了我們先來看看小程序的技術特點。
微信小程序即將推出,還沒推出就火的不行了。基于微信這個巨大平臺,小程序必然能有巨大成功。不過它并不能完全取代App,該開發App還得開發。如果我們自己想實現一個基于自己的APP包含類似微信的小程序功能,該如何實現了?我們先來看看小程序的技術特點。
小程序的特點跨平臺,微信就像JRE,在不同操作系統上都有實現,所以微信上的小程序就像運行在JRE上的java程序,從而實現跨平臺。另外解決了多平臺多機型的適配問題。
體驗好,webview加載html是最容易的跨平臺方式,但是在手機上的體驗太差。小程序和web開發,以及h5其實沒有關系了,其ui和運行機制完全是原生,所以體驗比公眾號強多了。
無需安裝,只需掃描二維碼。其實還是會有下載了,只不過下載的數據很小,用戶根本察覺不到。比如你開發的小程序有10個頁面,用戶掃描的時候只會下載首頁的幾個文件,可能1k都不到,而且下載完就緩存在本地和內存了。
其實還有一個最大的優點是微信是巨量用戶的粘度最高的應用了,基于這上面的小程序便于推廣,這里我們暫時不談。
我們再來看看缺點:
只能基于微信入口,這是顯然的,目前得到的消息是不可能在桌面上有小程序的入口方式,不知道以后是否支持。
只能使用微信應用帶的功能,不能使用其它第三方比如地圖,支付,統計等功能。微信這些功能都有而且做的也很好,但是多元化更有利用長遠的技術發展。
小程序的能力有限,有限的ui和有限的功能不能應付復雜的交互和業務要求。另外開發者也無法擴展其基礎功能。
DeviceOne能做到既具備以上優點,也能避免以上缺點,對此大家肯定會有所質疑。我們先簡單介紹一下DeviceOne針對以上幾點對應的說明,再看看一個示例。
DeviceOne的特點跨平臺,以js或lua為開發語言,一次編寫,發布到android,ios和windows平臺。而且也是自動適配各種機型。
體驗好,從ui到功能,deviceone完全是原生實現,和html沒有任何關系。所以是原生的體驗效果。
無需安裝,這個我們可以從下面的例子再仔細分析。
不是基于一個固定的框架App,也就是說你可以做一個你自己的微信程序,我們暫且稱之為主程序,可以有自己的圖標,自己的入口,然后加載你自己定義的小程序。包括主程序都是完全可以熱升級,就像更新小程序一樣的方便。
deviceone把app開發完全跨平臺組件化了,把開發人員分二部分,開發app的業務開發人員和開發原生組件的原生開發人員。
5.1 開發app的人員不需要懂android和ios,不需要有android和ios開發環境,只需要js就能開發app 5.2 開發組件的人員不需要理解和了解具體app的業務需求,只需要開發可以復用的跨平臺的ui和功能組件。所以可以集成任何第三方組件,比如可以集成百度地圖,也可以集成高德地圖,可以集成alipay也可以集成微信支付。
deviceone的組件具有擴展功能,目前官方提供了100多個組件,其它開發者提供了30多個組件,基于deviceone平臺,其它原生開發者可以不斷的擴展組件商店。
類似小程序的示例先看運行效果圖
這是deviceone動態加載組件API示例的一個應用。我們稱之為主程序,本身就是用deviceone開發的。列表中列出的do_App, do_Global之類的都是deviceone的組件,每個組件對應一個新的程序,是示范這個組件功能的一個小例子,我們稱之為小程序,但是本質上和主程序沒有區別。
運行機制很簡單:
程序啟動從一個web服務獲取到一個json,里面包含多個組件的信息,包括名稱,文件大小,下載小程序的url,文件md5值
比較本地的舊的md5是否和新的md5是否一樣,如果不一樣,提示有更新,可以通過點擊更新按鈕下載最新的小程序,這里沒有使用二維碼掃描下載小程序的首頁,簡單改造就能做到那樣。
點擊一行,打開新頁面,加載小程序,退出頁面,關閉小程序。
基本代碼如下:
var http = mm("do_Http"); // 顯示等待窗口 var waittingLayer = require("source://modules/waittingLayer/call"); waittingLayer.invoke({ hint : "請稍后" }); var src = "data://" + data.id + ".zip"; http.url = data.url; http.on("result", function(d) { sm("do_Storage").unzip(src, "data://temp/" + data.id, function(_d, e) { var updatesrc = "data://temp/" + data.id + "/source/view"; sm("do_App").update([ updatesrc ], "source://view", function() { sm("do_Page").fire("installed", data.id); // 隱藏等待窗口 var waittingLayer = require("source://modules/waittingLayer/call"); waittingLayer.invoke({ close : true }); }) }) }) http.download(src);
示例的源碼下載已經更多說明參考鏈接
總結感覺是不是很簡單,但是意義很重大,除了小程序更新很容易以外,主程序也很容易更新,原理完全一致。這能用于2個基本用途。
實現程序的熱更新,deviceone的業務所有邏輯和頁面都是文本文件,包括js代碼和ui文件(json描述),天然更新非常容易。
對應大一點的應用或企業,完全可以把業務讓不同的開發團隊和部門獨立完成,然后由一個總個框架App來管理,做到應用開發和管理標準化。而且deviceone有強大的云打包能力,編譯打包也可以標準管理。
最后要說的是deviceone并不是只是一個想法和實踐,它已經是正式運營一年多的產品,已經為互聯網很多個人和公司提供了很多服務,上線了很多面向個人和企業的應用。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/86687.html
摘要:已經得到了廣大開發者的一致認可。移動市場已經飽和年蘋果發布第一個,同年年末安卓發布。從今年手機的出貨量和身邊的觀察很容易得到這樣的結論移動開發這塊蛋糕的高速增長已經結束了。 showImg(https://segmentfault.com/img/bVEUH9?w=1240&h=518); 移動開發市場潮流涌動,好多人都會問iOS開發的前景這樣的問題,今天我就瞎扯一下我眼中的未來,純主...
閱讀 1816·2019-08-30 15:55
閱讀 1007·2019-08-26 11:57
閱讀 509·2019-08-26 11:29
閱讀 3358·2019-08-26 10:49
閱讀 1910·2019-08-23 18:40
閱讀 1749·2019-08-23 16:04
閱讀 3104·2019-08-23 11:01
閱讀 2271·2019-08-23 10:56