免费国产欧美国日产_少妇AV一区二区三区无码_蜜桃精品av无码喷奶水小说_jk18禁网站视频_精产国品一二三级产品区别_被夫の上司に犯波多野结衣_78m成人手机免费看_最爽最刺激18禁视频_偷偷色噜狠狠狠狠的777米奇

易優(yōu)GEO 重磅上線 ~ 一站式GEO優(yōu)化工具,讓豆包、文心一言、DeepSeek 在回答中主動(dòng)推薦你的品牌,搶占AI流量入口!  點(diǎn)擊查看

小程序模板網(wǎng)

微信小程序_將臃腫的單頁(yè)js文件拆開

發(fā)布時(shí)間:2018-04-20 11:29 所屬欄目:小程序開發(fā)教程

小程序中每一個(gè)頁(yè)面對(duì)應(yīng)一個(gè)Page()方法,我們需要把變量和組件的各種事件都寫在一個(gè)對(duì)象里,然后把對(duì)象作為這個(gè)參數(shù)傳遞給Page方法

如下定義

const object = {
 data: {
   nickName:'酷走天涯'
  },
 // 頁(yè)面加載完成調(diào)用這個(gè)方法
  onLoad: function (options) {
  },
  bindTopupEvent:function(event){
  },
 // 所有的綁定組件事件都要寫在這個(gè)地方,可能特別多
 ....

}

可能你要定義好多組件模塊,比如城市列表 訂單 支付 等 組件 我們需要重用的組件 我們當(dāng)然希望把組件的綁定事件抽離出來(lái),如下

order.wxml
order.js
order.wxss

先看看如何在頁(yè)面中分別引用這幾個(gè)文件,假設(shè)有一個(gè)主頁(yè)index

index.wxss 引入 order.wxss

@import "../../templates/order.wxss";

index.wxml 引入 oder.wxml

  <import src='../../templates/order.wxss'/>

index.js 引入 order.js

var order = require('../../templates/order.js')

我們想要想下面這樣使用,將擴(kuò)展組件的綁定事件引入進(jìn)來(lái)

Page(extend(order,object))

接下來(lái)我們就擴(kuò)展一個(gè)extend方法 創(chuàng)建一個(gè)extend.js 文件 專門寫這個(gè)方法,我們?cè)谄渌?yè)面js文件中也可以使用

var extend = function(a) {
    ([].slice.call(arguments, 1) || []).forEach(function(b) {
        if (b) for (var c in b) a[c] = b[c]
    })
    return  a
};
module.exports=extend;

注意一下

  1. a 代表第extend(arg1,arg2,arg3) arg1
  2. 當(dāng)然最好的調(diào)用方式為 Page(extend({},order,object))
  3. [].slice.call(arguments, 1) 將arguments 分割成數(shù)組 注意arguments不是數(shù)組類型,而是對(duì)象類型

有人可能會(huì)有下面的因?yàn)樵趏rder.js 文件 訪問(wèn) index.js 文件中變量?

order.js 中有如下方法

function pay(){
  // 獲取用戶的姓名
  const nickName =   this.data.nickName
}

order.js 文件和 index.js 沒有任何關(guān)系 為什么能調(diào)用index.js 文件的object 對(duì)象的data變量?

雖然 this.data 在order.js 文件中是不存在的 但是這個(gè)語(yǔ)法是沒有錯(cuò)誤的javascript 允許調(diào)用不存在的對(duì)象或者方法! 程序執(zhí)行的時(shí)候,調(diào)用的this.data 指的是index.js 文件中的定義的object對(duì)象的data變量,因?yàn)镻age方法已經(jīng)將兩者結(jié)合在一起了

注意一點(diǎn)非常重要,如果調(diào)用的方法 不是包含在Object中(Page(Object)),必須在order.js引入進(jìn)來(lái)

比如

var request = require('../../config/method')
你需要在order.js文件中調(diào)用request.pay() 方法


易優(yōu)小程序(企業(yè)版)+靈活api+前后代碼開源 碼云倉(cāng)庫(kù):starfork
本文地址:http://www.szcjxy.com/wxmini/doc/course/23797.html 復(fù)制鏈接 如需定制請(qǐng)聯(lián)系易優(yōu)客服咨詢: 點(diǎn)擊咨詢
在線客服