最近接到一個工做任務,是把釘釘小程序轉微信小程序...css
對,竟然還有這種操做,以前只聽過微信小程序轉支付寶小程序的,釘釘轉微信是什麼鬼😿node
實際操做以後發現,並非太複雜。nodeJS加vscode全局替換,很快就能改完。git
之因此沒有所有寫成程序來執行,一是由於我對兩邊的api不是太熟,這個項目也是新接手的,業務邏輯徹底不熟,寫程序耗費時間過久且很差排查錯誤;二是經過逐個api的報錯修改,能夠整理兩個小程序差別點,同時儘快熟悉業務代碼。
修復原有釘釘小程序的bug,加上轉爲微信小程序一共花費4個工做日的時間,原來預期是10個工做日,因此這個效率是能夠接受的。github
釘釘小程序和支付寶小程序幾乎沒有差異,最主要的是支付寶小程序全局變量 my
, 釘釘小程序對應爲 dd
。而釘釘小程序的文檔不如支付寶小程序詳細,因此看文檔直接看支付寶小程序的就能夠了。小程序
如今開始把釘釘轉微信啦!微信小程序
首先第一步是把文件後綴名改了,axml改成wxml,wxss改成acss;api
這一步能夠用JS腳本執行。
代碼地址緩存
依然是axml改成wxml,wxss改成acss,採起全局替換便可。微信
釘釘能夠引用絕對路徑,可是微信在wxml和js中只能引用相對路徑,層級須要手動修改下。網絡
釘釘小程序和支付寶小程序基本上沒有區別,把 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 |