釘釘/支付寶小程序和微信小程序的區別及轉換方案

最近接到一個工作任務,是把釘釘小程序轉微信小程序...

對,居然還有這種操作,之前只聽過微信小程序轉支付寶小程序的,釘釘轉微信是什麼鬼😿

實際操作之後發現,並不是太複雜。nodeJS加vscode全局替換,很快就能改完。

之所以沒有全部寫成程序來執行,一是因爲我對兩邊的api不是太熟,這個項目也是新接手的,業務邏輯完全不熟,寫程序耗費時間太久且不好排查錯誤;二是通過逐個api的報錯修改,可以整理兩個小程序差異點,同時儘快熟悉業務代碼。
修復原有釘釘小程序的bug,加上轉爲微信小程序一共花費4個工作日的時間,原來預期是10個工作日,所以這個效率是可以接受的。

1. 修改文件後綴名

釘釘小程序和支付寶小程序幾乎沒有差別,最主要的是支付寶小程序全局變量 my, 釘釘小程序對應爲 dd。而釘釘小程序的文檔不如支付寶小程序詳細,所以看文檔直接看支付寶小程序的就可以了。

現在開始把釘釘轉微信啦!

首先第一步是把文件後綴名改了,axml改爲wxml,wxss改爲acss;

這一步可以用JS腳本執行。
代碼地址

2. 修改文件內部引用文件的後綴名

依然是axml改爲wxml,wxss改爲acss,採取全局替換即可。

3. 修改文件中import路徑

釘釘可以引用絕對路徑,但是微信在wxml和js中只能引用相對路徑,層級需要手動修改下。

4. API修改

釘釘/支付寶小程序與微信小程序的區別

釘釘小程序和支付寶小程序基本上沒有區別,把 dd改爲my即可。以下我整理了一下釘釘小程序和微信小程序的區別,其實不是太大,遇到問題查一下文檔就能解決。

相比之下,釘釘小程序的編輯器非常難用,很容易預覽白屏,需要重啓編輯器,這一點真的很難接受。

api描述 釘釘小程序 微信小程序
點擊事件綁定 onTap bindtap
失去焦點 onBlur bindblur
本地緩存 dd.getStorageSync({key: 'score'}).data wx.getStorageSync('score')
toast提示 dd.showToast({content: '請填寫名稱'}) wx.showToast({title: '請填寫名稱',icon:'none'}) ,如果不設置icon:none,會默認顯示成功的圖標
時間選擇器 dd.datePicker 微信裏沒有此方法,可以通過picker-view組件實現
模板語法 a: wx:
網絡請求header參數 dd.request中爲headers wx.request中爲header
事件對象 e.target.dataset.recordId 微信會轉成小寫字母e.target.dataset.recordid
子組件需要調用父組件的某個方法 父組件可以將函數作爲屬性傳遞給子組件,子組件通過props接收 目前只能通過父組件事件監聽,子組件通過triggerEvent觸發父組件自身的方法
圖片/文件上傳 dd.chooseImage成功回調中,圖片的本地臨時文件路徑列表屬性名爲filePaths wx.chooseImage成功回調中,圖片的本地臨時文件路徑列表屬性名爲tempFilePaths
上傳文件uploadFile dd.uploadFile 參數對象中,name屬性非必傳 wx.uploadFile 參數對象中,name屬性必傳,作爲文件對應的 key,開發者在服務端可以通過這個 key 獲取文件的二進制內容
登錄 調用my.getAuthCode獲取授權碼 wx.login調用接口獲取登錄憑證(code)。通過憑證進而換取用戶登錄態信息,包括用戶的唯一標識(openid)及本次登錄的會話密鑰(session_key)等。
滾動選擇器組件 picker-view 初始加載時能通過value值設置默認選中位置 初始加載時不能通過value值設置默認選中位置,感覺是微信的bug
自定義組件 Component定義屬性用props Component定義屬性用properties

分類: 

發佈了45 篇原創文章 · 獲贊 23 · 訪問量 1萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章