小程序中遇到的坑

小程序

如何去寫小程序:

  1. 原生的小程序
  2. 騰訊的wepy框架
  3. 美團(tuán)的mpvue框架
  4. 京東的taro框架
  5. h5適配移動(dòng)端

小程序里的幾個(gè)重要概念

  1. 應(yīng)用程序:每個(gè)應(yīng)用都有一個(gè)App()函數(shù)來(lái)注冊(cè)一個(gè)小程序旅掂,負(fù)責(zé)整個(gè)應(yīng)用的生命周期
  2. 頁(yè)面:Page()函數(shù)用來(lái)注冊(cè)一個(gè)頁(yè)面沛硅,其中主要用來(lái)管理頁(yè)面的生命周期跋选,數(shù)據(jù)以及處理函數(shù)。(重點(diǎn))

使用vue寫小程序

由于小程序的一些缺陷扑眉,比如不能組件化和不能使用第三方庫(kù)的原因市場(chǎng)上出來(lái)了一寫框架來(lái)編寫小程序。這些框架基于通過編譯和運(yùn)行時(shí)來(lái)將代碼轉(zhuǎn)義成小程序可識(shí)別的代碼秉撇。

wepy框架

使用wepy框架你需要哪些技能灵迫?

  • vue的基礎(chǔ)知識(shí)
  • 原生小程序的api和組件
  • wepy的一些語(yǔ)法規(guī)則

編譯過程

image

如何寫一個(gè)wepy的頁(yè)面

<script>
import wepy from 'wepy';

export default class Page extends wepy.page {
    config = {};
    components = {};

    data = {};
    methods = {};

    events = {};
    onLoad() {};
    // Other properties
}
</script>

<template>
    <view>
    </view>
</template>

<style lang="less">
/** less **/
</style>

如何寫一個(gè)組件

<template>
  <view>
  </view>
</template>

<script>
import wepy from 'wepy';
export default class Component extends wepy.component {
  components = {};
  data = {};
  methods = {};

  events = {};

}
</script>

<style lang="less">
/** less **/
</style>

組件中處了不需要config配置以及頁(yè)面特有的生命周期函數(shù)之外,其他屬性大致相同蚕愤。

組件的引用

<template>
    <child1></child1>
    <child2></child2>
</template>

<script>
    import wepy from 'wepy';
    import Child from '../components/child';

    export default class Index extends wepy.page {
        components = {
            child1: Child
            child2: Child
        };
    }
</script>

組件之間的頁(yè)面?zhèn)髦?/p>

  1. 靜態(tài)傳值
    靜態(tài)傳值只能傳遞常量數(shù)據(jù)答恶,只能傳遞字符串類型的數(shù)據(jù)
<child title="mytitle"></child>

// child.wpy
props = {
    title: String
};

onLoad () {
    console.log(this.title); // mytitle
}
  1. 動(dòng)態(tài)傳值
    
    // parent.wpy

<child :title="parentTitle" :syncTitle.sync="parentTitle" :twoWayTitle="parentTitle"></child>

data = {
    parentTitle: 'p-title'
};


// child.wpy

props = {
    // 靜態(tài)傳值
    title: String,

    // 父向子單向動(dòng)態(tài)傳值
    syncTitle: {
        type: String,
        default: 'null'
    },

    twoWayTitle: {
        type: String,
        default: 'nothing',
        twoWay: true
    }
    };
}

使用slot插槽

組件

<view class="panel">
    <slot name="title">默認(rèn)標(biāo)題</slot>
    <slot name="content">默認(rèn)內(nèi)容</slot>
</view>

page


<panel>
    <view slot="title">新的標(biāo)題</view>
    <view slot="content">
        <text>新的內(nèi)容</text>
    </view>
</panel>

mpvue框架

和wepy框架類可以參考官方文檔

使用react寫小程序

taro是由京東開源的一個(gè)多端開發(fā)解決方案,寫一處代碼通過Taro編譯工具將代碼分別編譯出可以在不同端運(yùn)行的代碼萍诱。采用與React一致的組件化思想悬嗓,組件生命周期與react保持一致,也支持JSX語(yǔ)法裕坊。

幾個(gè)優(yōu)點(diǎn):

  1. 支持第三方
  2. 支持ES規(guī)范
  3. 代碼提示很好包竹,好的太多了
  4. 支持使用redux,
  5. 小程序的一些Api的優(yōu)化
  6. 使用CSS預(yù)編譯器
  7. 代碼報(bào)錯(cuò)很友好,寫代碼體驗(yàn)增加了很多

一些缺點(diǎn):

  1. 不支持使用this.props.children這個(gè)特性
  2. 不能使用無(wú)狀態(tài)組件
  3. 不支持通過props傳入組件
  4. 不能再JSX參數(shù)中使用匿名函數(shù)

以上的缺點(diǎn)中都能在你編寫代碼的時(shí)候進(jìn)行一個(gè)提示碍庵,所以編寫代碼簡(jiǎn)直體驗(yàn)好的不要不要的映企。

函數(shù)防抖的應(yīng)用

函數(shù)防抖debounce利用閉包的特性和函數(shù)的延遲執(zhí)行來(lái)防止函數(shù)在一段時(shí)間內(nèi)的多次調(diào)用。

簡(jiǎn)單的實(shí)現(xiàn):

function debounce(fn, time) {
  let last = null
  return function () {
    const ctx = this
    const args = arguments
    clearTimeout(last)
    last = setTimeout(() => {
      fn.apply(ctx, args)
    }, time)
  }
}

具體應(yīng)用:

  1. input輸入框的onChange事件
  2. 模糊搜索的公司名稱

使用異步函數(shù)

wepy.showLoading({title: '加載中', mask: true, success: function() {
      console.log('dddd')
    }})
    setTimeout(() => {
      wx.hideLoading()
    }, 200);

上面的代碼中success回調(diào)并不會(huì)被執(zhí)行静浴,目前代碼中的使用的都是同步函數(shù)堰氓,或者使用async 和 await來(lái)編寫同步代碼∑幌恚可以使用wx.**的方式來(lái)代替双絮。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末浴麻,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子囤攀,更是在濱河造成了極大的恐慌软免,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,123評(píng)論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件焚挠,死亡現(xiàn)場(chǎng)離奇詭異膏萧,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)蝌衔,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,031評(píng)論 2 384
  • 文/潘曉璐 我一進(jìn)店門榛泛,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人噩斟,你說(shuō)我怎么就攤上這事曹锨。” “怎么了剃允?”我有些...
    開封第一講書人閱讀 156,723評(píng)論 0 345
  • 文/不壞的土叔 我叫張陵沛简,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我斥废,道長(zhǎng)椒楣,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,357評(píng)論 1 283
  • 正文 為了忘掉前任牡肉,我火速辦了婚禮撒顿,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘荚板。我一直安慰自己,他們只是感情好吩屹,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,412評(píng)論 5 384
  • 文/花漫 我一把揭開白布跪另。 她就那樣靜靜地躺著,像睡著了一般煤搜。 火紅的嫁衣襯著肌膚如雪免绿。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,760評(píng)論 1 289
  • 那天擦盾,我揣著相機(jī)與錄音嘲驾,去河邊找鬼。 笑死迹卢,一個(gè)胖子當(dāng)著我的面吹牛辽故,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播腐碱,決...
    沈念sama閱讀 38,904評(píng)論 3 405
  • 文/蒼蘭香墨 我猛地睜開眼誊垢,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起喂走,我...
    開封第一講書人閱讀 37,672評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤殃饿,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后芋肠,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體乎芳,經(jīng)...
    沈念sama閱讀 44,118評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,456評(píng)論 2 325
  • 正文 我和宋清朗相戀三年帖池,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了奈惑。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,599評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡碘裕,死狀恐怖携取,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情帮孔,我是刑警寧澤雷滋,帶...
    沈念sama閱讀 34,264評(píng)論 4 328
  • 正文 年R本政府宣布,位于F島的核電站文兢,受9級(jí)特大地震影響晤斩,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜姆坚,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,857評(píng)論 3 312
  • 文/蒙蒙 一澳泵、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧兼呵,春花似錦兔辅、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,731評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至懂昂,卻和暖如春介时,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背凌彬。 一陣腳步聲響...
    開封第一講書人閱讀 31,956評(píng)論 1 264
  • 我被黑心中介騙來(lái)泰國(guó)打工沸柔, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人铲敛。 一個(gè)月前我還...
    沈念sama閱讀 46,286評(píng)論 2 360
  • 正文 我出身青樓褐澎,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親伐蒋。 傳聞我的和親對(duì)象是個(gè)殘疾皇子乱凿,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,465評(píng)論 2 348

推薦閱讀更多精彩內(nèi)容

  • title: 小程序教程之wepy 參考文檔 中文文檔:https://tencent.github.io/wep...
    采香行處蹙連錢閱讀 11,908評(píng)論 8 24
  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 171,737評(píng)論 25 707
  • 【百日生涯營(yíng)DAY23】 保險(xiǎn)日:購(gòu)買合理的保障顽素,保障做好了才能談投資。你買了保險(xiǎn)了嗎徒蟆?你知道你需要買什么保險(xiǎn)嗎胁出?...
    伍羽卿桁閱讀 146評(píng)論 0 0
  • 我相信全蝶,一切的種子。只有經(jīng)過埋葬寺枉,才會(huì)有生機(jī)抑淫。有一天,我去世了姥闪,恨我的人始苇,翩翩起舞,愛我的人筐喳,眼淚如露催式。第二天我的...
    賤癌入骨閱讀 311評(píng)論 0 1
  • 黑馬荣月,對(duì)應(yīng)著“鱷魚大腦”(直覺),白馬多少有點(diǎn)不那么準(zhǔn)確地對(duì)應(yīng)著 “猴子大腦”(情緒)梳毙,而那個(gè)騎手哺窄,則好像很清楚地...
    俞燕文閱讀 151評(píng)論 0 0