使用DeviceOne实现微信小程序功能
微信小程序即將推出,還沒推出就火的不行了。基于微信這個巨大平臺,小程序必然能有巨大成功。不過它并不能完全取代App,該開發(fā)App還得開發(fā)。如果我們自己想實(shí)現(xiàn)一個基于自己的APP包含類似微信的小程序功能,該如何實(shí)現(xiàn)了?我們先來看看小程序的技術(shù)特點(diǎn)。
## 小程序的特點(diǎn)
1. 跨平臺,微信就像JRE,在不同操作系統(tǒng)上都有實(shí)現(xiàn),所以微信上的小程序就像運(yùn)行在JRE上的java程序,從而實(shí)現(xiàn)跨平臺。另外解決了多平臺多機(jī)型的適配問題。
2. 體驗(yàn)好,webview加載html是最容易的跨平臺方式,但是在手機(jī)上的體驗(yàn)太差。小程序和web開發(fā),以及h5其實(shí)沒有關(guān)系了,其ui和運(yùn)行機(jī)制完全是原生,所以體驗(yàn)比公眾號強(qiáng)多了。
3. 無需安裝,只需掃描二維碼。其實(shí)還是會有下載了,只不過下載的數(shù)據(jù)很小,用戶根本察覺不到。比如你開發(fā)的小程序有10個頁面,用戶掃描的時候只會下載首頁的幾個文件,可能1k都不到,而且下載完就緩存在本地和內(nèi)存了。
其實(shí)還有一個最大的優(yōu)點(diǎn)是微信是巨量用戶的粘度最高的應(yīng)用了,基于這上面的小程序便于推廣,這里我們暫時不談。
我們再來看看缺點(diǎn):
1. 只能基于微信入口,這是顯然的,目前得到的消息是不可能在桌面上有小程序的入口方式,不知道以后是否支持。
2. 只能使用微信應(yīng)用帶的功能,不能使用其它第三方比如地圖,支付,統(tǒng)計(jì)等功能。微信這些功能都有而且做的也很好,但是多元化更有利用長遠(yuǎn)的技術(shù)發(fā)展。
3. 小程序的能力有限,有限的ui和有限的功能不能應(yīng)付復(fù)雜的交互和業(yè)務(wù)要求。另外開發(fā)者也無法擴(kuò)展其基礎(chǔ)功能。
DeviceOne能做到既具備以上優(yōu)點(diǎn),也能避免以上缺點(diǎn),對此大家肯定會有所質(zhì)疑。我們先簡單介紹一下DeviceOne針對以上幾點(diǎn)對應(yīng)的說明,再看看一個示例。
## DeviceOne的特點(diǎn)
1. 跨平臺,以js或lua為開發(fā)語言,一次編寫,發(fā)布到android,ios和windows平臺。而且也是自動適配各種機(jī)型。
2. 體驗(yàn)好,從ui到功能,deviceone完全是原生實(shí)現(xiàn),和html沒有任何關(guān)系。所以是原生的體驗(yàn)效果。
3. 無需安裝,這個我們可以從下面的例子再仔細(xì)分析。
4. 不是基于一個固定的框架App,也就是說你可以做一個你自己的微信程序,我們暫且稱之為主程序,可以有自己的圖標(biāo),自己的入口,然后加載你自己定義的小程序。包括主程序都是完全可以熱升級,就像更新小程序一樣的方便。
5. deviceone把a(bǔ)pp開發(fā)完全跨平臺組件化了,把開發(fā)人員分二部分,開發(fā)app的業(yè)務(wù)開發(fā)人員和開發(fā)原生組件的原生開發(fā)人員。
5.1 開發(fā)app的人員不需要懂a(chǎn)ndroid和ios,不需要有android和ios開發(fā)環(huán)境,只需要js就能開發(fā)app
5.2 開發(fā)組件的人員不需要理解和了解具體app的業(yè)務(wù)需求,只需要開發(fā)可以復(fù)用的跨平臺的ui和功能組件。所以可以集成任何第三方組件,比如可以集成百度地圖,也可以集成高德地圖,可以集成alipay也可以集成微信支付。
6. deviceone的組件具有擴(kuò)展功能,目前官方提供了100多個組件,其它開發(fā)者提供了30多個組件,基于deviceone平臺,其它原生開發(fā)者可以不斷的擴(kuò)展組件商店。
## 類似小程序的示例
先看運(yùn)行效果圖
這是deviceone動態(tài)加載組件API示例的一個應(yīng)用。我們稱之為主程序,本身就是用deviceone開發(fā)的。列表中列出的do_App, do_Global之類的都是deviceone的組件,每個組件對應(yīng)一個新的程序,是示范這個組件功能的一個小例子,我們稱之為小程序,但是本質(zhì)上和主程序沒有區(qū)別。
運(yùn)行機(jī)制很簡單:
1. 程序啟動從一個web服務(wù)獲取到一個json,里面包含多個組件的信息,包括名稱,文件大小,下載小程序的url,文件md5值
2. 比較本地的舊的md5是否和新的md5是否一樣,如果不一樣,提示有更新,可以通過點(diǎn)擊更新按鈕下載最新的小程序,這里沒有使用二維碼掃描下載小程序的首頁,簡單改造就能做到那樣。
3. 點(diǎn)擊一行,打開新頁面,加載小程序,退出頁面,關(guān)閉小程序。
基本代碼如下:
?
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);
示例的源碼下載已經(jīng)更多說明參考鏈接
## 總結(jié)
感覺是不是很簡單,但是意義很重大,除了小程序更新很容易以外,主程序也很容易更新,原理完全一致。這能用于2個基本用途。
1. 實(shí)現(xiàn)程序的熱更新,deviceone的業(yè)務(wù)所有邏輯和頁面都是文本文件,包括js代碼和ui文件(json描述),天然更新非常容易。
2. 對應(yīng)大一點(diǎn)的應(yīng)用或企業(yè),完全可以把業(yè)務(wù)讓不同的開發(fā)團(tuán)隊(duì)和部門獨(dú)立完成,然后由一個總個框架App來管理,做到應(yīng)用開發(fā)和管理標(biāo)準(zhǔn)化。而且deviceone有強(qiáng)大的云打包能力,編譯打包也可以標(biāo)準(zhǔn)管理。
最后要說的是deviceone并不是只是一個想法和實(shí)踐,它已經(jīng)是正式運(yùn)營一年多的產(chǎn)品,已經(jīng)為互聯(lián)網(wǎng)很多個人和公司提供了很多服務(wù),上線了很多面向個人和企業(yè)的應(yīng)用。
?
轉(zhuǎn)載于:https://www.cnblogs.com/onlydo/p/6231683.html
總結(jié)
以上是生活随笔為你收集整理的使用DeviceOne实现微信小程序功能的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 常用的meta标签总结
- 下一篇: Oracle的表空间和数据文件