999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

微信小程序與移動App的開發技術比較

2019-03-07 05:22:18林佳煜蘇煜輝陳正銘鄭璇麗
電腦知識與技術 2019年35期

林佳煜 蘇煜輝 陳正銘 鄭璇麗

摘要:2017年1月微信小程序正式上線。和傳統的原生App相比較,小程序能實現其基本功能,但又有所區別。為了讓更多人了解兩者之間的區別,在應用開發上做出更精致的選擇,在本文中將以安卓原生App為例來對兩者進行比較,從而分析兩者間的區別。首先通過介紹兩者的技術差異,進一步對比總結出兩者在功能實現方式上的區別,再對其優劣、市場等方面做出分析,最終總結出兩者未來的發展趨勢,以供開發者更好地選擇。

關鍵詞:微信小程序;移動App;MINA框架;四大組件;藍牙模塊

中圖分類號:TP311 文獻標識碼:A

文章編號:1009-3044(2019)35-0022-04

自微信小程序上線以來,有調查分析,截止到2017年年末,小程序的用戶已經超過了2億,它所涉及的行業領域也接近300+,小程序的價值被越來越多的人所發掘。我們不禁會拿它和手機的原生App做對比,思考兩者區別。小程序和原生App各有優劣,在未來,兩者之間或許不僅沒有矛盾,還能起到互補作用。

1 微信小程序的開發和主要技術

微信團隊有為小程序設計師開發了專門的開發工具,在開發前,和注冊公眾號類似,首先要對小程序進行申請和認證,成功申請后登錄小程序管理后臺,點擊下載安裝開發工具,即可在此平臺上進行開發設計。

小程序開發過程像手機版的前端網站開發過程,它參考了很多前端的技術和理念,例如,它用React和Vue分別實現了“視覺組件”和Vue實現了標簽式邏輯與數據綁定,用CMD的require作為腳本文件的JavaScript。

小程序用JavaScript語言、XML、CSS語言編寫程序代碼,但所采用的又不是標準化的H5+CSS3+JavaScript架構,也和Web架構基于的W3C規范沒有任何關系。小程序使用騰訊全新定義的技術規范和架構,即WXML+WXSS+JavaScript架構,是微信特有的。

小程序有視圖層和邏輯層兩大部分。視圖層的作用主要是與小程序使用者的視覺進行交互,邏輯層則是對小程序的數據和邏輯處理,兩者共同構建了一個完整的框架。

1.1視圖層

視圖層描述的編程語言是騰訊公司定義規范的WXML和WXSS語言,剔除了復雜的關系配置,并且從規定上要求每個頁面需要有index.js、index.json、index.wxml、index.wxss這四個同名文件,每個文件功能不同:其中JS文件采用標準的JS語法規范,用于邏輯操作;Json文件顧名思義是用JSON語言書寫的,是為了配置頁面文件;wxml文件用XML語言書寫,作用是描述頁面視覺組件;而wxss則類似于前端的CSS語言,目的是定義給WXML組件樣式。

例如,在wxml文件中創建一個圖片視圖組件:

在wxss文件中:

.user-avater{

width:200rpx;

height:200rpx;

margin-top:160rpx;

border-radius:50%;//設置圖像為圓形

overflow:hidden;

}

通過在wxml文件中設置類對象名即可在wxss中利用該名對視圖進行修飾。

1.2邏輯層和MINA框架

邏輯層是基于JavaScript語言框架的,該框架能其和視圖層進行事件監聽和數據傳輸,微信團隊把這兩個部分所組成的框架命名為MINA應用框架。開發者可以把網絡通信、數據安全、任務管理和文件系統等寫到邏輯層上,框架又對上層提供一整套JavaScript API(可搜索官網上的簡易教程),這樣就能輕松地使用微信官網提供的各種基礎功能與能力,快速制作出一個應用。其示例代碼如下:

在js文件中Page函數下:

Page({

data:{

motto:'Hello World',

userInfo:{},

hasUserlnfo: false,

},

//事件處理函數

bindViewTap: function(){

wx.switchTab({

url:'../posts/posts'

})

},

onLoad: function(){

},

})

其中的data和bindViewTap分別起到數據綁定和事件設置的作用。

2 Android App開發和主要技術

2.1開發軟件Android Studio

Android App是基于Java語言開發的,以前用的是Eclipse環境,現在主流用Android Studio開發。開發時要有有JavaJDK,Android SDK等輔助工具。Android App的開發采用的是將視圖層與邏輯層分開編寫的方式。邏輯層是基于純JAVA語言,視圖層在xml文件上,用到的自然是XML語言。下面是書寫示例:

xmlns:android="http://schemas.android.com/apk/res/android"xmlns:app="http://schemas.android.com/apk/res-auto"android:laout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical"

android:id="@+id/mTabLayout"

android:layout_width="match_parent"

android:layout_height="wrap_content"

android.background="@color/colorPrimary"

app:tabGravity="fill"

app:tabIndicatorColor="@color/colorAccent"

app:tabMode="fixed"

app:tabSelectedTextColor="@color/colorAccent"

app:tabTextColor="@android:color/white"

/>

android:id="@+id/mViewPager"

android:layout_width="match__parent"

android:layout_height="Odp"

android:layout_weight="1"/>

另外還有Manifase等配置文件,負責添加權限,注冊等。

<!--一添加網絡權限一-->

<!--一注冊活動并設為主活動一-->

2.2四大組件

Android系統的四大組件分別是活動(Activity),廣播接收器(Broadcast Receiver),服務(Service)和內容提供器(Content Pro—vider)。

Activity。顧名思義為程序的活動,每個界面會對應一個Activity,而androidApp采用的是視圖和邏輯分離的結構。例如要舉辦一個活動,邏輯層就是寫本次活動的流程,而視圖層則是布置活動的場地,即UI布局,而setContentView(R.layout.activ一ity_main)語句關聯視圖層,其中參數為對應的的xml文件。

Service,即服務,是專門為后臺任務而產生的方案,是和邏輯層分開的另外的線程任務,適合執行那些時間較長并且和界面交互聯系不大的的任務,這是因為它不依賴不像activity一樣依賴于視圖層頁面,相對獨立。當此程序被切換到手機后臺時,該服務仍然可以執行,直到任務完成。

Broadcast Receiver是廣播接收器的意思。這個組件可以響應本程序或者手機上其他進程的廣播消息,成為名副其實的溝通橋梁。具體過程是,一個應用程序注冊一個繼承Broadcas—tReceiver的廣播類,通過設置系統事件來決定要響應的消息,同樣發送廣播的另一方也要設置對應的事件參數,這樣當它完成行為后發送出去的消息就會這個廣播類響應。廣播接收器可以實現多線程通信或者不同應用之間的通信。

Content Provider,是內容提供器的意思,它的作用是實現不同應用之間的數據共享,比如你想要讀取系統電話簿中的聯系人或者其它應用的賬號信息。它有一套完整的機制,在程序進行訪問的同時,保證這些被訪數據的安全性。此組件是An—dmid進行程序進行數據共享的標準方法。

3 比較分析

基于上面簡介,下面從開發語言、架構等對兩者做了一個初步對比:

3.1開發上(功能擴展上,以連接藍牙功能為例:)

3.1.1小程序上,連接藍牙主要有以下步驟去調用官方的API

(1)對藍牙進行初始化

wx.openBluetoothAdapter({

success: function (res){

console.log(res)

},

fail: function(res){

wx.showModal({

content:'請開啟手機藍牙后再試'

})

}

})

(2)掃描查詢藍牙

wx.startBluetoothDevicesDiscovery({

success:function(res){

console.log('search',res)

}

})

(3)獲得已發現的設備

wx.getBluetoothDevices({

success:function(res){

console.log('發現設備',res)

if(res.devices[0]){

console.log(that.ab2hext(res.devices[O].advertisData))

}

}

})

(4)監聽尋找到新設備的事件

wx.onBluetoothDeviceFound(function(devices){

console.log('發現設備:',devices.devices)

for(let i=0;i

//檢索指定設備

if(devices.devices[i].name=='掃描到的設備名字'){

that.setData({

deviceld:devices.devices[i].deviceld

})

//關閉搜索

that.stopBluetoothDevicesDiscovery();

console.log('已找到指定設備:',devices.devices[i].deviceld);

}

}

})

(5)連接低功耗藍牙設備

wx.createBLEConnection({

deviceld:that.data.deviceld,//搜索所獲設備id

success:function(res){

console.log('成功連接:',res.errMsg);

},

fail:function(res){

app.showToast('連接超時,請重試或更換車輛','none');

that.closeBluetoothAdapter();

}

})

3.1.2Android開發上

這里以低功耗藍牙為例(這是android4.3以后提供的API,多用于穿戴設備),下面是主要的步驟:

(1)權限的添加

在配置文件上添加BLUETOOTH, BLUETOOTH_ADMIN,ACCESS_COARSE_LOCATIONS三個請求。

(2)得到適配器(通過其進行低功耗藍牙操作)

獲取到適配器要先對其進行判斷,若不為空,則手機支持藍牙設備

final BluetoothManager bluetoothManager=

(BluetoothManager)getSystemService(Context.BLUE-TOOTH_SERVICE);

private BluetoothAdapter mBtAdapter=bluetoothManager. get-Adapter0;

(3)打開藍牙(先判斷是否啟動,若無則執行打開意圖)

if(mBtAdapter!= null&&!mBtAdapter.isEnabled0){

,,申請打開藍牙功能

Intent btlntent= new Intent(BluetoothAdapter. ACTION_RE-QUEST_ENABLE);

startActivity(btIntent);}

(4)判斷api版本(如果當前api版本低于23,則要再次進行動態申請)

ActivityCompat.requestPermissions(MainActivity.this,

new String□{Manifest.permission.ACCESS_COARSE_LOCA-TION},0);

(5)掃描設備,其中,scanCallback是一個用于掃描的回調方法,mLeScanner是新封裝的掃描類

final ScanCallback callback=new ScanCallback(){

@Override

public void onScanResult(int callbackType,ScanResult re-sult){

super.onScanResult(callbackType,result);

BluetoothDevice device=result.getDevice();

mBleAddress=device.getAddress();

}};

mLeScanner.startScan(callback);

(6)通過掃描中獲得的地址連接設備

final BluetoothDevice btDevice=mBtAdapter.getRemot-eDevice(mBleAddress);

mGatt=btDevice.connectGatt(MainActivity.this,false,mCall-back):

從這個例子可以看到,安卓在功能開發是基于java代碼開發,我們需要調用相應的SDK工具類來寫,有時要在xml配置文件上配置權限,而小程序則是js文件上調用api,而且很多功能在官方的開發文檔上都有。

從開發到使用,兩者之間各有優劣:

3.2市場上

3.2.1微信小程序市場

小程序的日益完善,便利和巨大的用戶基數,這吸引了越來越多的企業者投資開發,目前已經涵蓋200多個行業。其中重點投入的有生活服務類,電商平臺和小游戲等等。且截至2018年5月,用戶數量已突破10億,電商平臺、交通出行、工具、生活服務等較多,在未來,用戶數還會持續上升,不過,就單個小程序用戶量相當對App來說仍然很少。

3.2.2App市場

從全球市場來看,過去幾年App的下載量猛增,僅僅去年下載量就增加了6成作用,而中國就是最大的市場,App增長超過了其他國家。不過市場上的App逐漸出現馬太效應,一些大型企業越做越大,而一些功能少且使用頻度小的平臺逐漸轉移到小程序上。

4 結論

目前來看,開發者或是使用者對兩者的選擇,無非就是從“大”和“小”之間選擇。在未來,小程序將代替一些簡單功能的App成為主流,因為無論是開發,推廣還是使用上都比App要便捷,而App則是在其他方面占優勢,例如個性化的功能和交互方式,面向操作系統的底層性能優化,對離線數據的支持等,都比小程序強大,適合承載大型多樣的功能,例如大型游戲、美圖秀秀、高德地圖這些。微信小程序更適合被用來開發為那些功能相對較少,并且使用頻度低的應用。

參考文獻:

[1]喻國明,程思琪.從“連接”到“場景”:互聯網發展的重要進階——試析微信小程序的價值邏輯與市場版圖[J].新聞大學,2018(01):121-127,146,153-154.

[2]董曉剛.Android系統四大組件的注冊與激活[J].硅谷,2013,6(05):16.

[3]郭全中.小程序及其未來[J].新聞與寫作,2017(03).

[4]王慶剛,孫永政,吳天城.淺析安卓開發的相關技術[J].電腦迷,2017(03):23.

[5]李成淵,徐明亮.基于安卓開發技術的校園咨詢共享平臺設計與實現[J].無線互聯科技,2018,15(18):140-142.

[6]雷楚奇.對安卓開發相關技術的研究[J].電子技術與軟件工程,2015(24):74.

[7]劉紅衛,微信小程序應用探析[J].無線互聯科技,2016(23):11-12,40.

【通聯編輯:梁書】

收稿日期:2019-10-20

基金項目:韶關學院校級大學生創新創業訓練計劃項目資助(項目編號:Sycxcy2019074S)

作者簡介:蘇煜輝(1999-),男,廣東潮州人,韶關學院信息科學與工程學院本科生,主要研究方向為網站開發、PHP開發;林佳煜(1997-),男,廣東汕頭人,韶關學院信息科學與工程學院本科生,主要研究方向為嵌入式應用開發、安卓軟件開發。

主站蜘蛛池模板: 国产在线自乱拍播放| 永久免费无码日韩视频| 久久久久久午夜精品| 福利在线免费视频| 国产情侣一区二区三区| 2022精品国偷自产免费观看| 在线免费看黄的网站| 亚洲系列中文字幕一区二区| 美女免费精品高清毛片在线视| 国产精品综合久久久| 91小视频在线观看| 免费国产好深啊好涨好硬视频| 亚洲视频二| 久久成人免费| 中文字幕亚洲乱码熟女1区2区| 日韩av手机在线| 伊大人香蕉久久网欧美| 先锋资源久久| 欧美精品二区| 国产在线观看一区精品| 极品国产一区二区三区| 囯产av无码片毛片一级| 亚洲日韩精品无码专区97| 亚洲高清中文字幕在线看不卡| a在线亚洲男人的天堂试看| 国产精品免费露脸视频| 在线观看亚洲成人| 综合久久久久久久综合网| 91网在线| 久久精品一卡日本电影| 欧美日韩国产成人高清视频| 国产在线视频欧美亚综合| 国产后式a一视频| 2021国产乱人伦在线播放| 久久五月视频| 亚洲青涩在线| a级免费视频| 一级毛片免费的| 久久亚洲国产一区二区| 色噜噜久久| 国产精品久久久久久久久久久久| 无码免费视频| 亚洲精品视频免费| 好吊妞欧美视频免费| 亚洲第一天堂无码专区| 老司机久久精品视频| 国产成人啪视频一区二区三区 | AV在线麻免费观看网站| 国产成人精品高清不卡在线| 国产高清精品在线91| 国产理论一区| 在线看国产精品| 伊人丁香五月天久久综合| 激情综合网激情综合| 丁香六月激情婷婷| 农村乱人伦一区二区| 精品久久香蕉国产线看观看gif| 亚洲国产成人精品无码区性色| 久久国产高清视频| 亚洲精品第一在线观看视频| 精品天海翼一区二区| 拍国产真实乱人偷精品| 美女亚洲一区| 性激烈欧美三级在线播放| 99热这里都是国产精品| 黄色免费在线网址| 日韩欧美在线观看| AV老司机AV天堂| 国产色婷婷视频在线观看| 日本午夜三级| 久久99精品国产麻豆宅宅| 尤物视频一区| 一级黄色欧美| 亚洲色图欧美| 天天躁夜夜躁狠狠躁图片| 99视频在线免费观看| 制服丝袜在线视频香蕉| 久久精品国产999大香线焦| 鲁鲁鲁爽爽爽在线视频观看| 欧美色视频日本| 99视频在线免费| 国产91蝌蚪窝|