小程序?qū)崙?zhàn)注意事項(xiàng)

一恕曲、backgroundImage不支持本地圖片引入

  • 使用網(wǎng)絡(luò)路徑切心;
  • 使用base64飒筑;
.bg{
    background-image:url(data:image/jpeg;base64,xxxxxx);
}
  • 使用image組件替代;

二绽昏、阻止事件冒泡

正常事件綁定使用的是bindtap协屡,但是該方法無法阻止事件冒泡,這樣就會觸發(fā)父元素綁定的事件全谤,小程序提供另一種方法來解決該問題肤晓,使用catchtap事件替換bindtap即可;其他事件同理认然,將bind換成catch补憾。

常見結(jié)構(gòu):

<navigator url='/pages/detail?id=10'>/*點(diǎn)擊跳轉(zhuǎn)商品詳情*/
     <image src="xxx"></image>
     <view>豪華雙人床</view>
     <view>這床又大又軟</view>
     <button catchtap='add'>加入購物車</button>/*點(diǎn)擊添加*/
</navigator>

三、事件傳參 target or currentTarget

target指觸發(fā)事件的目標(biāo)節(jié)點(diǎn)卷员,currentTarget指綁定事件的節(jié)點(diǎn)盈匾,當(dāng)事件綁定節(jié)點(diǎn)包含子節(jié)點(diǎn)時,使用currentTarget更加方便毕骡;

wxml:
/*刪除按鈕結(jié)構(gòu)*/
<view bindtap="delete" data-id="1">
     <image src="del_icon.png"></image>
     <text>刪除</text>
</view>

js:
Page({
  delete(e){
        e.currentTarget//必定是view節(jié)點(diǎn) 可以獲取當(dāng)前節(jié)點(diǎn)上攜帶的id
        e.target//如果點(diǎn)擊了內(nèi)部image則e.target是image
  }
})

四削饵、小程序入口頁面獲取參數(shù)

啟動小程序時參數(shù)通過wx.getLaunchOptionsSync().query訪問,啟動之后進(jìn)入通過options訪問未巫;

/pages/index/index
Page({
  onLoad(options){
      console.log(options.id)//啟動之后再次進(jìn)入時獲取所傳id參數(shù)(常見為點(diǎn)擊分享鏈接進(jìn)入)
      let options = wx.getLaunchOptionsSync();
      console.log(options.query.id)//獲取啟動時所傳id參數(shù)
  }
})

五窿撬、獲取用戶信息

調(diào)用 wx.getUserInfo 接口,無法彈出授權(quán)詢問框橱赠,默認(rèn)調(diào)用失敗尤仍,如果用戶曾經(jīng)授權(quán)過箫津,則可成功調(diào)用此方法狭姨,否則需要使用 button 組件,并將 open-type 指定為 getUserInfo 類型苏遥,獲取用戶基本信息饼拍。

wx.getSetting({
     success: res => {
           if (res.authSetting['scope.userInfo']) {//曾經(jīng)授權(quán)過
                this.getUserInfo();//調(diào)用相關(guān)接口獲取用戶信息
                this.setData({
                   canIUseUserInfo: true
                })
            }else{
                this.setData({
                   canIUseUserInfo: false//否則顯示button讓用戶點(diǎn)擊授權(quán)
                })
            }
      }
})

六、textarea遮擋問題

textarea屬于原生組件田炭,cover-view可以覆蓋在原生組件之上师抄,注意cover-view只能嵌套cover-viewcover-image教硫、button叨吮。

七辆布、去除button邊框

button組件邊框是偽元素:

button::after{ display: none;}

八、開發(fā)版真機(jī)調(diào)試

后臺服務(wù)器搭建后茶鉴,從開發(fā)者工具上設(shè)置不校驗(yàn)域名锋玲,就可以直接訪問服務(wù)器ip或域名,但是用手機(jī)預(yù)覽的時候無法進(jìn)行數(shù)據(jù)的交互涵叮,用手機(jī)掃描預(yù)覽后惭蹂,需要點(diǎn)擊小程序右上角---打開調(diào)試,然后重啟即可割粮!

九盾碗、掃碼調(diào)試(掃描二維碼進(jìn)入開發(fā)調(diào)試)

在開發(fā)的過程中可能會有這樣的場景,要求后臺生成小程序碼舀瓢,用微信掃描小程序碼帶參數(shù)進(jìn)入一個頁面廷雅,但是生成的小程序碼是線上的正式版本,小程度還沒有上線 沒有辦法調(diào)試氢伟;在開發(fā)工具中點(diǎn)擊對應(yīng)按鈕選擇小程序碼榜轿,即可模擬整個過程。


image.png

十朵锣、getCurrentPages訪問頁面實(shí)例谬盐,進(jìn)行頁面?zhèn)髦?/h4>

對于頁面之間傳值,最簡陋的方式是借助本地存儲诚些,一個頁面存飞傀,其他頁面取,也可以使用狀態(tài)管理工具诬烹,但是會有種矯枉過正的感覺砸烦。大部分場景都是父子頁面?zhèn)髦担鶕?jù)實(shí)際情況可以使用小程序提供的方式绞吁,一級=>二級(路徑后攜帶參數(shù))幢痘,二級=>一級(getCurrentPages訪問上級頁面實(shí)例)

//列表頁
Page({
  data:{
    list:[]
  }
})
//點(diǎn)擊按鈕進(jìn)入添加頁面
Page({
  add(){
      let pages=getCurrentPages();//獲取頁面棧中所有頁面實(shí)例;
      let page_list=pages[pages.length-2]//獲取上個頁面實(shí)例 length-1指最后一個頁面也就是當(dāng)前頁面家破;
      page_list.setData({
          list:pages_list.data.list.concat("新內(nèi)容")
      })
  }
})

十一颜说、長列表渲染setData數(shù)據(jù)量大時,導(dǎo)致卡頓(數(shù)據(jù)詞典)

小程序數(shù)據(jù)通信需要Native 的 JSBrigde 做中轉(zhuǎn)汰聋,橋接渲染層和邏輯層门粪,每當(dāng)小程序視圖數(shù)據(jù)需要更新時,邏輯層會調(diào)用小程序提供的 setData 方法將數(shù)據(jù)從邏輯層傳遞到視圖層烹困,經(jīng)過一系列渲染步驟之后完成UI視圖更新玄妈,當(dāng)setData傳遞數(shù)據(jù)量比較大的時候,就會引發(fā)渲染性能問題。減少setData數(shù)據(jù)量和調(diào)用頻率是目前開發(fā)者可以主動干預(yù)的步驟拟蜻。

  • 數(shù)據(jù)詞典
Page({
  data:{
    person:{
      name:"veb",
      age:20
    }绎签,
    list:[{
       title:"西瓜"
    }]
  },
  changeName(){
    //常規(guī)寫法 取出person修改name字段,然后setData更新頁面
    let person=this.data.person;
    person.name="Veblen";
    this.setData({//傳入整個修改后的對象
      person
    })
    //數(shù)據(jù)詞典
    this.setData({//通過數(shù)據(jù)關(guān)系 更新指定字段
      'person.name':'Veblen'
    })
    //同理
    this.setData({//通過數(shù)據(jù)關(guān)系 更新指定字段
      'list[0].title':'Veblen'
    })
  }
})
  • 長列表優(yōu)化
    將數(shù)據(jù)劃分為二維數(shù)組結(jié)構(gòu)
Page({
  data:{
    list:[]
  },
  getNextPage(){
    let newList=[];
    //常規(guī)寫法  list:[{},{},{}]
    this.setData({
      list:this.data.list.concat(newList)
    })
    // 優(yōu)化 list:[[{},{}],[{},{}]]
    let index=this.data.list.length-1;
    this.setData({//指定索引位置賦值新數(shù)組酝锅,索引為length指定最后一個元素之后的位置
      ['list['+index+']']:newList//注意:對象屬性為表達(dá)式時需要用[]包裹
    })
  }
})

加油辜御!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市屈张,隨后出現(xiàn)的幾起案子擒权,更是在濱河造成了極大的恐慌,老刑警劉巖阁谆,帶你破解...
    沈念sama閱讀 206,214評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件碳抄,死亡現(xiàn)場離奇詭異,居然都是意外死亡场绿,警方通過查閱死者的電腦和手機(jī)剖效,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,307評論 2 382
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來焰盗,“玉大人璧尸,你說我怎么就攤上這事“揪埽” “怎么了爷光?”我有些...
    開封第一講書人閱讀 152,543評論 0 341
  • 文/不壞的土叔 我叫張陵,是天一觀的道長澎粟。 經(jīng)常有香客問我蛀序,道長,這世上最難降的妖魔是什么活烙? 我笑而不...
    開封第一講書人閱讀 55,221評論 1 279
  • 正文 為了忘掉前任徐裸,我火速辦了婚禮,結(jié)果婚禮上啸盏,老公的妹妹穿的比我還像新娘重贺。我一直安慰自己,他們只是感情好回懦,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,224評論 5 371
  • 文/花漫 我一把揭開白布气笙。 她就那樣靜靜地躺著,像睡著了一般粉怕。 火紅的嫁衣襯著肌膚如雪健民。 梳的紋絲不亂的頭發(fā)上抒巢,一...
    開封第一講書人閱讀 49,007評論 1 284
  • 那天贫贝,我揣著相機(jī)與錄音,去河邊找鬼。 笑死稚晚,一個胖子當(dāng)著我的面吹牛崇堵,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播客燕,決...
    沈念sama閱讀 38,313評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼鸳劳,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了也搓?” 一聲冷哼從身側(cè)響起赏廓,我...
    開封第一講書人閱讀 36,956評論 0 259
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎傍妒,沒想到半個月后幔摸,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,441評論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡颤练,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,925評論 2 323
  • 正文 我和宋清朗相戀三年既忆,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片嗦玖。...
    茶點(diǎn)故事閱讀 38,018評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡患雇,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出宇挫,到底是詐尸還是另有隱情苛吱,我是刑警寧澤,帶...
    沈念sama閱讀 33,685評論 4 322
  • 正文 年R本政府宣布器瘪,位于F島的核電站又谋,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏娱局。R本人自食惡果不足惜彰亥,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,234評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望衰齐。 院中可真熱鬧任斋,春花似錦、人聲如沸耻涛。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,240評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽抹缕。三九已至澈蟆,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間卓研,已是汗流浹背趴俘。 一陣腳步聲響...
    開封第一講書人閱讀 31,464評論 1 261
  • 我被黑心中介騙來泰國打工睹簇, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人寥闪。 一個月前我還...
    沈念sama閱讀 45,467評論 2 352
  • 正文 我出身青樓太惠,卻偏偏與公主長得像,于是被迫代替她去往敵國和親疲憋。 傳聞我的和親對象是個殘疾皇子凿渊,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,762評論 2 345