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

商城系統 注冊

小程序開發實用技巧——擴展 Page頁面對象

2018-07-25|HiShop
導讀:擴展 Page頁面對象 是小程序開發中很實用的技巧,需要如何開發呢?...

擴展 Page頁面對象 是小程序開發中很實用的技巧,需要如何開發呢?

小程序開發實用技巧——擴展 Page頁面對象
小程序是通過調用 Page 函數來注冊一個頁面的:

//index.js
Page({
  data: {
    text: "This is page data."
  },
  onLoad: function(options) {
    // Do some initialize when page load.
  },
  // Event handler.
  viewTap: function() {
    this.setData({
      text: 'Set some data for updating view.'
    }, function() {
      // this is setData callback
    })
  }
})
復制代碼

這里 Page 的作用相當于構造函數, Page 會初始化頁面對象(實例),然后將配置參數中的屬性 merge 到頁面對象上。

假設你封裝了個 http 模塊負責發出請求,你想在頁面對象中直接通過 this.http 引用這個模塊,就需要擴展頁面對象。要擴展一個對象,在 JavaScript 中的常見做法是擴展構造函數的 prototype 屬性,這是 Vue 很多插件的實現:

import axios from 'axios'
Vue.prototype.axios = axios
// 在 vue 組件中
this.axios.get(api).then(callback)
復制代碼

很不幸,在小程序中這個辦法無效。 Page 并不是普通的構造函數,底層還做了很多其他事情,沒辦法直接通過 Page.prototype 擴展頁面對象。

我們可以轉變思路,擴展傳進 Page 的配置對象。既然始終要通過調用 Page 注冊頁面,可以定義一個函數,這個函數會將收到的配置對象參數進行處理,然后再傳給 Page 。

// wxPage.js
import http from '../utils/http'

const wxPage = function(config) {
  config.http = http
  return Page(config)
}

export default wxPage
復制代碼

注冊頁面的時候改用這個 wxPage :

import Page from './wxPage'

Page({
  data: {
    text: "This is page data."
  },
  onLoad: function(options) {
    console.log(this.http) // 打印 http 模塊變量
    this.http.get(api).then(callback) // 直接調用 http 的方法
  },
})
復制代碼

直接修改 Page 函數

為了增強頁面對象,每個需要的頁面都得引入 wxPage 是一件不太省心的事;更多時候我們是在維護一個老項目,需要擴展每個原有的頁面對象,這時可以直接修改 Page :

const originalPage = Page //保存原來的Page
Page = function(config) { // 覆蓋Page變量
  config.http = http
  return originalPage(config)
}
復制代碼

一般來說,修改 Page 的時機是在 App onLoad 的時候。這樣原有的頁面不用修改,直接就能通過 this.http 拿到 http 。

通過擴展 Page 頁面對象實現常見需求

1. 給生命周期方法增加通用邏輯

有時我們希望在頁面注冊的 onLoad 階段執行一些通用的邏輯,例如埋點,打 log 等,這時可以改寫配置對象中的 onLoad 方法:

const originalPage = Page
Page = function(config) {
  const { onLoad } = config
  config.onLoad = function(onLoadOptions) {
    // 打 log、埋點……
    console.log('每個頁面都會打出這個log')
    if (typeof onLoad === 'function') {
      onLoad.call(this, onLoadOptions)
    }
  }
  return originalPage(config)
}
復制代碼

2. 獲取上一頁頁面對象

小程序中的頁面跳轉會形成一個頁面棧,棧中存放著每個頁面對象,可以通過getCurrentPages 方法獲得這個頁面棧??梢栽陧撁?nbsp;onLoad 的時候獲取這個頁面棧,然后取出倒數第二個對象,就是當前頁上一頁的頁面對象:

// 接上...
  const { onLoad } = config
  config.onLoad = function(onLoadOptions) {
    const pages = getCurrentPages()
    this.__previousPage = pages[pages.length - 2] // 將上一頁的頁面對象賦為this.__previousPage
    if (typeof onLoad === 'function') {
      onLoad.call(this, onLoadOptions)
    }
  }
  return originalPage(config)
復制代碼

這樣在頁面對象中可通過引用 this.__previousPage 獲取上一頁頁面對象的data及所有方法,這樣在一些只需要兩個頁面互動的情景下,當前頁直接調用上一個頁面對象的方法(相當于回調)后再返回,比通過全局狀態管理上一頁的數據要方便。

3. 跳轉頁面并傳遞數據到下一頁

這個不多說了,直接看代碼吧:

// 接上
config.navigateTo = function(url, params) { // 實現一個navigateTo方法,參數包括跳轉url和要傳遞的參數
  this.__params = params
  wx.navigateTo({ url })
}

config.onLoad = function(onLoadOptions) {
  const pages = getCurrentPages()
  this.__previousPage = pages[pages.length - 2] // 將上一頁的頁面對象賦為this.__previousPage
  if (this.__previousPage) {
    onLoadOptions.params = this.__previousPage.__params // 獲取上一頁面的__params賦給onLoad函數的options
    delete this.__previousPage.__params
  }
  if (typeof onLoad === 'function') {
    onLoad.call(this, onLoadOptions)
  }
}

// A 頁面跳轉 B 頁面
this.navigateTo('urlToB', { foo: 'bar' })

// B 頁面的 onLoad
Page({
  onLoad(options) {
    console.log(options.params) // { foo: 'bar' }
  }
})
復制代碼

就寫到這里吧,在使用原生方案開發的時候,這些技巧還是挺實用的。以后再寫寫怎樣構建小程序,使小程序支持文件預編譯、require npm 包等。

HiShop小程序工具提供多類型商城/門店小程序制作,可視化編輯 1秒生成5步上線。通過拖拽、拼接模塊布局小程序商城頁面,所看即所得,只需要美工就能做出精美商城。更多小程序商店請查看:小程序商店

電話咨詢 預約演示 0元開店
主站蜘蛛池模板: 老司机67194精品线观看|激情久久久|九九热视频在线播放|乱人伦人妻精品一区二区|欧美一区二区三区影视|日本高清不卡在线观看 | 欧美性高清bbbbbbxxxxx|一级毛片免费观看|亚洲国产日韩=a在线欧观看美|日韩欧美特一级大黄作=a毛片免费|影音先锋无码=aⅴ男人资源站|欧美粗大猛烈老熟妇 | 女同互慰高潮呻吟免费播放|精品视频在线99|国产美女视频免费的|国产另类ts人妖高潮|欧美黄色片免费观看|一起操视频在线观看 | 国产最新网站|亚洲美女一区|亚洲V欧美V国产V在线观看|国产精品乱码久久久久久1区2区|大地影视资源在线观看|国产精品扒开腿做爽爽爽日本无码 | 青青草网|chinese国语videos国产|久草99|久久久久亚洲=aV色欲=aV|青青草最新网址|一个色综合色 | 剑来高清视频在线观看|欧美一区二区日韩一区二区|亚洲欧美日韩成人高清在线一区|国模GOGO无码人体啪啪|加勒比东京热无码国产=aV|亚洲色图在线观看 | 精品国产91一区二区三区|55夜色66夜色国产精品|日韩久久久久久|一=a一片一级一片按摩师|91麻豆一区二区|成=av人片在线观看www | 一区二区三区日韩视频在线观看|日韩欧美在线观看一区|91精品一区二区三区久久|FREEZEFR=aME丰满人妻|亚洲=aV无码一区二区二三区|欧美综合区自拍亚洲综合绿色 | 狼人影院在线观看|成人免费观看视频大全|四虎成人精品永久免费=av|1区2区3区视频|有码在线播放|人妻被粗大猛进猛出国产 | 免费无码又爽又刺激高潮的动漫|欧美日日日|亚洲=aV无码一区二区三区在线播放|国产九九=av|中文字幕无码视频专区|中文字幕一区二区三区手机版 | 在线=a亚洲视频播放在线观看|男女吃奶做爰猛烈紧视频|一级精品毛片|欧美一级片免费看|蜜臀久久=av|美国成人在线 | 免费极品=aV一视觉盛宴|大陆少妇xxxx做受|懂色一区二区二区=av免费观看|女人的超长巨茎人妖在线视频|欧美激情国产精品视频一区二区|精产国品久久一二三产区区别 | 在线看免费观看=av|十九岁大学生日本在线播放|91在线看视频|欧美日韩国产综合新一区|韩日黄色毛片|刘亦菲精品国产亚洲人成 | 狼人影院在线观看|成人免费观看视频大全|四虎成人精品永久免费=av|1区2区3区视频|有码在线播放|人妻被粗大猛进猛出国产 | 蜜臀91精品一区二区三区|亚洲中出视频|啪啪玩小处雏女|精品日韩一区二区|久久婷婷综合色丁香五月|亚洲视频在线观看网站 | 久久永久免费人妻精品我不卡|日韩=a在线播放|韩国视频一区|天天干天天插天天操|亚洲色图视频在线观看|亚洲精品爱爱 | 1000部禁又爽又黄的禁片免费|一区二区三区在线免费视频|国产精国产精品|中文字幕人妻系列人妻有码|在线日韩免费|男女wwww | 龙珠z国语版普通话免费播放|人妻阿敏被老外玩弄系列|久久露脸国语精品国产91|国产成人午夜精品影院观看视频|91视频一区二区|国产高清露脸孕妇系列 | 久久伊人精品|91精品色|精产国品一区二区三区四区|日韩影视在线|国产男女猛烈无遮挡免费视频网站|成品片=a免免费人看 | 久久白虎|18禁成人网站免费观看|国产www视频在线观看|欧美黄色=a级大片|国产精品久久久久久久人人看|日韩精品毛片 | 成本人片在线观看免费网站|成年人视频网站在线|夜趣福利视频|免费观看的=av在线播放|亚洲欧美偷国产日韩|四虎.com | 播放黄色一级片|国产精品久久久久久久久免费软件|国产XXXXXX农村野外|午夜网址|成人无高清96免费|精品高清视频 | 粉嫩少妇内射浓精VIDEOS|免费nb=a在线观看|素人啪啪|俺也去久久|亚洲=av=av天堂=av在线网毛片|国产蜜月一区二区三区在线看 | 91在线国产观看|各种高潮VIDEOS|亚洲一区二区三区精品视频|中文字幕天堂在线|高清国产一区|欧美浓毛大泬视频 | 久久婷婷国产综合尤物精品|日日日噜噜噜|日本韩国欧美一级片|欧美一级二级在线观看|最新无码人妻在线不卡|国产精品入口夜色视频大尺度 | 欧洲亚洲综合一区二区三区|99国产精品久久|免费v=a国产高清大片在线|国产成人精品一区二三区在线观看|91麻豆精品国产91|欧美日韩福利视频 | 国产精品久久久久久久久久久久久久久久久|免费无遮挡无码永久在线观看视频|一个人在线观看免费视频www|欧美性猛交xxxx乱大交丰满|久久无码人妻一区二区三区午夜|色欲香天天天综合网站无码 | 日韩二区精品|亚洲操p|c=aoporn97免费公开视频|国产精品情侣高潮呻吟|免费国产内射|中文字字幕中文在线无码乱码 | 国产精品麻豆高潮刺激=a片|国产=aⅴ无码专区亚洲=av|草草在线视频|亚洲日韩精品无码专区加勒比|国产精品激情|成全视频观看免费高清第6季 | 国产高跟丝袜脚交视频|最短的距离是圆的高清在线观看|一区二区三区视频播放|国产精品黄页在线播放免费|#NAME?|精品国产乱码久久久久久中文 | 极品少妇x88|国产免费看福利|亚洲欧美国产另类首页|69xx免费播放|亚洲=aV无码天堂一区二区三区|国产真实乱在线更新 | 一级毛片国产|人妻激情偷乱一区二区三区|国产网红主播无码精品|国产一区黄色|东北成人网站|一本一道=aV无码中文字幕 | 中文区中文字幕免费看|欧美亚洲网站|luluhei噜噜嘿在线视频|成人xxxxx|#NAME?|精品午夜熟女人妻视频毛片 | 不够善良的我们在线观看|亚洲国产欧美在线成人=a=a=a=a|欧美视频一区在线观看|日日干=av|91亚洲精品久久久|九9热这里真品2 | 青娱乐极品视觉盛宴=av|国产成人=av无码片在线观看|国产网站入口|国产一区二区=av|星空天美mv视频大全免费观看|曰韩一级片 | 在线免费观看成年人视频|欧美日韩一区二区三区四区高清|激情免费看片|97久久超碰|www.蜜臀=av.com|亚洲=a一级 | 亚洲人成77777在线播放网站|逼逼久久|亚洲最大成人网4388xx|国产=a级黄色录像|日韩高清国产一区在线|无码综合天天久久综合网色吧影院 | 国产重口扩张91|桃色视频在线播放|亚洲自拍另类欧美丝袜|成人=av在线网站|色花=av|91影视大全 | 少妇被躁爽到高潮无码文|人人看人人摸|99国产欧美久久久精品|亚洲精品无码一区二区三区久久久|国产91导航|毛片在线网址 | 粗壮挺进邻居人妻无码|久久天天拍|#NAME?|日本亚洲黄色|久久精品国产只有精品96|日本成年人免费网站 | #NAME?|久久精品一二三影院|91看剧|欧美性色欧美=a在线视频|五月婷婷激情六月|成人免费一级=a久久 |