一级片大奶子_色又黄又爽18禁免费视频_热久久久久久久_久久久精品一区二区_日韩av不卡在线播放_精品国内自产拍在线观看视频

注冊

微信小程序教程入門篇【4】,MINA框架的視圖層邏輯層

2017-12-20
導讀:本帖最后由 狂兔科技 于 2016-11-1 18:14 編輯 1. 開篇導言 本節目標:通過 上一節 的講解,相信大家對小程序框架MINA的目錄結構和配置有了一定的了解。接下來將會講解視圖層,邏輯層及...

1. 開篇導言    
  • 本節目標:通過上一節的講解,相信大家對小程序框架MINA的目錄結構和配置有了一定的了解。接下來將會講解視圖層,邏輯層及其之間的交互。
  • 目標用戶:無編程經驗,但對微信小程序感興趣的同學。
  • 學習目標:了解MINA框架的視圖層(View),邏輯層(App Service),及其之間的交互。
  • 案例分析:helloworld小程序。
  • 代碼下載
  • 傳送門:

上一篇:微信小程序教程-入門篇【3】   
下一篇:
微信小程序教程-入門篇【5】   

  • 備注:有編程經驗或看過微信官網簡易教程的同學,請酌情略過該章節。

2. MINA結構基礎
從某種程度來來講,我們可以把MINA的結構簡化如下圖:
微信小程序教程入門篇【4】,MINA框架的視圖層邏輯層

view模塊:負責UI顯示。它由開發者編寫的wxml,wxss及微信提供的相關組件來組成。
service模塊:負責應用的后臺邏輯,它由小程序的 js 代碼以及微信提供的相關輔助模塊組成。
其中view模塊由view thread進行驅動,service模塊則由AppService Thread進行驅動。我們說view模塊和service模塊之間的交互,其實指的是線程間的交互。
一個小程序只有一個 service 進程,它在程序生命周期內后臺運行。當小程序進入后臺一定時間,或者系統資源占用過高,才會被真正的銷毀。

3. 案例展示
微信小程序教程入門篇【4】,MINA框架的視圖層邏輯層
上圖為該項目的兩個頁面。左面:主頁面。右面:logs頁面。
下面將分為三部分對helloworld進行講解:啟動流程,主頁面,logs頁面。

4. 啟動流程
微信小程序教程入門篇【4】,MINA框架的視圖層邏輯層

  • 邏輯入口:app.js

app.js的代碼如下:
  1. //app.js
  2.  
  3. //1. App()函數用來注冊一個小程序。接受一個object參數,其指定小程序的生命周期函數等。
  4. App({
  5.  
  6.   //2. 生命周期函數--監聽小程序初始化,當小程序初始化完成時,會觸發onLaunch(全局只觸發一次)  
  7.   onLaunch: function () {
  8.     //調用API從本地緩存中獲取數據
  9.     var logs = wx.getStorageSync('logs') || []
  10.     logs.unshift(Date.now())
  11.     wx.setStorageSync('logs', logs)
  12.   },
  13.  
  14.   //3. 成員方法:獲取用戶數據。
  15.   getUserInfo:function(cb){
  16.     var that = this
  17.     if(this.globalData.userInfo){
  18.       typeof cb == "function" && cb(this.globalData.userInfo)
  19.     }else{
  20.       //調用登錄接口
  21.       wx.login({
  22.         success: function () {
  23.           wx.getUserInfo({
  24.             success: function (res) {
  25.               that.globalData.userInfo = res.userInfo
  26.               typeof cb == "function" && cb(that.globalData.userInfo)
  27.             }
  28.           })
  29.         }
  30.       })
  31.     }
  32.   },
  33.  
  34.   //4. 全局數據
  35.   globalData:{
  36.     userInfo:null
  37.   }
  38. })
  39.  
  40. //注意:App()必須在app.js中注冊,且不能注冊多個。
  41. //     不要在定義于App()內的函數中調用getApp(),使用this就可以拿到app實例。
  42. //     不要在onLaunch的時候調用getCurrentPage(),此時page還沒有生成。
復制代碼

上面的代碼文件說明了app.js文件的用處:注冊App()。這里面包含兩部分。
其一:生命周期函數的定義(onLaunch/onShow/onHide)。
其二:自定義函數,通常用于操作全局數據或微信提供的用戶等業務邏輯數據。
           全局數據。


  • 啟動后的主頁面:app.json

啟動后的主頁面,根據app.json中【pages】中的部分來決定。準備的來說,誰在上面則主頁面是誰。在該項目中,代碼如下:
  1. "pages":[
  2.     "pages/index/index",
  3.     "pages/logs/logs"            
  4.   ],
復制代碼
如果我們把index和logs更換位置,則主頁面則由上圖中的左圖更換為右圖。代碼如下:
  1. "pages":[
  2.     "pages/logs/logs",
  3.     "pages/index/index"               
  4.   ],
復制代碼


5. 主頁面
微信小程序教程入門篇【4】,MINA框架的視圖層邏輯層

上圖描述了啟動后,進入主頁面,小程序的調用流程。


  • 文件層

找尋在路徑【"pages/index/index"】中,后綴為.json,.js,.wxml,.wxss的文件,并進行整合。

  • 代碼層

對于路由后的主頁面,調用onLoad,onShow。該項目中代目如下:
  1. //index.js
  2.  
  3. //1. 獲取應用實例
  4. var app = getApp()
  5.  
  6. //2. Page() 函數用來注冊一個頁面。接受一個 object 參數,其指定頁面的初始數據、生命周期函數、事件處理函數等。
  7. Page({
  8.  
  9.   //3. 頁面的初始數據
  10.   data: {
  11.     motto: 'Hello World',
  12.     userInfo: {}
  13.   },
  14.  
  15.   //4. 事件處理函數,當用戶點擊該組件的時候,調用該事件處理函數。跳轉到logs頁面。
  16.   bindViewTap: function() {
  17.     wx.navigateTo({
  18.       url: '../logs/logs'
  19.     })
  20.   },
  21.  
  22.   //5. 頁面加載,一個頁面只會調用一次.
  23.   onLoad: function () {
  24.     console.log('onLoad')
  25.     var that = this
  26.     //調用應用實例的方法獲取全局數據
  27.     app.getUserInfo(function(userInfo){
  28.       //更新數據
  29.       that.setData({
  30.         userInfo:userInfo
  31.       })
  32.     })
  33.   }
  34.  
  35. })
  36.  
復制代碼

視圖層和邏輯層的交互是通過事件機制來實現的,上面代碼【4】所示為邏輯層的處理邏輯。事件代碼在視圖層如下所示:
  1. <view  bindtap="bindViewTap" class="userinfo">
  2.     <image class="userinfo-avatar" src="{{userInfo.avatarUrl}}" background-size="cover"></image>
  3.     <text class="userinfo-nickname">{{userInfo.nickName}}</text>
  4.   </view>
復制代碼

如上所示,從coding層面上講,事件機制由兩部分組成。其一在page相關的wxml文件中。其二在.js文件中,定義相應的處理函數,并通過函數名進行關聯識別。

6. logs頁面
  • logs頁面分析

logs.js代碼如下:
  1. //logs.js
  2.  
  3. //1. 加載模塊
  4. var util = require('../../utils/util.js')
  5.  
  6. Page({
  7.  
  8.   //2. Page() 函數用來注冊一個頁面。接受一個 object 參數,其指定頁面的初始數據、生命周期函數、事件處理函數等。
  9.   data: {
  10.     logs: []
  11.   },
  12.  
  13.   //3. 頁面加載,一個頁面只會調用一次.
  14.   onLoad: function () {
  15.     this.setData({
  16.       logs: (wx.getStorageSync('logs') || []).map(function (log) {
  17.         return util.formatTime(new Date(log))
  18.       })
  19.     })
  20.   }
  21.   
  22. })
  23.  
復制代碼
logs.wxml如下:
  1. <!--logs.wxml-->
  2. <view class="container log-list">
  3.  
  4.   <!-- wx:for 在組件上使用wx:for控制屬性綁定一個數組,即可使用數組中各項的數據重復渲染該組件。-->
  5.   <!-- block wx:for 渲染一個包含多節點的結構塊。-->  
  6.   <!-- 用 wx:for-item 可以指定數組當前元素的變量名。-->
  7.   <block wx:for="{{logs}}" wx:for-item="log">
  8.   
  9.     <text class="log-item">{{index + 1}}. {{log}}</text>
  10.   </block>
  11. </view>
  12.  
復制代碼

  • 主頁面和logs頁面之間的跳轉

微信小程序教程入門篇【4】,MINA框架的視圖層邏輯層

7. 小結

知識點:了解MINA框架的視圖層(View),邏輯層(App Service),及其之間的交互。
              了解事件的基本使用方式。
              了解界面之間的跳轉方式及棧空間。

8. 預告

了解并使用微信開發工具的調試功能。
重磅推薦:小程序開店目錄

第一部分:小商店是什么

第二部分:如何開通一個小商店

第三部分:如何登錄小商店

第四部分:開店任務常見問題

第五部分:小商店可以賣什么

第六部分:HiShop小程序特色功能

第七部分:小程序直播

第八部分:小程序收貨/物流

第九部分:小程序怎么結算

第十部分:小程序客服

第十一部分:電商創業

第十二部分:小程序游戲開發

主站蜘蛛池模板: 三级日韩|亚洲=aⅴ在线|成人精品玖玖资源在线播放|黄网在线免费观看|免费观看又色又爽又湿的软件|奇米四色888 | 国产91视频观看|尤物在线精品视频|真人与拘做受免费视频播放|网站一区二区|色屁屁=av|久久一区二区中文字幕 | 国产人妖在线|国产午夜福利在线播放|亚洲国产成人精品久久久国产成人|高柳の肉嫁动漫在线播放|日韩久久精品一区二区三区|精品偷自拍另类在线观看 | 女人一区|午夜成人毛片免费观看蜜桔视频|高清无码不用播放器=av|91性网|无码一区二区|一区二区三区三州在线观看视频 | 国产精品第一页在线播放|久久精品人人人人人人|亚洲精品一区久久久久一品=aV|欧美7777|美女全身赤裸裸免费网站|在线视频三区 | 国精产品W灬源码1688伊在线|在线观看肉片=aV网站免费|黄色生活毛片|免费看=av网页|亚洲色欧美国产综合|国产青青操 | 青青91视频|青娱乐极品视觉盛宴国产视频|宅男在线观看免费高清网站|午夜伦理一区|最新国产在线观看|黄色大片www | 蜜桃=av久久精品人人槡|国产一区二区不卡|色偷偷青青草|欧美精品成人一区二区在线观看|人妻妺妺窝人体色WWW聚色窝|欧美黄色免费视频 | 国产一区二区三区片|一区二区视频在线看|欧美=av在线|国产熟妇疯狂4P交在线播放|亚洲精品午夜无码专区|亚洲=aⅴ精品国产首次亮相 | 四虎国产精品永久入口|snh48国产大片永久|成年人免费在线观看视频网站|99久久婷婷国产综合精品首页|9977精品视频免费入口|国产日韩欧美精品一区二区 | 精品久久久久国产|欧美日在线|国产18一19sex性护士|不卡国产视频|j=ap=anese36hdxxxx日韩|欧美BBWHD老太大 | 色一色成人网|久草在线影|精品视频在线观看99|国产香蕉尹人视频在线|亚洲=a∨好看=av高清在线观看|亚洲欧美日本在线 | 中国女人FREEXXXXXXX|一色一伦一区二区三区的区别|亚洲αⅴ无码乱码在线观看性色|怡春院综合|精品人妻无码一区二区三区百度|国产精品wwwwww | 日本一二三区在线视频|91久久久久久久久|丁香五月天婷婷五月天男人天堂|人人澡人摸人人添|#NAME?|欧美群p视频 | 夜夜夜夜操18岁|c=aoporm超碰国产精品|扒开腿挺进湿润的花苞hd视频|激情三区|性bbwbbw日|爱爱免费视频 | 中国女人FREEXXXXXXX|一色一伦一区二区三区的区别|亚洲αⅴ无码乱码在线观看性色|怡春院综合|精品人妻无码一区二区三区百度|国产精品wwwwww | 成人一区二区三区免费视频|日本=a=a=a=a片毛片免费观蜜桃|在线观看亚洲欧美|日本一夲道无码不卡免费视频|穿乳环蒂环上锁调教老师|国产成人综合一区二区三区 | 苏畅在麻花传媒的代表作品|亚洲第一久久久|九色91福利|欧美一级网址|456欧美成人免费视频|亚洲狠狠干 | 亚洲狠狠婷婷综合久久蜜桃|国产成人精品福利网站人|爆乳美女脱内衣18禁裸露网站|免费一级特黄特色大片|欧美成人亚洲|国产精品麻豆v=a在线播放 | 日本公交车上xxxxhd少妇|五月开心六月伊人色婷婷|97国产suv精品一区二区62|久久99精品久久久久久久清纯|精品国产欧美日韩|黄色网页入口 | 18岁成人毛片|农村少妇kkkk7777|自拍偷拍国产|老妇女性较大毛片|成人在线日本|ig=ao激情视频 | chin=a熟妇老熟女hd|精品国产国产综合精品|成人亚洲精品777777ww|欧美日本一道本在线视频|欧美肥屁videossex精品|高潮毛片无遮挡高清免费视频 | 爱如潮水日本|宅男噜噜噜66网站高清|午夜宅男在线永久免费观看网|日日日干|国产成人精品一区二区三区无码|国产成人高清在线观看播放 | 美女=av影院|惊弦45集全免费815|日本免费人成视频播放|欧洲一区二区三区精品|亚洲国产精品久久无码中文字|欧美刺激性大交 | 欧美在线中文字幕|亚洲天堂成人|国产一区二区精品久久91|精品人妻无码一区二区三区GIF|久久亚洲精品情侣|国产成人在线影院 | 国产人妖在线|国产午夜福利在线播放|亚洲国产成人精品久久久国产成人|高柳の肉嫁动漫在线播放|日韩久久精品一区二区三区|精品偷自拍另类在线观看 | 国外精品视频在线观看免费|永夜星河免费观看|成人精品=av一区二区三区|老湿机香蕉久久久久久|日本=a级无毛|热久久一区 | 日日噜噜夜夜狠狠扒开双腿|欧美人成在线观看|美丽的姑娘免费观看在线播放|欧美性猛交xxxx乱大交密桃|亚洲精品国产字幕久久麻豆|日本裸交xx╳╳137大胆 | 91在线官网|亚洲日韩乱码中文无码蜜桃|仙武帝尊700集在线观看|99热精品首页|99九九精品视频|日韩超碰 | 久久亚色|久99久精品免费视频热|欧美人伦禁忌DVD放荡欲情|幻女free性俄罗斯毛片|国产精品一区二区三区免费观看|亚洲精品乱码久久久久久中文字幕 | 国产欧美日本=aⅤ精品|婷婷久久=av|免费观看的=av|国产精品一区二区x88=av|日本视频www|99热黄 | 99精品视频99|麻豆水蜜桃|极品美女高潮呻吟国产剧情91|午夜一区一品日本|一个色综合久久|国产欧美久久久久久久久 | 国产精品第一页在线播放|久久精品人人人人人人|亚洲精品一区久久久久一品=aV|欧美7777|美女全身赤裸裸免费网站|在线视频三区 | 国产7页|日韩不卡在线播放|国产精品丝袜美女|亚洲人成无码WWW久久久|狼色精品人妻在线视频|亚洲国产一区二区久久久777 | 九九爱精品|无码精品=a∨在线观看|岛国视频在线|3D动漫精品啪啪一区二区免费|妺妺窝人体色WWW聚色窝|99色视频在线 | 一级国产性感片|国产一区二区三区免费观看网站上|日韩欧美亚洲天堂|亚洲无码在线观看色网视频|亚洲国产午夜精品理论片|天天干伊人 | 蜜桃=aV少妇久久久久久高潮不断|国产精品VIDEOSSEX国产高清|亚洲成=aⅤ人片久青草影院按摩|夜色香影院|自拍视频区|超碰综合 | 国产成人=av一区|日本大片免=a费观看视频老师|在线观看高清视频|一机毛片|久久九九兔免费精品6|久久爽精品区穿丝袜 | 日日爱99|欧美成人黄激情免费视频|16—17女人毛片毛片同性|国产黄色免费片|久久久久国产精|欧美精品久久 | 区美毛片|国产精品久久久久久久久软件|亚洲精品欧美一区二区三区|国产性色|国产精品家庭影院|日韩中文第一页 性生大片免费观看668|亚洲成人=av影片|毛片大全真人在线|国产老女人高潮大全|中文字幕丰满|一本久久久久 | 精品日韩=av一区二区|一区二区三区毛片免费|免费妈妈的朋友|中文字幕日本一道|午夜精品久久久久久毛片|欧美一区二区三区免费在线观看 |