乾貨 | Taro 開發微信小程序入門與實戰

  • 2019 年 11 月 21 日
  • 筆記

微信小程序是以微信為運行環境的一種應用,其實質是 Hybrid 技術的應用,Hybrid App 即混合模式移動應用介於 Web APP、Native APP 這兩者之間的應用。與 H5 類似,但又比 H5 擁有很多原生的能力,比如攝像頭、陀螺儀、NFC、調用位置信息等。小程序的原生開發方式用的也是 JavaScriptHTMLCSS 語言。

技術選型

如果追求極致的性能又沒有多終端適配的需求,推薦使用小程序原生的開發方式來開發。

如果你是 Vue 開發者,但又不想過多的折騰,繼續沿用 Vue 的開發方式來開發小程序,那麼用 mpvue 將會是你的最明智的選擇。同時也支持一些第三方 UI 庫,這就給一些需要講求速度的小程序開發者提供了便利。mpvue 2.0 在 微信小程序 的基礎上增加了對 百度智能小程序、頭條小程序 和 支付寶小程序 的支持。

對於 React 愛好者來說,Taro 將是你開發小程序的不二選擇,Taro 是第一款用 React 語法寫小程序的框架,一直在不斷的迭代和快速的成長,官方團隊還給開發者提供了 Taro-UI 庫,同時支持將 微信小程序 轉為 Taro 項目以及 Taro 代碼與微信小程序代碼混寫

叨叨了這麼多,回到分享的主題,下面將會詳細介紹 如何使用 Taro 開發微信小程序

一:安裝 Taro 開發工具 @tarojs/cli

二:使用命令創建模板項目

可以根據自己的需要,選擇是否使用ts, sass或者less, 接着等安裝好依賴,項目就構建完成;

框架的使用和注意事項,文檔中有介紹,我這邊主要寫一些項目配置和踩過的坑;

這裡需要先安裝一些依賴

代碼規範 .prettierrc

.prettierignore

樣式規範:.stylelintrc.js

.stylelintignore

**/dist

.tslint.json

再加上自己配置一個.gitignore文件,就這樣,我們將大致需要的配置文件都配置好了;看看效果:

當有不規範的代碼提交的時候

把所有問題都解決之後提交,當然tslint以及其他的一些配置都是自定義的,可以自己配置。覺得麻煩的可以根據自己的「口味」配置項目。

然後我們就可以愉快的開發我們的項目,運行npm run dev:weapp,打開我們的小程序

很多人反饋用原生的 Taro.request或者用第三方axios等等做異步請求總會有錯,我沒親測,但是自己用promise封裝了方法, 在根目錄src文件夾下創建utils文件夾, 在這裡我簡單的模擬微信授權登錄,以及檢測session是否過期,綁定用戶的場景寫一個大概例子,接口為虛構:

http.ts代碼如下:

api.ts

index.ts (自定義公共處理接口文件)

最後在pages/index/index.tsx中引用就好了

整個框架的使用大致就是這樣了,react的書法風格還是挺舒服的,如果習慣了vue的寫法可能剛開始會不習慣,有興趣的可以嘗試嘗試,下面再簡單的把一些小技巧給補上:

一:圖片以模塊的方式的引入

使用ts搭建的項目,引入靜態資源,比如圖片,會提示找不到模塊,這時候就必須將圖片聲明為一個模塊:

在types目錄的global.d.ts文件下:

declare module 『*.png』 {   const img: any   export default img  }
二:動態添加style
<View style={{backgroundImage: `url(${bgImg})`}}></View>

三:動態添加class

四:this的指向問題

1)在 Taro 的頁面和組件類中,this 指向的是 Taro 頁面或組件的實例,如果我們要引用原生組件,需要使用到this的時候,如果如下引用:

Taro.createCanvasContext(canvasId, this.$scope)  wx.createLivePlayerContext(liveId, this.$scope)

錯誤:wx.createLivePlayerContext(liveId, this)這樣引入是沒有效果的,this並不是指向 wx.createLivePlayerContext.

(當前版本沒有liveplayer的回調方法,所以直接用原生wx)

五:全局樣式問題

全局原始app.scss 只會影響到頁面級別的文件,組件的獲取不到全局的樣式,

可以在組件內部import 全局樣式文件,但是這裡就有可能,多個組件都引入全局,生成多份全局樣式文件