微信小程序開發(fā)(框架)

1. 邏輯層

1.1 注冊小程序

  • 注冊小程序示例
    每個小程序都需要在 app.js 中調(diào)用 App 方法注冊小程序示例,綁定生命周期回調(diào)函數(shù)懂缕、錯誤監(jiān)聽和頁面不存在監(jiān)聽函數(shù)等。
  • 獲取全局唯一的 App 示例
    整個小程序只有一個 App 實例,是全部頁面共享的磕瓷。開發(fā)者可以通過 getApp 方法獲取到全局唯一的 App 示例硝桩,獲取App上的數(shù)據(jù)或調(diào)用開發(fā)者注冊在 App 上的函數(shù)沿猜。

1.2 注冊頁面

  • 注冊頁面示例
    對于小程序中的每個頁面,都需要在頁面對應(yīng)的 js 文件中調(diào)用 Page 方法注冊頁面示例碗脊,指定頁面的初始數(shù)據(jù)啼肩、生命周期回調(diào)、事件處理函數(shù)等衙伶。
  • 拓展
    除了 Page 祈坠,作為高級用法,頁面可以像自定義組件一樣使用 Component 來創(chuàng)建矢劲,這樣就可以使用自定義組件的特性赦拘,如 behaviors 等。

1.3 頁面生命周期

Page實例的生命周期.png

1.4 頁面路由

說明:在小程序中所有頁面的路由全部由框架進行管理芬沉,框架以棧的形式維護了當(dāng)前的所有頁面躺同。
(1) 路由方式


路由的觸發(fā)方式以及頁面生命周期函數(shù).png

說明:

  • navigateTo, redirectTo 只能打開非 tabBar 頁面阁猜。
  • switchTab 只能打開 tabBar 頁面。
  • reLaunch 可以打開任意頁面蹋艺。
  • 頁面底部的 tabBar 由頁面決定剃袍,即只要是定義為 tabBar 的頁面,底部都有 tabBar捎谨。
  • 調(diào)用頁面路由帶的參數(shù)可以在目標(biāo)頁面的onLoad中獲取民效。

(2) 發(fā)生路由切換時對應(yīng)的頁面棧的表現(xiàn)

路由方式和對應(yīng)頁面棧的表現(xiàn).png

(3) 獲取當(dāng)前頁面棧
開發(fā)者可以使用 getCurrentPages 函數(shù)獲取當(dāng)前頁面棧。

1.5 模塊化

  • 公共代碼模塊化
    可以將一些公共的代碼抽離成為一個單獨的 js 文件侍芝,作為一個模塊研铆。模塊只有通過 module.exports 或者 exports 才能對外暴露接口。在需要使用這些模塊的文件中州叠,使用 require 將公共代碼引入棵红。
  • 文件作用域
    在 JavaScript 文件中聲明的變量和函數(shù)只在該文件中有效;不同的文件中可以聲明相同名字的變量和函數(shù)咧栗,不會互相影響逆甜。通過全局函數(shù) getApp 可以獲取全局的應(yīng)用實例,如果需要全局的數(shù)據(jù)可以在 App 中設(shè)置致板。

1.6 API

說明:小程序開發(fā)框架提供豐富的微信原生 API交煞,可以方便的調(diào)起微信提供的能力,如獲取用戶信息斟或,本地存儲素征,支付功能等。通常萝挤,在小程序 API 有以下幾種類型:

  • 事件監(jiān)聽 API:以 on 開頭的 API 用來監(jiān)聽某個事件是否觸發(fā)
  • 同步 API:以 Sync 結(jié)尾的 API 都是同步 API
  • 異步 API:大多數(shù) API 都是異步 API御毅,如 wx.requestwx.login
    備注1:異步 API 接口通常都接受一個 Object 類型的參數(shù)
    Object參數(shù)說明.png

    備注2:success怜珍,fail端蛆,complete 函數(shù)調(diào)用時會傳入一個 Object 類型參數(shù)
    回調(diào)函數(shù)的參數(shù).png

2. 視圖層

2.1 WXML

說明:WXML(WeiXin Markup Language)是框架設(shè)計的一套標(biāo)簽語言,結(jié)合基礎(chǔ)組件酥泛、事件系統(tǒng)今豆,可以構(gòu)建出頁面的結(jié)構(gòu)。WXML 具有什么能力如下:

2.2 WXSS

說明:WXSS (WeiXin Style Sheets)是一套樣式語言柔袁,用于描述 WXML 的組件樣式呆躲。WXSS 具有 CSS 大部分特性,同時為了更適合開發(fā)微信小程序瘦馍,WXSS 對 CSS 進行了擴充以及修改歼秽,WXSS 擴展的特性有:
(1)新增了尺寸單位 rpx:rpx可以根據(jù)屏幕寬度進行自適應(yīng)
(2)提供了全局的樣式和局部樣式
(3)僅支持部分 CSS 選擇器
(4)樣式導(dǎo)入
使用@import語句可以導(dǎo)入外聯(lián)樣式表,@import后跟需要導(dǎo)入的外聯(lián)樣式表的相對路徑情组,用;表示語句結(jié)束燥筷。
(5)內(nèi)聯(lián)樣式:框架組件上支持使用 style箩祥、class 屬性來控制組件的樣式

  • style:靜態(tài)的樣式統(tǒng)一寫到 class 中。style 接收動態(tài)的樣式肆氓,在運行時會進行解析袍祖,請盡量避免將靜態(tài)的樣式寫進 style 中,以免影響渲染速度谢揪。
  • class:用于指定樣式規(guī)則蕉陋,其屬性值是樣式規(guī)則中類選擇器名(樣式類名)的集合,樣式類名不需要帶上.拨扶,樣式類名之間用空格分隔凳鬓。

WXSS補充說明參考微信小程序開發(fā)(微信小程序與普通網(wǎng)頁開發(fā)的區(qū)別和聯(lián)系)中的第2.3節(jié)WXSS 樣式。

2.3 WXS

說明:WXS(WeiXin Script)是小程序的一套腳本語言患民,結(jié)合 WXML缩举,可以構(gòu)建出頁面的結(jié)構(gòu)。

2.4 基礎(chǔ)組件

說明:框架為開發(fā)者提供了一系列基礎(chǔ)組件匹颤,開發(fā)者可以通過組合這些基礎(chǔ)組件進行快速開發(fā)仅孩。
(1) 組件介紹

  • 組件是視圖層的基本組成單元。
  • 組件自帶一些功能與微信風(fēng)格一致的樣式印蓖。
  • 一個組件通常包括 開始標(biāo)簽 和 結(jié)束標(biāo)簽辽慕,屬性 用來修飾這個組件,內(nèi)容 在兩個標(biāo)簽之內(nèi)赦肃。

注意:所有組件與屬性都是小寫溅蛉,以連字符-連接
(2) 屬性類型

屬性類型.png

(3) 公共屬性:所有組件都有的屬性
所有組件都有的公共屬性.png

(4)特殊屬性:幾乎所有組件都有各自定義的屬性,可以對該組件的功能或樣式進行修飾他宛,請參考各個組件的定義

2.5 事件系統(tǒng)

2.5.1 事件介紹

  • 事件是視圖層到邏輯層的通訊方式温艇。
  • 事件可以將用戶的行為反饋到邏輯層進行處理。
  • 事件可以綁定在組件上堕汞,當(dāng)達到觸發(fā)事件,就會執(zhí)行邏輯層中對應(yīng)的事件處理函數(shù)晃琳。
  • 事件對象可以攜帶額外信息讯检,如 id, dataset, touches。

2.5.2 事件的使用方式

  • 在組件中綁定一個事件處理函數(shù)
  • 在相應(yīng)的Page定義中寫上相應(yīng)的事件處理函數(shù)卫旱,參數(shù)是event

2.5.3 使用WXS函數(shù)響應(yīng)事件

WXS響應(yīng)事件

2.5.4 事件詳解

(1) 事件分類

  • 冒泡事件:當(dāng)一個組件上的事件被觸發(fā)后人灼,該事件會向父節(jié)點傳遞
  • 非冒泡事件:當(dāng)一個組件上的事件被觸發(fā)后,該事件不會向父節(jié)點傳遞

(2) 事件綁定和冒泡:事件綁定的寫法同組件的屬性顾翼,以 key投放、value 的形式

  • key 以bind或catch開頭,然后跟上事件的類型适贸,如bindtap灸芳、catchtouchstart
  • value 是一個字符串涝桅,需要在對應(yīng)的 Page 中定義同名的函數(shù)(不然當(dāng)觸發(fā)事件的時候會報錯)

備注:bind事件綁定不會阻止冒泡事件向上冒泡,catch事件綁定可以阻止冒泡事件向上冒泡烙样。如下例:點擊 inner view 會先后調(diào)用handleTap3和handleTap2(因為tap事件會冒泡到 middle view冯遂,而 middle view 阻止了 tap 事件冒泡,不再向父節(jié)點傳遞)谒获,點擊 middle view 會觸發(fā)handleTap2蛤肌,點擊 outer view 會觸發(fā)handleTap1。

<view id="outer" bindtap="handleTap1">
  outer view
  <view id="middle" catchtap="handleTap2">
    middle view
    <view id="inner" bindtap="handleTap3">
      inner view
    </view>
  </view>
</view>

(3) 事件的捕獲階段
(4) 事件對象
說明:如無特殊說明批狱,當(dāng)組件觸發(fā)事件時裸准,邏輯層綁定該事件的處理函數(shù)會收到一個事件對象。


事件對象的屬性.png
  • 區(qū)別target和currentTarget


    區(qū)別target和currentTarget.png
  • dataset
    在組件中可以定義數(shù)據(jù)赔硫,這些數(shù)據(jù)將會通過事件傳遞給 SERVICE炒俱。 書寫方式: 以data-開頭,多個單詞由連字符-鏈接卦停,不能有大寫(大寫會自動轉(zhuǎn)成小寫)如data-element-type向胡,最終在 event.currentTarget.dataset 中會將連字符轉(zhuǎn)成駝峰elementType。

3. 場景值

說明:場景值用來描述用戶進入小程序的路徑惊完。完整場景值的含義請查看場景值列表僵芹。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市小槐,隨后出現(xiàn)的幾起案子拇派,更是在濱河造成了極大的恐慌,老刑警劉巖凿跳,帶你破解...
    沈念sama閱讀 211,817評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件件豌,死亡現(xiàn)場離奇詭異,居然都是意外死亡控嗜,警方通過查閱死者的電腦和手機茧彤,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,329評論 3 385
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來疆栏,“玉大人曾掂,你說我怎么就攤上這事”诙ィ” “怎么了珠洗?”我有些...
    開封第一講書人閱讀 157,354評論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長若专。 經(jīng)常有香客問我许蓖,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,498評論 1 284
  • 正文 為了忘掉前任膊爪,我火速辦了婚禮自阱,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘蚁飒。我一直安慰自己动壤,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 65,600評論 6 386
  • 文/花漫 我一把揭開白布淮逻。 她就那樣靜靜地躺著琼懊,像睡著了一般。 火紅的嫁衣襯著肌膚如雪爬早。 梳的紋絲不亂的頭發(fā)上哼丈,一...
    開封第一講書人閱讀 49,829評論 1 290
  • 那天,我揣著相機與錄音筛严,去河邊找鬼醉旦。 笑死,一個胖子當(dāng)著我的面吹牛桨啃,可吹牛的內(nèi)容都是我干的车胡。 我是一名探鬼主播,決...
    沈念sama閱讀 38,979評論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼照瘾,長吁一口氣:“原來是場噩夢啊……” “哼匈棘!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起析命,我...
    開封第一講書人閱讀 37,722評論 0 266
  • 序言:老撾萬榮一對情侶失蹤主卫,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后鹃愤,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體簇搅,經(jīng)...
    沈念sama閱讀 44,189評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,519評論 2 327
  • 正文 我和宋清朗相戀三年软吐,在試婚紗的時候發(fā)現(xiàn)自己被綠了瘩将。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,654評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡凹耙,死狀恐怖鸟蟹,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情使兔,我是刑警寧澤,帶...
    沈念sama閱讀 34,329評論 4 330
  • 正文 年R本政府宣布藤韵,位于F島的核電站虐沥,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜欲险,卻給世界環(huán)境...
    茶點故事閱讀 39,940評論 3 313
  • 文/蒙蒙 一镐依、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧天试,春花似錦槐壳、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,762評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至带兜,卻和暖如春枫笛,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背刚照。 一陣腳步聲響...
    開封第一講書人閱讀 31,993評論 1 266
  • 我被黑心中介騙來泰國打工刑巧, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人无畔。 一個月前我還...
    沈念sama閱讀 46,382評論 2 360
  • 正文 我出身青樓啊楚,卻偏偏與公主長得像,于是被迫代替她去往敵國和親浑彰。 傳聞我的和親對象是個殘疾皇子恭理,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,543評論 2 349

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

  • 因新工作主要負(fù)責(zé)微信小程序這一塊,最近的重心就移到這一塊闸昨,該博客是對微信小程序整體的整理歸納以及標(biāo)明一些細(xì)節(jié)點蚯斯,初...
    majun00閱讀 7,326評論 0 9
  • 1.小程序起步 (1)點擊https://mp.weixin.qq.com/wxopen/waregister?a...
    GXW_Lyon閱讀 3,323評論 0 0
  • 廢土博客 目錄 如何在低版本調(diào)用高版本的API拍嵌,同時完全不影響高版本API的功能 如何在低版本調(diào)用高版本的API,...
    一塊豆腐閱讀 186評論 0 0
  • 第五章-----區(qū)塊鏈在非金融行業(yè)的應(yīng)用 一循诉、區(qū)塊鏈+醫(yī)療行業(yè) 二横辆、區(qū)塊鏈+保險行業(yè) 三、區(qū)塊鏈+能源行業(yè) 物聯(lián)網(wǎng)...
    讀書游輪閱讀 88評論 0 1
  • 今天故事的主人翁來自于我的一位好同學(xué),我們兩個是發(fā)小划纽,關(guān)系非常好脆侮,上學(xué)期間經(jīng)常一起上下課、去食堂等勇劣。過年期間靖避,我們...
    拉丁女神閱讀 199評論 0 1