微信小程序初探(一)文件結構與代碼分析

? ? ? 微信小程序是騰訊推出的一種全新的連接用戶與服務的方式,它實現了應用“觸手可及”的夢想,用戶掃一掃或搜一下即可打開應用。就在上一年,騰訊公司的微信開發者工具就加入了微信小程序的開發功能,然而,目前網絡上存在的微信小程序開發教程屈指可數,而微信公眾平臺上的官方文檔提供的教程又十分簡單。這令初學者在開發微信小程序時十分吃力,尤其是前端開發小白,它們在開發的過程中很容易陷入懵逼的狀態。所幸的是,筆者在前段時間參與了微信小程序的開發,在微信小程序的開發方面積累了部分經驗。因此,本著共同學習的理念,筆者斗膽寫下《微信小程序初探》的系列文章,望各位同僚與我共同學習,不足之處還望指正。


? ? 我們先來看一下開發工具提供給我們的案例


? ? ? ?在示例的主界面我們能看到三個最主要的部分,最左邊的是程序視圖,我們能夠直觀地看到我們設計出來的程序的面貌。中間就是文件列表。右邊就是編輯部分。本文將要主要介紹官方案例中各個文件的功能和作用。

一 ?認識各種文件格式


? ? ? ?從demo中我們能看到共有三個文件以及兩個目錄,我們先來看一下放在外面的三個文件。第一個就是 app.js 文件,也就是JavaScript文件,這一類文件的主要作用是充當微信小程序的腳本文件,開發者可以在 .js文件中監聽并處理小程序的生命周期函數、聲明全局變量。調用框架提供的豐富的 API

? ? ? ?第二個文件就是app.json文件,app.json文件是配置小程序是由哪些頁面組成,配置小程序的窗口背景色,配置導航條樣式,配置默認標題的重要文件。注意該文件不可添加任何注釋。

? ? ? ?第三個文件就是app.wxss文件,app.wxss文件是規定了小程序的樣式,它的原理和網頁開發當中的css樣式相當。我們可以在頁面組件的 class 屬性上直接使用 app.wxss 中聲明的樣式規則。當然,每個頁面也可以有屬于自己的私有的樣式文件。

? ? ? ?以上三者便是微信小程序中最重要的三個文件,接下來,我就要介紹另外兩個目錄,而這兩個目錄組成了微信小程序的各個頁面。在本文,我將著重介紹pages目錄


? ? ? pages目錄里面裝著的就是微信小程序的各個頁面的代碼。在這個demo里面總共有兩個頁面,一個是index,一個是logs。細心的讀者會發現,頁面的代碼文件組成與app的代碼文件組成十分類似,它們都有.js,.json以及.wxss文件,唯一不同的是頁面代碼文件有.wxml文件。.wxml文件的作用跟網頁開發里面的HTML有著相似之處。它定義了頁面的結構,這些結構包括了按鈕,文本等,它們是組成頁面必不可少的元素。可以這么說,.json和.wxss文件都是為.wxml文件服務的。

? ? ? ?值得一提的是,頁面的代碼文件里面,.js和.wxml文件是必不可少的,而.json和.wxss文件則是可選擇的。

? ? ? ?OK,那么微信小程序中的各個格式的文件的介紹就到這里了,接下來,筆者就會以官方提供的demo為例子,簡要地解釋各個文件里面的代碼含義。在這里筆者不會逐個逐個字句解釋,而是大概講解代碼中函數的含義,在以后的文章中,筆者會詳細講解。


二 簡要的代碼解釋

? ? ? ? 首先我們來看一下app.js文件。


? ? ? ?我們由頭來分析代碼,我們會發現整個app.js文件的代碼都包含在了APP({})當中,它的功能是注冊一個小程序,用以制定小程序的生命周期。

? ? ? ?往下走,看到onLaunch()函數。還記得我在上文中提到的小程序的生命周期嗎?這個函數代表的是小程序剛剛開始運行時所執行的內容。該函數的具體功能可以在官方提供的api中找到,這里我貼上一張圖,里面包含了onLaunch在內的多個代表了小程序生命周期的函數。有興趣的朋友可自行到微信公眾平臺查閱。

? ? ? ?那么在該app.js文件中,onLaunch函數充當了接收本地數據的角色。

? ? ? ?往下走,我們看到getUserInfo: function(cb)這里,我們只需知道,該函數的作用是接收用戶的信息并且調用登錄接口。沒接觸過JavaScript的朋友可以注意一下,函數名:function(形參)是js中函數聲明的方式。

? ? ? ?在getUserInfo: function(cb)函數的下方,我們可以看到globalData,顧名思義,他是微信小程序中的全局變量。


? ? ? ?在大致了解了app.js文件的代碼后,我們看一下app.json文件的代碼

? ? ? ?代碼很簡單,分為兩個部分,一個是pages,一個是window。pages聲明了該小程序由什么頁面組成的,比如,該小程序由兩個頁面組成。同時,pages也聲明了小程序的起始頁面,也就是放在最上面的頁面,pages/index/index。我們不妨試一下,改變上下順序會怎么樣。


? ? ? ?可以看到,程序的起始頁面改變了。

? ? ? ?我們再來看一下window,它聲明了背景文字樣式,導航欄的顏色,文字和字體顏色。我們修改一下,把navigationBarBackgroundColor改為#000,然后把navigationBarTitleText改為微信,再把navigationBarTextStyle改為white。


? ? ? ?顯而易見地,導航欄發生了變化。不僅如此,所有頁面的導航欄都會改變。不過,如果你想要改變單個頁面的導航欄樣式,你可以單獨修改頁面的json文件。

? ? ? ?接下來我們稍微了解一下app.wxss


? ? ? ?正如我上文所說,.wxss文件定義的是css樣式,而css樣式多如牛毛,我也不一一講述,新手可以自行試著修改demo中的樣式,并結合官方api學習。唯一需要知道的是,.container指的是該樣式的class名,開發者在wxml標簽中通過不同的class名來選擇不同的樣式。


? ? ? ? ?接下來,筆者將講解index.wxml文件。


? ? ? ?wxml文件與HTML的原理其實很接近,它們都是通過一個一個的標簽來把頁面構造出來的。首先,我們了解一下標簽,標簽就是上面代碼中有<>尖括號的代碼,標簽可以聲明頁面的基本元素如按鈕,文本,輸入框等。值得注意的是,wxml中的<view>標簽和HTML中的<div>標簽意思接近,大概就是指頁面的模塊,它們把頁面分成不同的模塊以方便開發者布局。仔細觀察可以發現,每個標簽中都有class這個東西,正如筆者在前文所說,它們其實是“選擇器”,選擇不同名字的樣式來顯示標簽元素。



? ? ? ?OK,本文到這里也差不多結束了,本文主要講述了微信小程序中的文件結構以及部分代碼的解析。我在這里沒有把所有頁面的js,json,wxss和wxml文件都講解一遍,原因是它們的原理和我上文所講的四個文件很接近,讀者可自行理解。不理解也沒關系,我在以后的文章中會詳細解析。

? ? ? ?第一次寫有關技術的博客,很多東西表達的不夠到位,望海涵。各位看官如果有什么好的建議請一定提出,筆者感激不盡。


最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 229,698評論 6 539
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 99,202評論 3 426
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 177,742評論 0 382
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,580評論 1 316
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 72,297評論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,688評論 1 327
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,693評論 3 444
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,875評論 0 289
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 49,438評論 1 335
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 41,183評論 3 356
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,384評論 1 372
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,931評論 5 363
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,612評論 3 348
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 35,022評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,297評論 1 292
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 52,093評論 3 397
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,330評論 2 377

推薦閱讀更多精彩內容