這篇文章將為大家詳細(xì)講解有關(guān)微信小程序開發(fā)框架MINA的示例分析,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。
創(chuàng)新互聯(lián)-專業(yè)網(wǎng)站定制、快速模板網(wǎng)站建設(shè)、高性價比平泉網(wǎng)站開發(fā)、企業(yè)建站全套包干低至880元,成熟完善的模板庫,直接使用。一站式平泉網(wǎng)站制作公司更省心,省錢,快速模板網(wǎng)站建設(shè)找我們,業(yè)務(wù)覆蓋平泉地區(qū)。費用合理售后完善,十多年實體公司更值得信賴。小程序MINA框架,及優(yōu)點
MINA框架:
小程序使用的是MINA框架,目的是通過簡單、高效的方式讓開發(fā)者可以在微信中開發(fā)具有原生App體驗的服務(wù)。
MINA的核心是一個響應(yīng)的數(shù)據(jù)綁定系統(tǒng)。
整個系統(tǒng)分為兩塊:視圖層(view,描述語言wxml和wxss)和邏輯層(App Serice,基于 JavaScript)。這可以讓數(shù)據(jù)與視圖非常簡單的保持同步。當(dāng)做數(shù)據(jù)修改時,只需要在邏輯層改數(shù)據(jù),視圖層就會做響應(yīng)的更新。開發(fā)者只需要將頁面路由、方法、生命周期函數(shù)注冊進框架,其他的一切復(fù)雜的操作都將由框架處理。
小程序優(yōu)點:
? 方便使用:無需下載,打開即用,用完即走。不占用手機內(nèi)存,省流量,省安裝時間
? 開發(fā)簡單:開發(fā)的本質(zhì)是MVVM風(fēng)格的Javascript框架上開發(fā)的,有前端經(jīng)驗的程序員可以無縫銜接,無經(jīng)驗的“小白”也可以快速入門。
? 跨平臺運行:不用再分別開發(fā)IOS和Andriod版本,只需要發(fā)布微信小程序平臺,所有平臺都可以使用。開發(fā)成本低
? 快速分發(fā)與迭代:無需關(guān)心各種發(fā)布渠道,也無須擔(dān)心舊版本升級的兼容問題。
打開速度比H5快,體驗接近原生APP
小程序開發(fā)框架的目標(biāo)是通過盡可能簡單、高效的方式讓開發(fā)者可以在微信中開發(fā)具有原生 APP 體驗的服務(wù)。
微信團隊為小程序提供的框架命名為MINA。MINA框架通過封裝微信客戶端提供的文件系統(tǒng)、網(wǎng)絡(luò)通信、任務(wù)管理、數(shù)據(jù)安全等基礎(chǔ)功能,對上層提供一整套JavaScript API,讓開發(fā)者方便的使用微信客戶端提供的各種基礎(chǔ)功能與能力,快速構(gòu)建應(yīng)用。
MINA框架
微信小程序的框架示意圖如下所示:
MINA框架主要分為兩大部分:
第一部分頁面視圖層,開發(fā)者使用WXML文件來搭建頁面的基本視圖結(jié)構(gòu)(WXML是類似于HTML標(biāo)簽的語言和一系列基礎(chǔ)組件),使用WXSS文件來控制頁面的表現(xiàn)樣式。
第二部分AppService應(yīng)用邏輯層,是MINA框架的服務(wù)中心,通過微信客戶端啟動異步線程單獨加載運行,頁面渲染所需的數(shù)據(jù)、頁面交互處理邏輯都在其中實現(xiàn)。MINA框架中的AppService使用JavaScript來編寫交互邏輯、網(wǎng)絡(luò)請求、數(shù)據(jù)處理,但不能使用JavaScript中的DOM操作。小程序中的各個頁面可以通過AppService實現(xiàn)數(shù)據(jù)管理、網(wǎng)絡(luò)通信、生命周期管理和頁面路由。
MINA框架為頁面組件提供了一系列事件監(jiān)聽相關(guān)的屬性(比如bindtap、bindtouchstart等),來與AppService中的事件處理函數(shù)綁定在一起,來實現(xiàn)頁面向AppService層同步用戶交互數(shù)據(jù)。MINA框架同時提供了很多方法將AppService中的數(shù)據(jù)與頁面進行單向綁定(注意數(shù)據(jù)的綁定方向是單向的),當(dāng)AppService中的數(shù)據(jù)變更時,會主動觸發(fā)對應(yīng)頁面組件的重新渲染。
框架的核心是一個響應(yīng)式的數(shù)據(jù)綁定系統(tǒng),它能讓數(shù)據(jù)與視圖很簡單的保持同步。只需要在邏輯層修改數(shù)據(jù),視圖層就會做相應(yīng)的更新。示例如下:
<!--頁面視圖層代碼--> <view class="apptitle"> <text class="app-avatar">歡迎使用{{appname}}</text> <button bindtap="changeAppname">更換名稱 </button> </view> //AppService應(yīng)用邏輯層代碼 //初始數(shù)據(jù) page({ data:{ appname:'易投票' }, changeAppname:function(e){ this.setData({ appname:'我的小程序' }) } })
圖1:初始名稱
圖2:點擊按鈕“更換名稱”以后
示例中數(shù)據(jù)是如何更新的呢?首先,開發(fā)者通過框架將AppService應(yīng)用邏輯層數(shù)據(jù)中的appname與頁面視圖層名為appname的變更進行了綁定,頁面在剛打開的時候會顯示“歡迎使用 易投票。然后,當(dāng)點擊按鈕“更換名稱”之后,視圖層會發(fā)送changeAppname的tap事件給邏輯層,邏輯層找到事件函數(shù)changeAppname。最后,邏輯層changeAppname函數(shù)執(zhí)行了setData操作,將對象appname的值改變?yōu)椤拔业男〕绦颉?,因為該對象已?jīng)在視圖層綁定,所以視圖層會顯示為圖2的名稱了。
小程序的MINA框架有著接近原生App的運行速度,在框架層面做了大量的優(yōu)化,在重功能上(page或tab切換、多媒體、網(wǎng)絡(luò)連接等)上使用接近于native的組件繼承,對安卓和ios端做出了高度一致的呈現(xiàn),還有近乎完備的開發(fā)、調(diào)試工具。
目錄結(jié)構(gòu)
典型的小程序目錄結(jié)構(gòu)非常簡潔,一般一個項目包含兩個目錄(pages和utils)三個文件(app.js、app.json、app.wxss)。pages目錄下包括程序所需的各個頁面,一個頁面對應(yīng)一個目錄,包含2至4個文件(.js、.wxml、.json及.wxss)。utils目錄則包含一些公共的js代碼文件。當(dāng)然,我們還可以添加其他的公共目錄,如用來存放本地圖片資源的images目錄。
邏輯層
小程序的邏輯層就是所有.js腳本文件的集合。小程序在邏輯層處理數(shù)據(jù)并發(fā)送至視圖層,同時接受視圖層發(fā)回的事件請求。
MINA框架的邏輯層是由JavaScript編寫,在此基礎(chǔ)上,微信團隊做出了一些優(yōu)化,以便更高效的開發(fā)小程序,這些優(yōu)化包括:
1、增加app方法用來注冊程序,增加page方法用來注冊頁面;
2、提供豐富的API接口;
3、頁面的作用域相對獨立,并擁有了模塊化的能力;
簡單概括,邏輯層就是各個頁面的.js腳本文件。
需要注意的是,小程序的邏輯層由js編寫,但并不是在瀏覽器中運行的,所以JavaScript在Web中的一些能力都不能使用,比如 dom、window等,這也是我們開發(fā)過程中要克服的阻礙。
視圖層
對于微信小程序而言,視圖層就是所有的.wxml(WeiXin Markup language)文件與.wxss(WeiXin Style Sheet)文件的集合:.wxml用于描述頁面結(jié)構(gòu)而.wxss用于描述頁面樣式。
視圖層以給定的樣式來展現(xiàn)數(shù)據(jù)并反饋事件給邏輯層,而數(shù)據(jù)展現(xiàn)是以組件來進行的。組件(Component)是視圖的基本組成單元。
數(shù)據(jù)層
數(shù)據(jù)層包括臨時數(shù)據(jù)或緩存、文件存儲、網(wǎng)絡(luò)存儲與調(diào)用。
1、頁面臨時數(shù)據(jù)或緩存
在頁面page()中,我們要使用setData函數(shù)來將數(shù)據(jù)從邏輯層發(fā)送到視圖層,同時改變對應(yīng)的this.data的值。this在小程序中一般指調(diào)用頁面,廣泛情況下指的是包含它的函數(shù)作為方法被調(diào)用時所屬的對象。直接修改this.data是無效的,無法改變頁面的狀態(tài),還會造成數(shù)據(jù)的不一致。單次設(shè)置的數(shù)據(jù)有一個大小限制,不能超過1024KB,避免一次性設(shè)置過多的數(shù)據(jù)。
setData()函數(shù)的參數(shù)接受一個對象。以key,value的形式表示,將this.data中的key對應(yīng)的值改變?yōu)関alue。key可以非常靈活,包括以數(shù)據(jù)路徑的形式表示,如array[0].title
,并且無需在this.data中預(yù)定義。
2、文件存儲(本地存儲)
使用微信提供的現(xiàn)成數(shù)據(jù)API接口,如:
wx.getStorage:獲取本地數(shù)據(jù)緩存
wx.setStorage:設(shè)置本地數(shù)據(jù)緩存
wx.clearStorage:清理本地數(shù)據(jù)緩存
3、網(wǎng)絡(luò)存儲與調(diào)用
上傳或下載文件的API接口,如:
wx.request:發(fā)起網(wǎng)絡(luò)請求
wx.uploadFile:上傳文件
wx.downloadFile:下載文件
調(diào)用URL的API接口如下:
wx.navigateTo:保留當(dāng)前頁面,跳轉(zhuǎn)到應(yīng)用內(nèi)的某個頁面。但是不能跳到 tabbar 頁面。可返回原頁面。
wx.redirectTo:關(guān)閉當(dāng)前頁面,跳轉(zhuǎn)到應(yīng)用內(nèi)的某個頁面。但是不允許跳轉(zhuǎn)到 tabbar 頁面。不可返回原頁面。
關(guān)于“微信小程序開發(fā)框架MINA的示例分析”這篇文章就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,使各位可以學(xué)到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。
分享標(biāo)題:微信小程序開發(fā)框架MINA的示例分析-創(chuàng)新互聯(lián)
網(wǎng)頁網(wǎng)址:http://jinyejixie.com/article18/coepdp.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站收錄、營銷型網(wǎng)站建設(shè)、定制網(wǎng)站、ChatGPT、品牌網(wǎng)站建設(shè)、手機網(wǎng)站建設(shè)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容