亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        微信小程序與移動(dòng)App的開(kāi)發(fā)技術(shù)比較

        2019-03-07 05:22:18林佳煜蘇煜輝陳正銘鄭璇麗
        電腦知識(shí)與技術(shù) 2019年35期
        關(guān)鍵詞:移動(dòng)APP微信小程序

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

        摘要:2017年1月微信小程序正式上線。和傳統(tǒng)的原生App相比較,小程序能實(shí)現(xiàn)其基本功能,但又有所區(qū)別。為了讓更多人了解兩者之間的區(qū)別,在應(yīng)用開(kāi)發(fā)上做出更精致的選擇,在本文中將以安卓原生App為例來(lái)對(duì)兩者進(jìn)行比較,從而分析兩者間的區(qū)別。首先通過(guò)介紹兩者的技術(shù)差異,進(jìn)一步對(duì)比總結(jié)出兩者在功能實(shí)現(xiàn)方式上的區(qū)別,再對(duì)其優(yōu)劣、市場(chǎng)等方面做出分析,最終總結(jié)出兩者未來(lái)的發(fā)展趨勢(shì),以供開(kāi)發(fā)者更好地選擇。

        關(guān)鍵詞:微信小程序;移動(dòng)App;MINA框架;四大組件;藍(lán)牙模塊

        中圖分類號(hào):TP311 文獻(xiàn)標(biāo)識(shí)碼:A

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

        自微信小程序上線以來(lái),有調(diào)查分析,截止到2017年年末,小程序的用戶已經(jīng)超過(guò)了2億,它所涉及的行業(yè)領(lǐng)域也接近300+,小程序的價(jià)值被越來(lái)越多的人所發(fā)掘。我們不禁會(huì)拿它和手機(jī)的原生App做對(duì)比,思考兩者區(qū)別。小程序和原生App各有優(yōu)劣,在未來(lái),兩者之間或許不僅沒(méi)有矛盾,還能起到互補(bǔ)作用。

        1 微信小程序的開(kāi)發(fā)和主要技術(shù)

        微信團(tuán)隊(duì)有為小程序設(shè)計(jì)師開(kāi)發(fā)了專門的開(kāi)發(fā)工具,在開(kāi)發(fā)前,和注冊(cè)公眾號(hào)類似,首先要對(duì)小程序進(jìn)行申請(qǐng)和認(rèn)證,成功申請(qǐng)后登錄小程序管理后臺(tái),點(diǎn)擊下載安裝開(kāi)發(fā)工具,即可在此平臺(tái)上進(jìn)行開(kāi)發(fā)設(shè)計(jì)。

        小程序開(kāi)發(fā)過(guò)程像手機(jī)版的前端網(wǎng)站開(kāi)發(fā)過(guò)程,它參考了很多前端的技術(shù)和理念,例如,它用React和Vue分別實(shí)現(xiàn)了“視覺(jué)組件”和Vue實(shí)現(xiàn)了標(biāo)簽式邏輯與數(shù)據(jù)綁定,用CMD的require作為腳本文件的JavaScript。

        小程序用JavaScript語(yǔ)言、XML、CSS語(yǔ)言編寫程序代碼,但所采用的又不是標(biāo)準(zhǔn)化的H5+CSS3+JavaScript架構(gòu),也和Web架構(gòu)基于的W3C規(guī)范沒(méi)有任何關(guān)系。小程序使用騰訊全新定義的技術(shù)規(guī)范和架構(gòu),即WXML+WXSS+JavaScript架構(gòu),是微信特有的。

        小程序有視圖層和邏輯層兩大部分。視圖層的作用主要是與小程序使用者的視覺(jué)進(jìn)行交互,邏輯層則是對(duì)小程序的數(shù)據(jù)和邏輯處理,兩者共同構(gòu)建了一個(gè)完整的框架。

        1.1視圖層

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

        例如,在wxml文件中創(chuàng)建一個(gè)圖片視圖組件:

        在wxss文件中:

        .user-avater{

        width:200rpx;

        height:200rpx;

        margin-top:160rpx;

        border-radius:50%;//設(shè)置圖像為圓形

        overflow:hidden;

        }

        通過(guò)在wxml文件中設(shè)置類對(duì)象名即可在wxss中利用該名對(duì)視圖進(jìn)行修飾。

        1.2邏輯層和MINA框架

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

        在js文件中Page函數(shù)下:

        Page({

        data:{

        motto:'Hello World',

        userInfo:{},

        hasUserlnfo: false,

        },

        //事件處理函數(shù)

        bindViewTap: function(){

        wx.switchTab({

        url:'../posts/posts'

        })

        },

        onLoad: function(){

        },

        })

        其中的data和bindViewTap分別起到數(shù)據(jù)綁定和事件設(shè)置的作用。

        2 Android App開(kāi)發(fā)和主要技術(shù)

        2.1開(kāi)發(fā)軟件Android Studio

        Android App是基于Java語(yǔ)言開(kāi)發(fā)的,以前用的是Eclipse環(huán)境,現(xiàn)在主流用Android Studio開(kāi)發(fā)。開(kāi)發(fā)時(shí)要有有JavaJDK,Android SDK等輔助工具。Android App的開(kāi)發(fā)采用的是將視圖層與邏輯層分開(kāi)編寫的方式。邏輯層是基于純JAVA語(yǔ)言,視圖層在xml文件上,用到的自然是XML語(yǔ)言。下面是書(shū)寫示例:

        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等配置文件,負(fù)責(zé)添加權(quán)限,注冊(cè)等。

        <!--一添加網(wǎng)絡(luò)權(quán)限一-->

        <!--一注冊(cè)活動(dòng)并設(shè)為主活動(dòng)一-->

        2.2四大組件

        Android系統(tǒng)的四大組件分別是活動(dòng)(Activity),廣播接收器(Broadcast Receiver),服務(wù)(Service)和內(nèi)容提供器(Content Pro—vider)。

        Activity。顧名思義為程序的活動(dòng),每個(gè)界面會(huì)對(duì)應(yīng)一個(gè)Activity,而androidApp采用的是視圖和邏輯分離的結(jié)構(gòu)。例如要舉辦一個(gè)活動(dòng),邏輯層就是寫本次活動(dòng)的流程,而視圖層則是布置活動(dòng)的場(chǎng)地,即UI布局,而setContentView(R.layout.activ一ity_main)語(yǔ)句關(guān)聯(lián)視圖層,其中參數(shù)為對(duì)應(yīng)的的xml文件。

        Service,即服務(wù),是專門為后臺(tái)任務(wù)而產(chǎn)生的方案,是和邏輯層分開(kāi)的另外的線程任務(wù),適合執(zhí)行那些時(shí)間較長(zhǎng)并且和界面交互聯(lián)系不大的的任務(wù),這是因?yàn)樗灰蕾嚥幌馻ctivity一樣依賴于視圖層頁(yè)面,相對(duì)獨(dú)立。當(dāng)此程序被切換到手機(jī)后臺(tái)時(shí),該服務(wù)仍然可以執(zhí)行,直到任務(wù)完成。

        Broadcast Receiver是廣播接收器的意思。這個(gè)組件可以響應(yīng)本程序或者手機(jī)上其他進(jìn)程的廣播消息,成為名副其實(shí)的溝通橋梁。具體過(guò)程是,一個(gè)應(yīng)用程序注冊(cè)一個(gè)繼承Broadcas—tReceiver的廣播類,通過(guò)設(shè)置系統(tǒng)事件來(lái)決定要響應(yīng)的消息,同樣發(fā)送廣播的另一方也要設(shè)置對(duì)應(yīng)的事件參數(shù),這樣當(dāng)它完成行為后發(fā)送出去的消息就會(huì)這個(gè)廣播類響應(yīng)。廣播接收器可以實(shí)現(xiàn)多線程通信或者不同應(yīng)用之間的通信。

        Content Provider,是內(nèi)容提供器的意思,它的作用是實(shí)現(xiàn)不同應(yīng)用之間的數(shù)據(jù)共享,比如你想要讀取系統(tǒng)電話簿中的聯(lián)系人或者其它應(yīng)用的賬號(hào)信息。它有一套完整的機(jī)制,在程序進(jìn)行訪問(wèn)的同時(shí),保證這些被訪數(shù)據(jù)的安全性。此組件是An—dmid進(jìn)行程序進(jìn)行數(shù)據(jù)共享的標(biāo)準(zhǔn)方法。

        3 比較分析

        基于上面簡(jiǎn)介,下面從開(kāi)發(fā)語(yǔ)言、架構(gòu)等對(duì)兩者做了一個(gè)初步對(duì)比:

        3.1開(kāi)發(fā)上(功能擴(kuò)展上,以連接藍(lán)牙功能為例:)

        3.1.1小程序上,連接藍(lán)牙主要有以下步驟去調(diào)用官方的API

        (1)對(duì)藍(lán)牙進(jìn)行初始化

        wx.openBluetoothAdapter({

        success: function (res){

        console.log(res)

        },

        fail: function(res){

        wx.showModal({

        content:'請(qǐng)開(kāi)啟手機(jī)藍(lán)牙后再試'

        })

        }

        })

        (2)掃描查詢藍(lán)牙

        wx.startBluetoothDevicesDiscovery({

        success:function(res){

        console.log('search',res)

        }

        })

        (3)獲得已發(fā)現(xiàn)的設(shè)備

        wx.getBluetoothDevices({

        success:function(res){

        console.log('發(fā)現(xiàn)設(shè)備',res)

        if(res.devices[0]){

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

        }

        }

        })

        (4)監(jiān)聽(tīng)尋找到新設(shè)備的事件

        wx.onBluetoothDeviceFound(function(devices){

        console.log('發(fā)現(xiàn)設(shè)備:',devices.devices)

        for(let i=0;i

        //檢索指定設(shè)備

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

        that.setData({

        deviceld:devices.devices[i].deviceld

        })

        //關(guān)閉搜索

        that.stopBluetoothDevicesDiscovery();

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

        }

        }

        })

        (5)連接低功耗藍(lán)牙設(shè)備

        wx.createBLEConnection({

        deviceld:that.data.deviceld,//搜索所獲設(shè)備id

        success:function(res){

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

        },

        fail:function(res){

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

        that.closeBluetoothAdapter();

        }

        })

        3.1.2Android開(kāi)發(fā)上

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

        (1)權(quán)限的添加

        在配置文件上添加BLUETOOTH, BLUETOOTH_ADMIN,ACCESS_COARSE_LOCATIONS三個(gè)請(qǐng)求。

        (2)得到適配器(通過(guò)其進(jìn)行低功耗藍(lán)牙操作)

        獲取到適配器要先對(duì)其進(jìn)行判斷,若不為空,則手機(jī)支持藍(lán)牙設(shè)備

        final BluetoothManager bluetoothManager=

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

        private BluetoothAdapter mBtAdapter=bluetoothManager. get-Adapter0;

        (3)打開(kāi)藍(lán)牙(先判斷是否啟動(dòng),若無(wú)則執(zhí)行打開(kāi)意圖)

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

        ,,申請(qǐng)打開(kāi)藍(lán)牙功能

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

        startActivity(btIntent);}

        (4)判斷api版本(如果當(dāng)前api版本低于23,則要再次進(jìn)行動(dòng)態(tài)申請(qǐng))

        ActivityCompat.requestPermissions(MainActivity.this,

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

        (5)掃描設(shè)備,其中,scanCallback是一個(gè)用于掃描的回調(diào)方法,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)通過(guò)掃描中獲得的地址連接設(shè)備

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

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

        從這個(gè)例子可以看到,安卓在功能開(kāi)發(fā)是基于java代碼開(kāi)發(fā),我們需要調(diào)用相應(yīng)的SDK工具類來(lái)寫,有時(shí)要在xml配置文件上配置權(quán)限,而小程序則是js文件上調(diào)用api,而且很多功能在官方的開(kāi)發(fā)文檔上都有。

        從開(kāi)發(fā)到使用,兩者之間各有優(yōu)劣:

        3.2市場(chǎng)上

        3.2.1微信小程序市場(chǎng)

        小程序的日益完善,便利和巨大的用戶基數(shù),這吸引了越來(lái)越多的企業(yè)者投資開(kāi)發(fā),目前已經(jīng)涵蓋200多個(gè)行業(yè)。其中重點(diǎn)投入的有生活服務(wù)類,電商平臺(tái)和小游戲等等。且截至2018年5月,用戶數(shù)量已突破10億,電商平臺(tái)、交通出行、工具、生活服務(wù)等較多,在未來(lái),用戶數(shù)還會(huì)持續(xù)上升,不過(guò),就單個(gè)小程序用戶量相當(dāng)對(duì)App來(lái)說(shuō)仍然很少。

        3.2.2App市場(chǎng)

        從全球市場(chǎng)來(lái)看,過(guò)去幾年App的下載量猛增,僅僅去年下載量就增加了6成作用,而中國(guó)就是最大的市場(chǎng),App增長(zhǎng)超過(guò)了其他國(guó)家。不過(guò)市場(chǎng)上的App逐漸出現(xiàn)馬太效應(yīng),一些大型企業(yè)越做越大,而一些功能少且使用頻度小的平臺(tái)逐漸轉(zhuǎn)移到小程序上。

        4 結(jié)論

        目前來(lái)看,開(kāi)發(fā)者或是使用者對(duì)兩者的選擇,無(wú)非就是從“大”和“小”之間選擇。在未來(lái),小程序?qū)⒋嬉恍┖?jiǎn)單功能的App成為主流,因?yàn)闊o(wú)論是開(kāi)發(fā),推廣還是使用上都比App要便捷,而App則是在其他方面占優(yōu)勢(shì),例如個(gè)性化的功能和交互方式,面向操作系統(tǒng)的底層性能優(yōu)化,對(duì)離線數(shù)據(jù)的支持等,都比小程序強(qiáng)大,適合承載大型多樣的功能,例如大型游戲、美圖秀秀、高德地圖這些。微信小程序更適合被用來(lái)開(kāi)發(fā)為那些功能相對(duì)較少,并且使用頻度低的應(yīng)用。

        參考文獻(xiàn):

        [1]喻國(guó)明,程思琪.從“連接”到“場(chǎng)景”:互聯(lián)網(wǎng)發(fā)展的重要進(jìn)階——試析微信小程序的價(jià)值邏輯與市場(chǎng)版圖[J].新聞大學(xué),2018(01):121-127,146,153-154.

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

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

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

        [5]李成淵,徐明亮.基于安卓開(kāi)發(fā)技術(shù)的校園咨詢共享平臺(tái)設(shè)計(jì)與實(shí)現(xiàn)[J].無(wú)線互聯(lián)科技,2018,15(18):140-142.

        [6]雷楚奇.對(duì)安卓開(kāi)發(fā)相關(guān)技術(shù)的研究[J].電子技術(shù)與軟件工程,2015(24):74.

        [7]劉紅衛(wèi),微信小程序應(yīng)用探析[J].無(wú)線互聯(lián)科技,2016(23):11-12,40.

        【通聯(lián)編輯:梁書(shū)】

        收稿日期:2019-10-20

        基金項(xiàng)目:韶關(guān)學(xué)院校級(jí)大學(xué)生創(chuàng)新創(chuàng)業(yè)訓(xùn)練計(jì)劃項(xiàng)目資助(項(xiàng)目編號(hào):Sycxcy2019074S)

        作者簡(jiǎn)介:蘇煜輝(1999-),男,廣東潮州人,韶關(guān)學(xué)院信息科學(xué)與工程學(xué)院本科生,主要研究方向?yàn)榫W(wǎng)站開(kāi)發(fā)、PHP開(kāi)發(fā);林佳煜(1997-),男,廣東汕頭人,韶關(guān)學(xué)院信息科學(xué)與工程學(xué)院本科生,主要研究方向?yàn)榍度胧綉?yīng)用開(kāi)發(fā)、安卓軟件開(kāi)發(fā)。

        猜你喜歡
        移動(dòng)APP微信小程序
        圖書(shū)館微信小程序的應(yīng)用現(xiàn)狀及前景分析
        基于CNKI的微信小程序研究文獻(xiàn)計(jì)量分析
        信息技術(shù)與專業(yè)課程融合路徑探索
        決策探索(2017年12期)2017-07-13 11:11:12
        當(dāng)圖書(shū)館遇上微信小程序
        信息技術(shù)環(huán)境下會(huì)計(jì)專業(yè)教學(xué)模式的構(gòu)建
        “五位一體”班組落地的研究與實(shí)踐
        高校學(xué)習(xí)者對(duì)日語(yǔ)學(xué)習(xí)APP使用狀況的研究調(diào)查
        考試周刊(2016年33期)2016-05-28 17:47:04
        大學(xué)生利用移動(dòng)APP自主學(xué)習(xí)英語(yǔ)的現(xiàn)狀調(diào)查研究
        考試周刊(2016年22期)2016-05-06 18:38:26
        移動(dòng)APP融入高職服務(wù)外包課程英語(yǔ)教學(xué)研究
        移動(dòng)APP在英語(yǔ)教學(xué)中的應(yīng)用研究
        考試周刊(2016年9期)2016-03-12 07:08:09
        亚洲av成人无码网站…| 日本精品一区二区三区在线观看| 四虎成人精品在永久免费| 免费a级毛片永久免费| 精品人妻无码中文字幕在线| 免费一区二区三区av| 国产熟女盗摄一区二区警花91 | 日产国产精品亚洲高清| 国产精品videossex久久发布 | 欧美老熟妇乱子| 在线亚洲人成电影网站色www| 中出高潮了中文字幕| 精品不卡视频在线网址| 日日摸日日碰人妻无码 | 久久精品国产亚洲不av麻豆| 熟女人妻一区二区中文字幕| 午夜天堂一区人妻| 久久夜色精品国产噜噜麻豆| 中文字幕不卡高清免费| 一区二区三区日本美女视频| 少妇被又大又粗又爽毛片久久黑人| 国产人妻精品一区二区三区不卡 | 91亚洲国产成人精品一区.| 丰满岳乱妇一区二区三区| 国产成人国产在线观看入口| 在线免费观看亚洲毛片| 日本道免费一区二区三区日韩精品 | 亚洲精品中文字幕乱码| 色婷婷亚洲一区二区三区| AV无码最在线播放| 美女一区二区三区在线观看视频| 亚洲久悠悠色悠在线播放| 人妻夜夜爽天天爽一区| 久久国产精99精产国高潮| 国产亚洲精品在线播放| 亚洲欧美日韩精品久久| 亚洲欧美日韩国产一区| 国产视频一区二区三区在线看| 久久精品中文字幕| 最新亚洲av日韩av二区| 日韩精品中文字幕人妻中出|