• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

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

      2019-03-07 05:22林佳煜蘇煜輝陳正銘鄭璇麗
      電腦知識與技術 2019年35期
      關鍵詞:移動APP微信小程序

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

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

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

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

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

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

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

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

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

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

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

      1.1視圖層

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

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

      在wxss文件中:

      .user-avater{

      width:200rpx;

      height:200rpx;

      margin-top:160rpx;

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

      overflow:hidden;

      }

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

      1.2邏輯層和MINA框架

      邏輯層是基于JavaScript語言框架的,該框架能其和視圖層進行事件監(jiān)聽和數據傳輸,微信團隊把這兩個部分所組成的框架命名為MINA應用框架。開發(fā)者可以把網絡通信、數據安全、任務管理和文件系統(tǒng)等寫到邏輯層上,框架又對上層提供一整套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開發(fā)和主要技術

      2.1開發(fā)軟件Android Studio

      Android App是基于Java語言開發(fā)的,以前用的是Eclipse環(huán)境,現在主流用Android Studio開發(fā)。開發(fā)時要有有JavaJDK,Android SDK等輔助工具。Android App的開發(fā)采用的是將視圖層與邏輯層分開編寫的方式。邏輯層是基于純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系統(tǒng)的四大組件分別是活動(Activity),廣播接收器(Broadcast Receiver),服務(Service)和內容提供器(Content Pro—vider)。

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

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

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

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

      3 比較分析

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

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

      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)獲得已發(fā)現的設備

      wx.getBluetoothDevices({

      success:function(res){

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

      if(res.devices[0]){

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

      }

      }

      })

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

      wx.onBluetoothDeviceFound(function(devices){

      console.log('發(fā)現設備:',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開發(fā)上

      這里以低功耗藍牙為例(這是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)打開藍牙(先判斷是否啟動,若無則執(zhí)行打開意圖)

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

      ,,申請打開藍牙功能

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

      startActivity(btIntent);}

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

      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):

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

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

      3.2市場上

      3.2.1微信小程序市場

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

      3.2.2App市場

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

      4 結論

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

      參考文獻:

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

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

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

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

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

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

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

      【通聯編輯:梁書】

      收稿日期:2019-10-20

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

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

      猜你喜歡
      移動APP微信小程序
      當圖書館遇上微信小程序
      信息技術環(huán)境下會計專業(yè)教學模式的構建
      高校學習者對日語學習APP使用狀況的研究調查
      大學生利用移動APP自主學習英語的現狀調查研究
      移動APP在英語教學中的應用研究
      云龙县| 石林| 石城县| 洛隆县| 清涧县| 临邑县| 蓬莱市| 西和县| 大田县| 灵武市| 龙泉市| 包头市| 江孜县| 中西区| 漳州市| 加查县| 潍坊市| 逊克县| 宝坻区| 文水县| 景德镇市| 揭阳市| 盐亭县| 库伦旗| 乌鲁木齐市| 阿克| 嫩江县| 彭阳县| 扶沟县| 达拉特旗| 微山县| 万山特区| 博白县| 哈巴河县| 洱源县| 工布江达县| 十堰市| 克什克腾旗| 清徐县| 泸溪县| 北票市|