一篇文章帶你走進微信小程序的開發世界

最近參加了互聯網公司舉辦的夏令營活動。在活動中,老師帶領我們學習了微信小程序的開發。學習過程中,老師的淳淳教誨讓我猶如發現了一塊新大陸。回到學校,思前想去,決定寫一篇小文,分享一下最近的學習心得。

學習之前,我特地在網上搜了一下微信小程序的定義:微信小程序(后文簡稱小程序)于2017年1月9日正式上線,它的英文名為Mini Program,相對于還需從手機應用商店下載并安裝的手機原生應用而言,它只需要用戶打開微信,掃二維碼或搜出來即可使用。同時,小程序依托于微信這個大平臺,用戶打開小程序的同時小程序就可以獲得用戶的信息,從而避免了注冊登錄這些相對繁瑣的功能。而用戶使用完之后,只需要關閉小程序就搞定,而不會像使用原生應用那樣:動不動就因為一件小事下載少則幾十兆多則上百兆的應用,而用完之后或直接刪除或閑置那里空占內存。所以,如果你喜歡一些簡單的應用,小程序可能是你不二的選擇。

而從一個前端開發者的角度出發,小程序的開發流程也很簡單。你只需用你的郵箱或電話注冊一個小程序開發賬號,再在微信服務平臺下載一個微信開發工具即可開始開發。但是,這里有一些需要注意,一個郵箱或電話只能注冊一個開發賬號,而一個開發賬號只能從小程序或者小游戲中選擇一個,當你選擇了一個就不能選擇另一個。所以,如果你既是小程序的開發者又是小游戲的開發者,你最好準備兩個開發賬號哦。

當你進行開發時,首先你需建立一個工程,在建立工程的時候,你需注意地是,是建立“普通快速啟動模板”還是“建立插件快速啟動模板”。這里,寫一般的小程序用“普通快速啟動模板”,而“插件快速啟動模板”當你寫小程序插件時就可以選擇。

而當你創建好工程進行開發的時,首先,你會發現這樣的目錄結構:

小程序基本目錄結構

這里,app.js是小程序的入口文件,在這里你首先要用App()函數注冊一個小程序。App() 函數接受一個 object 參數,用來指定小程序的生命周期等。object參數我用官網的一張截圖說明:

App()函數常見參數屬性

大家需要注意地是onLauch屬性,onLauch屬性用來監聽小程序的初始化,這里寫小程序加載時需要使用到的程序,例如,當進入小程序時獲取用戶信息等等。

app.json文件用來對微信小程序進行全局配置,設置頁面路徑、設置默認頁面的窗口表現、設置網絡超時時間、設置底部 tab 的表現,設置是否開啟 debug模式等,詳細用法你可以參考小程序官方文檔。這里,我給一個配置實例:

app.json常見全局配置屬性

app.wxss用來存放小程序的公共樣式表,例如,你想要你的小程序所有頁面的字體都有一樣的字體樣式、大小、顏色等,就可以在這里定義。

而project.config.json文件,你在工具上做的任何配置都會寫入到這個文件。當你重新安裝工具或者換電腦工作時,你只要載入同一個項目的代碼包,開發者工具就自動會幫你恢復到當時你開發項目時的個性化配置。而這些都是project.config.json文件的功勞。

utils用來存放整個小程序都要使用到了公共方法,例如,請求后臺接口的公共方法、時間日期的轉化方法等。

剩下的pages目錄是用來放小程序的每個頁面的,它分別由以.js、.wxml、.wxss、.json為后綴的文件組成(wxml、wxss你可以理解為html、css的別名)。這里,.js用來存放當前頁面的邏輯,.wxml用來存放當前頁面結構,.wxss用來存放當前頁面的樣式表,類似地,.json用來存放當前頁面的配置。舉個例子,你現在要寫一個音樂播放器的播放頁面,對于這個頁面你可以這樣定義,player.wxml,player.js,player.wxss,player.json。player.wxml可以將你想要實現的音樂播放器的頁面骨架搭建出來,而player.wxml則可以幫你實現你想要的播放器的樣式,play.js則可以讓你實現播放的控制功能,剩下地player.json可以讓你定義播放器頁面的一些獨立屬性,例如播放器頁面的頂部顏色、是否允許播放器頁面下拉刷新等。而如果你整個小程序的風格是藍色調的,那么你可以在 app.json 里邊聲明頂部顏色是藍色即可。在這里,有必要著重提一下.wxml,.wxss和.js這三個文件。首先,.wxml文件中并不是你寫html時需要的div、span、a等標簽。在html中,我們可以通過標簽千變萬化的組合再加上css和js的輔助來形成了我們網頁中想用的輪播圖、彈窗等組件,而小程序則在wxml幫我們封裝了這些組件。例如,輪播圖組件swiper,圖片組件image,存放文字信息的組件text等。而你只需要用的時侯利用好他們就ok了。此外,小程序還提供了地圖、視頻、音頻等等組件能力。有心的小伙伴可以再開發時候自己體會。

在.wxss中需要注意地是小程序新增了一個尺寸單位:rpx。在我們寫 CSS 樣式時,我們需要考慮到手機設備的屏幕會有不同的寬度和設備像素比,進而我們需要采用一些技巧來換算一些像素單位。而WXSS在底層支持新的尺寸單位rpx。這樣,開發過程中,開發過程中單位換算的煩惱,我們只要交給小程序底層來換算即可。但由于小程序換算采用的浮點數運算,所以運算結果會和預期結果有一點點偏差。

接下來,就要說到重頭戲.js了。在這里,你需要用Page() 函數注冊一個頁面。Page() 函數接受一個 object 參數,用來指定頁面的生命周期等。object參數我用一張官網截圖說明:

Page()函數常見參數屬性

這里,大家需要注意地是data、onLoad這幾個屬性,data用來定義頁面的初始數據,這些數據可以通過“數據綁定”的方式綁定到.wxml頁面中,onLoad用來監聽頁面的初始化。這里,你可以執行一些需要在頁面顯示之前就需要執行的方法,例如,小程序與后臺接口交互的方法等等。順便一提,onHide是在當前頁面被隱藏時執行的。例如,你寫了一個表單,當你提交后你需要把表單上的數據傳到另一個頁面,而這時當你返回填寫另一份表單時,你會發現之前表單輸入的值仍然存在。這時,你就可以在onHide中執行當表單頁面被隱藏時清除表單值的方法。

接著,你可能會疑問。在原生js寫法中,可以用getElemengtById()獲取元素,jQuery可以用$()的方式獲取頁面,哪怎樣在小程序中獲取頁面元素呢?而當你有這個疑問你可能要搜搜前端近期的發展動向了。這里,我就以現在國內比較流行的vue框架與小程序做對照來說明吧。在vue框架中,一切前端操作都是以數據作為驅動的,你要著重關心地是如何從后臺提供的接口中獲取數據并把這些數據綁定到前端并恰當地顯示出來。在小程序中,采用了一個和vue類似地weex框架。在學習過程中,我發現它跟vue很類似,例如,vue中你可以用v-for來做列表循環渲染,而小程序中你可以用wx:for,vue中你可以用v-if、v-else和v-else-if來做條件渲染,而在小程序中你可以用wx:if、wx:else和wx:elif來做條件渲染。而數據綁定,小程序和vue都可以用“{{}}”這樣的模板語法的方式來動態綁定文本值。對于事件操作,小程序中可以用bing+xx或者catch+xx來進行綁定。例如,bindtap是一個當你點擊.wxml標簽時觸發的事件,在被綁定元素上,你需要這樣定義:bindtap=”play”,然后在對應的.js文件的Page()函數中定義play()方法就ok了。而vue中則是用v-on來進行事件綁定。

另外,在小程序你也可以用template來定義模塊,然后用一個個模塊來拼裝成一個個頁面。這個在避免前端代碼冗余時很有幫助。

最后,以上就是我對于這次小程序學習的總結。如果你想學習小程序,希望這篇文章能夠給你帶來幫助。當然,在你閱讀文章時發現有疏漏的地方也請你指出來哦。

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

推薦閱讀更多精彩內容