您當前位置>首頁 » 新聞資訊 » 小(xiǎo)程序相(xiàng)關 >
微(wēi)信小(xiǎo)程序轉百度、支付寶、快(kuài)應用(yòng)體≈(tǐ)驗
發表時(shí)間(jiān):2021-1-11
發布人(rén):葵宇科(kē)技(jì)
浏覽次數(shù):259
微(wēi)信小(xiǎo)程序出現(xiàn)後,衆多(duō)公司平台也(yě)紛紛推♣Ω出了(le)自(zì)家(jiā)的(de)小(xiǎo)程序(快(kuài)應用(yòng)),φ☆比如(rú)百度智能(néng)小(xiǎo)程序、支付寶小(xiǎo)程序、字節跳(tiào)動≈¥φ 小(xiǎo)程序以及國(guó)內(nèi)手機(jī)廠(c•£₽hǎng)商的(de)快(kuài)應用(yòng)等等。每家(jiā)∏ε↔♦小(xiǎo)程序(快(kuài)應用(yòng))平台都(dōu)有'¶€ (yǒu)各自(zì)的(de)流量入口,開(kāi)發者多(duō)上(s★λ hàng)傳一(yī)個(gè)平台,就(jiù)多(duō≈δ)一(yī)份流量來(lái)源。
各平台小(xiǎo)程序語法非常相(xiàng)近(jìn),"φ★業(yè)界已經有(yǒu)許多(duō)小(xiǎo)程序跨端解決<'方案。一(yī)種方式是(shì)從(cóng)已有(yǒu)的(de)微(wēi)信小(xiǎo £✔)程序出發,利用(yòng)轉換工(gōng)具(比如(rú) qa-adaptεδer, wx2swan, wx2my, antmove)轉換成目标小(xiǎo♥↓♠)程序的(de)代碼。另一(yī)種方式是(shì)利用(yòng)小(x♦iǎo)程序多(duō)端框架(比如(rú) taro, ↔'¥$uni-app, mpvue)開(kāi)發。
下(xià)面介紹第一(yī)種方式,如(rú)何基于已有←®§(yǒu)的(de)微(wēi)信小(xiǎo)程序,利用(yòα♥∞ng)轉換工(gōng)具生(shēng)成多(duō)端代碼。并以 IQOO 社區(qū)小$→♦(xiǎo)程序為(wèi)例,體(tǐ)驗下(xià)各✔©•平台的(de)轉換流程。
微(wēi)信 => 百度
百度小(xiǎo)程序官方文(wén)檔上(shàng)提供了(le) 轉換工(gōng)具 '®£$
支持兩種轉換形式: npm 命令行(xíng)
和(hé) 開(kāi)發工(gōng)具
npm 轉換
npm install -g wx2swan
wx2swan wxmp
輸出目錄會(huì)自(zì)動添加 _swan 後綴
終端中會(huì)同步打印 log 信息:
同時(shí),轉換的(de)代碼中會(huì)生(shēng)成 log 文(w♠♣★§én)件(jiàn)。包含三種 log:
log
├── error.json (沒法轉換過來(lái)的(de),目前不(bù)支持的(de),比δ×≥♣如(rú)百度暫未支持的(de)API,二次開(kāi)發時(shí)需要(¶₽ φyào)修改的(de))
├── info.json (搬家(jiā)工(gōng)具轉換操σ ∏作(zuò)的(de)log)
└── warning.json (根據經¥≥ 驗,有(yǒu)可(kě)能(néng)引起報(bào)錯( <♥cuò)的(de),二次開(kāi)發時(shí)候需要(yào)重點注意的(de))
error.json 例子(zǐ):
[{
"type": "delete api",
"file": "/Users/dev/packageAPI/pages/←★≠ bluetooth/bluetooth.js",
"row": 50,
"column": 10,
"before": "wx.onBluetoothAdapterStateChange(f §βunction (res) {\n if (res &&¥"λ res.available) {\n this.st ≈ ©artBluetoothDevicesDiscovery();\n }\n})",
"after": "",
"message": "wx.onBluetoothAdapterStateChange:沒有(yǒu)相α≠(xiàng)對(duì)應的(de)函數(shù)"
}]
開(kāi)發工(gōng)具轉換
轉換結果
嘗試了(le)幾個(gè)項目,都(dōu)能(néng)轉成百度←₹&小(xiǎo)程序,但(dàn)一(yī)般無法正常運§™行(xíng),需要(yào)手動修改幾處阻塞的(de)問∑←λ(wèn)題之後才能(néng)往下(xià)進行(xíng)。
遇到(dào)的(de)幾個(gè)問(wèn)題:
- 不(bù)支持 require('utils.js') ©這(zhè)種相(xiàng)對(duì)路(lù)徑的(de"≥Ω)寫法,需要(yào)手動改成 require('./utils.js')
- 不(bù)支持 require 變量,需要(yào)>Ω避免
- 不(bù)支持 plugin, 需要(yào)将其從(cóng) usin±÷↓✘gComponents 中移除,否則編譯報(bào)錯(cuò)
- 不(bù)支持微(wēi)信小(xiǎo)程序的(deπ←β ) miniprogram_npm, 需要(yào)手動修改 require 的&★≤☆(de)路(lù)徑
- 轉換工(gōng)具會(huì)直接删除不(bù)支持的(÷≥de) API, 需要(yào)留意轉換報(bào)告
解決完阻塞問(wèn)題後的(de)效果對(duì)比:
微(wēi)信 => 支付寶
轉換工(gōng)具:
- wx2my
- Antmov
wx2my
wx2my 支持 npm 命令行(xíng)和(hé) ♠vscode 插件(jiàn)形式。
npm 命令行(xíng)
npm i -g wx2my
wx2my wxmp
轉換過程的(de) log 較少(shǎo):

容易出現(xiàn)“轉換失敗”的(de)提示,不(bù)過還(h≈←δái)是(shì)有(yǒu)轉換代碼生(shēng)成。
不(bù)支持的(de) api 隻會(huì)在報(bào)告中體(tǐ)現(xiàn),不(≤™bù)會(huì)擅自(zì)删除代碼。
生(shēng)成的(de) todo.html 信息較β± 為(wèi)豐富,還(hái)可(kě)以跳(tiào)轉到(dào)文(wén)檔。
vscode 插件(jiàn)形式
- 搜索安裝插件(jiàn) wx2my
- 打開(kāi) vscode 命令面闆輸入 wx2my 或者直接在文(wén)件(jiàn←δ)欄 app.json 右鍵選擇 wx2my
轉換結果
提示轉換失敗,用(yòng) IDE 打開(kāi)轉換後代碼,無法正常↔♣φ∏展示頁面。

Antmove
Antmove 支持多(duō)種小(xiǎo)≥•程序間(jiān)的(de)相(xiàng)互轉換。
npm 命令行(xíng)形式:
npm i -g antmove
antmove wx-alipay -i IQOO_wx -o IQOO_my --env development
轉換報(bào)告顯示轉換得(de)很(hěn)成功λ∞≈↓。
vscode 插件(jiàn)形式
- 搜索安裝插件(jiàn) Antmove
- 打開(kāi) vscode 命令面闆輸入 Antmo₹δ©ve: Run antmove wx-alipay
- 選擇輸出路(lù)徑
轉換結果
雖然轉換報(bào)告顯示完全轉換,但(dàn)是(sh∞'₽ì)其實在 IDE 中無法正常預覽。編譯中有(yǒu)阻塞性的(de)報(bà>♣∞≥o)錯(cuò)。因為(wèi)微(wēi)信小(xiǎo)程序的(de) plug↓✔♥≥in 在支付寶中是(shì)無法使用(yòng)的(de),導緻編譯報(bào)錯(¶∑cuò)。
暫時(shí)删除引用(yòng)的(de) plugin 後,頁面可(kě)以大©ελ✘(dà)緻展示出來(lái):
微(wēi)信 => 快(kuài)應用(yòng)(兼容版)
微(wēi)信小(xiǎo)程序轉換快(kuài)應用(yòng)(兼容版)也(yě₽¥δ)支持兩種形式轉換
npm 命令行(xíng)
IDE 插件(jiàn)
詳細教程: 微(wēi)信小(xiǎo)程序轉快(kuài)應用(yòng)工€§$(gōng)具
npm 命令行(xíng)
-
npm i -g qa-adapter
-
adt [sourceDir] [destDir?optional]
- 會(huì)自(zì)動彈出轉換報(bào)告 report.ht↑∏©ml
- 在快(kuài)應用(yòng)開(kāi)發工(gōn→®$g)具中打開(kāi)預覽
IDE 插件(jiàn)
- 快(kuài)應用(yòng)中搜索安裝插件(jiàn) εΩhap-transformer
- 命令面闆,輸入 hap:transfer wechat minipro≥ ↑gram into Quick App
- 輸入源碼路(lù)徑和(hé)輸出路(lù)徑,點擊“轉換”
轉換效果
在 IDE 中打開(kāi)一(yī)樣遇到(dào)了(le) plugin 報(γ¥bào)錯(cuò)問(wèn)題,手動把 plugin 删除後就(jiù)可>☆∞(kě)以正常預覽頁面:
總結
- 目前市(shì)面上(shàng)的(de)小(xiǎo)程序語法、框架、組件(jiàn§↕§)、接口都(dōu)非常相(xiàng)近(jìn),利用(yòng)轉換工(gōng)•≈具,可(kě)以非常快(kuài)速地(dì)實現(xiàn)小(xiǎ₹÷o)程序多(duō)端開(kāi)發、上(shàng)線。代碼轉換基本是(sh쥥®☆)分(fēn)分(fēn)鐘(zhōng)的(de)事(shì)
- 各轉換工(gōng)具大(dà)差不(bù)差,大(dà)都('✔★dōu)支持 npm 命令行(xíng)的(de)模式,輸入命令±ε 一(yī)鍵轉換
- 利用(yòng)轉換工(gōng)具生(shēng)成的(de)目标代碼,和(hé)原來(δ&δlái)的(de)代碼結構一(yī)緻,具有(yǒu)非常好('Ω •hǎo)的(de)可(kě)讀(dú)性,方便對(du<£ì)目标平台做(zuò)針對(duì)性的(de)修改
- 現(xiàn)有(yǒu)的(de)轉換工(gōng)具還(hái)沒有(yǒu)完全覆蓋微(wē↕∏i)信的(de)特性,有(yǒu)些(xiē)微(wēi)信特有(yǒuσ✔)的(de)功能(néng)(比如(rú) plugin,miniprograε✔m_npm 等),沒有(yǒu)很(hěn)好(hǎo)的(d₽φe)轉換或者提示,需要(yào)人(rén)為(wèi)手動修改
- 微(wēi)信小(xiǎo)程序轉快(kuài)應用(yòng)工(gōng)具 ←>®≈ 提供了(le)另外(wài)一(yī)種快(kuà©<i)速接入快(kuài)應用(yòng)的(de)方式,而無需學習(xí)φ∞₹∏新語法
- 各小(xiǎo)程序(快(kuài)應用(yòng))¶×λ平台差異在所難免(比如(rú)百度不(bù)支持 require('utils.js') 這 ♣' (zhè)種相(xiàng)對(duì)路(lù)徑的(de)寫法、微(wēi)εε₽信的(de) plugin 不(bù)被其他(tā)平台支持),所以如(rú)果要¶¥"(yào)考慮多(duō)端,需要(yào)盡量采用(yòng)比較通(tōn±$g)用(yòng)的(de)特性和(hé)寫法,減少(shǎo)轉換後的(de)修改工πγ± (gōng)作(zuò)