強烈推介的幾個微信小程序開發小技巧,提效又實用

2020-09-03 前端講武堂

前段時間在下開發了個微信小程序,開發過程中總結了一些我覺得對我有用的小技巧,提煉出來,相當於一個總結復盤,也希望可以幫助到大家。如果對大家確實有幫助,別忘了點讚哦 ~

  1. 微信開發者工具版本:1.03.2006090(2020-06-19)
  2. 基礎庫版本:v2.12.1 (2020-08-04)

1. 開發中可能遇到的坑以及 Tips

本來想寫個小技巧的,結果我總結了一堆坑,沒上手之前完全想像不到微信小程序的開發體驗是如此之差、如此之爛,從微信開發者工具到所謂的「全新語言」,都有一種濃濃的半成品的 five 即視感,實在讓我 emmm.... 另外我發現網上的小程序文章大部分都是如何使用和如何避坑的實用文,而不是技巧文,這也從側面反映了小程序的坑多。

在微信小程序原生開發過程中,我不斷發出這樣的疑問「為什麼堂堂技術人才多如牛毛的騰訊,會推出如此 laji」,很多弱智反人類的地方,在兩三年前社區就已經提出來,官方回復已經反饋正在修復中,但幾年過去了,還是沒有音信,官方回復仍然是一句冷冰冰的「已反饋」

  1. 微信開發者工具經常熱更新不起作用甚至白屏,重新編譯也不行,只能強行退出後再次打開;
  2. 跟上一條類似,有時候一點樣式出錯,預覽整個都白屏,調試器裡也不說哪裡的問題,直接就給你棄療不顯示,重新編譯也無法解決問題,只能強行退出後再次打開;
  3. 跟上一條類似,調試器裡報的錯經常沒什麼用,驢頭不對馬嘴,讓人很難定位問題;
  4. Android 端自定義 Tabbar 在下拉刷新的時候,也會跟著屏幕一起往下移,而且是無法繞過的 Bug,自定義 Tabbar 樣式都寫好了的我又改成自帶的 Tabbar 了!
  5. import 的路徑不支持絕對路徑,比如你希望引用 utils/fetch.js,在不管多深的組件裡面你都要慢慢 ../ 點到根目錄,同樣 .wxss 文件 @import 導入文件時也只能使用相對路徑,所以就會出現 ../../../../../../utils/fetch.js 這種東西;
  6. 靜態資源路徑不能有漢字,有漢字就無法加載;
  7. .wxs 文件不支持 ES6,只能使用蹩腳的 ES5 寫法;
  8. .wxml 中只能引入 .wxs 文件不能引入 .js 文件???
  9. 模板 {{}} 中連方法都不能執行,只能處理簡單的運算如 + - * /,如果遇到數據需要 filter 的場景,需要在 .js 文件中預先格式化好再一個個 setData,比如經常寫的 [2,3,4].includes(type),居然都跑不起來!
  10. .wxs 文件中無法使用 Date 對象,所以不能 new Date(),只能使用蹩腳的 getDate 方法,正則也是一樣,生成正則對象需要使用 getRegExp 函數 getRegExp(pattern[, flags]);
  11. .wxs 中可以調用其它 .wxs 文件,並且只能 require 調用 .wxs 文件,引入的文件必須使用相對路徑;
  12. setData 連一個對象合併都懶得做,如果 data: {a: {b: 1, c: 1}},那麼 setData({a: {b: 2}}) 就會丟失 a.c 的值,真是讓人火冒三丈啊,還要 setData({[&39;: 2]}) 這樣才行;
  13. IOS 上 Date 對象獲取任意時間參數比如 getDay、getTime 都為 NaN,是因為 IOS 的 Date 構造函數不支持 2018-04-26 這種格式的日期,必須轉換為 2018/04/26 這種格式才會顯示正常;
  14. 開發版小程序有時候請求莫名其妙發不出去,右上角三個點 enable debug 打開「開發調試」之後就莫名其妙能發出去請求了,在多部手機上都是這樣,不明真相。

2. 微信請求 Promise 化

2.1 使用現成的庫

安裝 Promise 庫 wx-promise-pro,記得一定要帶 -s 或 --production,要不然無法構建成功。

npm i -S wx-promise-pro

然後在 app.js 中:

import { promisifyAll } from &39;promisifyAll() // promisify all wx apiApp({ ... })

之後就可以正常使用了:

wx.pro.showLoading({ title: &39;, mask: true}) .then(() => console.log(&39;))

2.2 自己實現

其實我們可以自己來實現一個這樣的庫,原理很簡單,以原生 API 的 wx.request 為例:

// 原生 API 使用方式wx.request({ url: &39;, // 請求的 url data: {}, // 參數 method: &39;, // post、get success: res => { // 請求成功回調函數,res為回調參數 }, fail: res => { // 請求失敗回調函數,res為回調參數 }})

如果我們將其 Promise 化,應該的調用方式希望是:

// Promise 化後的期望使用方式wx.pro.request({ url: &39;, // 請求的 url data: {}, // 參數 method: &39; // post、get}) .then(res => { // 請求成功回調函數,res為回調參數 }) .catch(res => { // 請求失敗回調函數,res為回調參數 })

並且 then 函數返回的是一個 Promise 對象,讓這個函數可以不斷鏈式調用下去,所以首先需要 new 出來一個 Promise 對象:

function request(opt) { return new Promise((resolve, reject) => { wx.request({ ...opt, success: res => { resolve(res)}, fail: res => {reject(res)} }) })}

這裡代碼我們可以進一步改進,由於 success、fail 這裡傳入的參數只是由 resolve、reject 方法執行了下,所以可以直接傳入 resolve、reject 方法即可。

另外,由於其他小程序原生 API 格式一致,所以我們可以使用柯裡化方法,來將其他需要進行 Promise 化的 API 進行處理:

function promisify(api) { return (opt = {}) => { return new Promise((resolve, reject) => { api({ ...opt, fail: reject, success: resolve }) }) }}

然後,將柯裡化方法執行的結果作為新的 Promise 化的 API 掛載到 wx.pro 對象上:

// 將指定 API 進行 Promise 化wx.pro.request = promisify(wx.request)// 使用wx.pro.request({...}) .then(...)

然後為了方便我們使用其他方法,可以循環將 wx 對象上可以被 Promise 化的方法比如 request、scanCode、showToast、getUserInfo 等一一掛載到 wx.pro 對象上,使用時可以直接 wx.pro.xx,由於這個方法執行返回的是一個 Promise 對象,因此可以像其它 Promise 化的對象那樣使用。

事實上,不知不覺,我們就自己實現了 wx-promise-pro 的源碼,這個庫的核心代碼也就是上面那這幾行

2.3 在項目中使用

有了上面的工具後,我們可以將其使用在項目中,為了不在項目中遍布 wx.request 或 wx.pro.request 這裡可以簡單進行封裝,新建兩個文件如下:

// utils/api/fetch.js 封裝請求方法、請求攔截器const app = getApp()const BaseUrl = &39;const TokenWhiteList = [ &39; // 不需要鑑權的api手動添加到這裡]/** * 設置請求攔截器 * @param params 請求參數 */const fetch = (params = {}) => { // 攔截器邏輯 if (!TokenWhiteList.includes(params.url)) { params.header = { &39;: &39;, // 默認值 &39;: app.globalData.token || &39; } } if (params.url.startsWith(&39;)) { // 拼接完整URL params.url = BaseUrl + params.url } // 返回promise return wx.pro.request({ ...params }) .then(({ data: { code, message, data } }) => { // ... 各種異常情況的邏輯處理 // 與後端約定 code 20000 時正常返回 if (code === 20000) return Promise.resolve(data) return Promise.reject(message) })}export { fetch }

然後再將所有 API 封裝到單獨的文件中集中管理:

// utils/api/apis.js 封裝所有請求 APIimport { fetch } from &39;/* 根據微信code獲取用戶信息 */const appUserGetByCode = ({ code } = {}) => fetch({ url: &39;, data: { code }})/* 掃碼登錄 */const appUserQrLogin = ({ qrCode } = {}) => fetch({ method: &39;, url: &39;, data: { qrCode }})/* 個人信息 */const appUserInfo = () => fetch({ url: &39;})/* 系統參數獲取,數據字典 */const appSysParamListByParam = () => fetch({ url: &39;})/* 數據字典所有 */const appSysParamListAll = () => fetch({ url: &39;})export { appSysParamListAll, // 數據字典所有 appSysParamListByParam, // 系統參數獲取,數據字典 appUserGetByCode, // 根據微信code獲取用戶信息 appUserQrLogin, // 掃碼登錄 appUserInfo // 個人信息}

在要使用 API 的地方就可以這樣引入:

import * as Api from &39; // 相對路徑// 使用方式Api.appSysParamListAll() .then(({ dataList }) => this.upData({ sysParamList: dataList })) .then(() => { const keyList = this.data.sysParamList.map(T => T.key) this.upData({ keyList, formData: { keys: keyList } }) })

使用方式就很舒服,這裡使用到了 upData,就是下面我要介紹的內容,是在下非常推介的小程序工具~

3. setState 修改 data 中想修改對象的屬性

在小程序中,data 是不能直接操作的,需要使用 setData 函數。鑑於微信小程序開發時 setData 的使用體驗十分蹩腳,我使用了個庫函數 wx-updata,這個庫函數在開發的時候對我很有幫助,這裡特意推介給大家。

3.1 為什麼要使用 wx-updata

你在使用 setData 的時候,是不是有時候覺得很難受,舉個簡單的例子:

// 你的 datadata: { name: &39;, info: { height: 140, color: &39; }}

如果要修改 info.height 為 155,使用 setData 要怎麼做呢:

// 這樣會把 info 裡其他屬性整不見了this.setData({ info: { height: 155 } })// 你需要取出 info 對象,修改後整個 setDataconst { info } = this.datainfo.height = 155this.setData({ info })

似乎並不太複雜,但如果 data 是個很大的對象,要把比較深且不同的對象、數組項挨個改變:

data: { name: &39;, info: { height: 140, color: &39;, desc: [{ age: 8 }, &39;, &39;, { dog: &39;, color: &39; }] }}

比如某個需求,需要把 info.height 改為 155,同時改變 info.desc 數組的第 0 項的 age 為 12,第 3 項的 color 為灰色呢?

// 先取出要改變的對象,改變數字後 setData 回去const { info } = this.datainfo.height = 155info.desc[0].age = 12info.desc[3].color = &39;this.setData({ info })// 或者像某些文章裡介紹的,這樣可讀性差,也不太實用this.setData({ &39;: 155, &39;: 12, &39;: &39;})

上面這兩種方法,是我們平常小程序裡經常用的,和其他 Web 端的框架相比,就很蹩腳,一種濃濃的半成品感撲面而來,有沒有這樣一個方法:

this.upData({ info: { height: 155, desc: [{ age: 12 }, , , { color: &39; }] }})

這個方法會幫我們深度改變嵌套對象裡對應的屬性值,跳過數組項裡不想改變的,只設置我們提供了的屬性值、數組項,豈不是省略了一大堆蹩腳的代碼,而且可讀性也極佳呢。

這就是為什麼我在上線的項目中使用 wx-updata,而不是 setData

wx-updata 的原理其實很簡單,舉個例子:

this.upData({ info: { height: 155, desc: [{ age: 12 }] }})// 會被自動轉化為下面這種格式,// this.setData({// &39;: 155,// &39;: 12,// })

原來這個轉化工作是要我們自己手動來做,現在 wx-updata 幫我們做了,豈不美哉!

3.2 wx-updata 使用方式

在一般情況下,我們可以將方法直接掛載到 Page 構造函數上,這樣就可以在 Page 實例中像使用 setData 一樣使用 upData 了:

// app.js 中掛載import { updataInit } from &39; // 你的庫文件路徑App({ onLaunch() { Page = updataInit(Page, { debug: true }) }})// 頁面代碼中使用方式this.upData({ info: { height: 155 }, desc: [{ age: 13 }, &39;], family: [, , [, , , { color: &39; }]]})

有的框架可能在 Page 對象上進行了進一步修改,直接替換 Page 的方式可能就不太好了,wx-updata 同樣暴露了工具方法,用戶可以在頁面代碼中直接使用工具方法進行處理:

// 頁面代碼中import { objToPath } from &39; // 你的庫文件路徑Page({ data: { a: { b: 2}, c: [3,4,5]}, // 自己封裝一下 upData(data) { return this.setData(objToPath(data)) }, // 你的方法中或生命周期函數 yourMethod() { this.upData({ a: { b: 7}, c: [8,,9]}) }})

針對修改數組指定項的時候,可能存在的跳過數組空位的情況,wx-updata 提供了 Empty 的 Symbol 類型替位符,還有數組的對象路徑方式,感興趣可以看看 wx-updata 的文檔,也可以參考 <開發微信小程序,我為什麼放棄 setData,使用 upData> 這篇介紹文章。

另外,使用了 wx-updata 也還可以使用原來的 setData,特別是有時候要清空數組時,靈活使用,可以獲得更好的小程序開發體驗,祝大家小程序開發愉快

4. 使用 scss 寫樣式

4.1 Webstorm 配置方法

關於蹩腳的 .wxss 樣式,我使用 webstorm 的 file watcher 工具把 scss 文件監聽改動並實時編譯成 .wxss 文件,感覺比較好用,這裡給大家分享一下我的配置:

然後記得在 .gitignore 文件中加入要忽略的樣式:

*.scss*.wxss.map

這樣在上傳到 git 的時候,就不會上傳 scss 文件了~ 當然如果你的團隊成員需要 scss 的話,還是建議 git 上傳的時候也加上 scss 文件。

這樣設置之後,一個組件在本地的會是下面這樣

本地文件

其中我們需要關注的就是 .js、.json、.scss、.wxml 文件,另外的文件 .wxss 會在你改動 .scss 文件之後自動生成並更新,而 .wxss.map 是插件自動生成的映射關係,不用管。

如果不是使用 webstorm,可以直接執行命令 sass --watch index.scss:index.wxss -s expanded,命令行如果關閉,sass 命令就不會監聽文件的變動然後編譯,所以最好用編輯器的插件。

同理,也可以使用 less、stylus 等預編譯語言。

4.2 Visual Studio Code 配置方法

萬能的 VSC 當然也可以做到這個功能,搜索並下載插件 easy sass,然後在 setting.json 中修改/增加配置:

&34;: [ { &34;: &34;, &34;: &34; }, { &34;: &34;, &34;: &34; }]

上面 expanded 是編譯生成的 .wxss 文件,下面 compressed 是壓縮之後的 .wxss 樣式文件,下面這個用不到可以把下面這個配置去掉,然後在 .gitignore 文件中加入要忽略的中間樣式:

*.scss

其他跟上面一樣,至此你就可以在小程序開發中快樂使用 scss 了~

5. 使用 iconfont 圖標字體

在 Web 開發中 iconfont 可謂是最常用的靈活圖標字體工具了,這裡介紹一下如何在微信小程序中引入 iconfont 圖標。

首先找到你想使用的圖標們,點擊購物車之後下載到本地。

在下下載icon

下載到本地是一個壓縮包,解壓縮之後將 iconfont.css 文件複製到微信小程序的 styles 文件夾中 (在下的習慣,也可以放到你想放的地方比如 fonts),將後綴改為 .wxss

放到本地

在 app.wxss 中引入樣式:

@import &34;;

然後在 .wxml 中就可以使用剛剛你添加的圖標了,Web 使用 i 標籤,小程序中使用 text 標籤:

<text class=&34; style=&34;></text>

如果後面要加新的圖標,要下載新的 iconfont.css 的文件到本地重命名並覆蓋,重新走一遍這個流程。

當然,如果你使用的樣式庫提供的一些 icon 能滿足你的要求,那更好,就不用引入外部圖標字體文件了,不過大部分情況下是不滿足的


網上的帖子大多深淺不一,甚至有些前後矛盾,在下的文章都是學習過程中的總結,如果發現錯誤,歡迎留言指出,如果本文幫助到了你,別忘了點讚支持一下哦(收藏不點讚,都是耍流氓 )~

相關焦點

  • 強烈推薦的幾個微信小程序開發小技巧,簡單又實用
    ,開發過程中總結了一些我覺得對我有用的小技巧,提煉出來,相當於一個總結復盤,也希望可以幫助到大家。開發中可能遇到的坑以及 Tips本來想寫個小技巧的,結果我總結了一堆坑,沒上手之前完全想像不到微信小程序的開發體驗是如此之差、如此之爛,從微信開發者工具到所謂的「全新語言」,都有一種濃濃的半成品的 five 即視感,實在讓我 emmm....
  • 微信小程序教程入門篇_微信小程序開發
    1、微信官方為小程序提供了大量的api接口,開發小程序需要有基本的Javascript,HTML,CSS的基礎。2、 小程序開發,可以使用「uni-app」框架。uni-app 是一個跨多端的開發框架,目前支持 iOS 、Android 和 wx(微信小程序), 也就是說開發一套代碼可以實現相應端的開發,是基於Vue的一個很不錯的開發框架,對於熟悉Vue 和微信小程序的開發小夥伴來說學習成本幾乎為零。
  • 企業開發小程序,如何選擇開發公司?掌握這幾個技巧即可
    誕生於2017年的微信小程序,憑藉自身帶著強大獲客、引流、產品銷售能力的特點,得到廣大企業、商家青睞。所以,在最近幾年時間中,很多企業都開發了小程序。而一些還沒有開發小程序的企業,在看到"同行"的小程序獲得成功之後,也表示要開發一個小程序。
  • 微信小程序開發系列教程三:微信小程序的調試方法
    微信小程序開發系列教程這個教程的前兩篇文章,介紹了如何用下圖所示的微信開發者工具自動生成一個Hello World的微信小程序,並講解了這個自動生成的微信小程序的視圖開發原理。這個系列的下一步,會繼續介紹這個微信小程序的控制器index.js的實現。
  • 為什麼推薦商家開發微信小程序,西安小程序開發公司專業靠譜
    開發小程序有什麼用?很多客戶對於小程序了解並不多,所以問西安小程序開發公司青雲在線小編這個問題,這裡可以給大家說一下,小程序不像網站開發好之後還要做推廣,小程序開發上線後是自帶流量的,只要用戶打開附近的小程序,就可以看到自己周圍都有哪些小程序,解決了商家沒有合適推廣的渠道,經過數據統計的結果,實體店鋪還是周圍用戶購買的次數比較多,在一些餐飲店鋪和商超商家裡這種情況更明顯。
  • 微信小程序開發系列一:微信小程序的申請和開發環境的搭建
    我最近也剛剛開始微信小程序的開發,想把我自學的一些心得寫出來分享給大家。這是第一篇,從零開始學習微信小程序開發。主要是小程序的註冊和開發環境的搭建。首先我們要在下列網址申請一個屬於自己的微信小程序:https://mp.weixin.qq.com/cgi-bin/wx點擊按鈕「前往註冊」。注意我們需要使用一個沒有註冊過微信小程序或者微信公眾號的郵箱。我用的是網易郵箱。註冊之後,郵箱會收到一封激活郵件。激活之後,就可以進入小程序主體信息登記頁面了。
  • 微信小程序該如何開發?
    一、微信小程序開發流程:1、註冊小程序:在微信公眾平臺申請註冊小程序,完成註冊後可以同步進行信息完善。  2、完善小程序信息:填寫小程序基本信息,包括名稱、頭像、介紹及服務範圍等。  3、開發小程序:首先要下載微信官方的微信Web開發者工具。打開微信公眾平臺,找到右下方的小程序模塊,點擊開發按鈕。然後點擊頂部導航欄的工具按鈕,在新頁面的左側欄中找到下載。
  • 微信小程序開發教程,零基礎入門小程序雲開發視頻
    微信小程序開發教程,零基礎入門小程序雲開發,培訓課程視頻講座內容介紹
  • 微信小程序開發系列二:微信小程序的視圖設計
    大家如果跟著我第一篇文章  一起動手,那麼微信小程序的開發環境一定搭好了。效果就是能把該小程序的體驗版以二維碼的方式發送給其他朋友使用。這個系列接下來的文章我們就來研究使用微信開發者工具自動生成的這個小程序的實現文件。
  • 西安微信小程序開發公司電話,小程序開發工作室推薦
    小程序如今成為了網際網路行業大家都討論的產品之一,在小程序剛上線的時候,很多人都認為小程序是一個雞肋的產品,因為體驗沒有app好用戶肯定是不買單的,但是小程序發展了3年後,現在越來越多的企業都開發了自己的微信小程序,為什麼大眾對於小程序的轉變這麼大呢?
  • 微信小程序開發多少錢?
    這兩年小程序持續火爆,想做小程序的本地企業和商家,一定要了解清楚廣州微信小程序開發多少錢,不要隨便被外包公司忽悠了。有微信10億用戶做支撐,推出小程序可以為商家帶來巨大人氣和豐厚回報,加上應用輕、響應快、無需下載、不佔內存等優點,是當下網絡推廣的首選重點,下面就由阿斯拜爾來詳細說下開發一款微信小程序到底要多少錢吧。
  • 自己怎麼開發小程序?10分鐘製作微信小程序教程
    小程序火了,在微信平臺每天都會上線很多新小程序,但對於很多不會編程的小白來說,如果自己開發一個微信小程序呢?其實,方法也很簡單,知道藉助一些專業平臺,10分鐘也讓你輕鬆製作屬於自己的微信小程序,以下是詳細操作教程。
  • 微信小程序新增六大功能:個人也能開發
    微信小程序上線後,經歷了最初幾天的狂熱,隨後便歸於平淡,取代APP也早已成為笑談。不過,小程序自有它的用途,外交部、工商總局甚至都分別推出了12308、12315小程序。微信也在不斷完善增強小程序的能力,擴大使用場景,今天就公布了六項新功能,都相當實用:1、個人開發者可申請小程序小程序開放個人開發者申請註冊,個人用戶可訪問微信公眾平臺,掃碼驗證個人身份後即可完成小程序帳號申請並進行代碼開發。
  • 企業開發小程序的好處,西安電商微信小程序開發公司
    現在微信營銷成為了一個趨勢,有了小程序之後,讓更多的商家參與其中,現在小程序裡做電商的企業有很多,那麼選擇微信小程序做電商的原因是為什麼呢?首先就是成本更低,現在三大電商平臺已經飽和,一個新店鋪進入要做到盈利是比較困難的,而且成本非常的高,有入駐費用、抽成費用,這不是一般商家能夠承受的,而小程序不僅降低了企業的開發成本,上線時間也是比較快的。
  • 微信小程序開發系列四:微信小程序之控制器的初始化邏輯
    微信小程序開發系列教程這個教程的前兩篇文章,介紹了如何用下圖所示的微信開發者工具自動生成一個Hello World的微信小程序,並講解了這個自動生成的微信小程序的視圖開發原理。本文繼續介紹這個微信小程序的控制器index.js的實現, 即MVC設計理念的C-Controller-控制器。不過嚴格意義上說,按照微信小程序官方文檔裡介紹的,微信小程序實際採取的是React和Vue的MVMM的設計思路,提倡把渲染和邏輯分離。簡單來說就是不要再讓 JS 直接操控 DOM,JS只需要管理狀態,然後再通過一種模板語法來描述狀態和界面結構的關係即可。
  • 微信小程序模塊化開發實踐
    微信小程序目前版本的API實現需要兼顧方方面面, 所以仍然使用callback寫法, 眾所周知的Callback-Hell是傳統js語法上的歷史問題, 但畢竟稱手的工具是開發效率的源泉. 因此筆者對當前版本的微信小程序API做了簡單的封裝weapp.
  • 珍藏的幾個微信小程序~
    今天給大家介紹一個星選哥使用頻率比較高的幾個小程序,看看有沒有與大家撞車~>首先給大家推薦的是幾個官方小程序,大型車禍現場~微信記帳本相信小夥伴們絕大多數人平常使用的都是微信支付,大膽預測在座的各位沒有記帳的習慣~所以,它來了,
  • 西安小程序訂製開發公司,微信小程序開發服務
    雖然現在小程序有很多的企業在做,大家也使用了很多的小程序,不過大多數人對於小程序的理解還是不夠,比如不知道小程序究竟是什麼東西,公眾號發展了很多年大家對於公眾號才有了一定程度的了解,而現在小程序又問世了,小程序和公眾號的區別在什麼地方,開發小程序對於企業營銷有哪些幫助,這些問題是大家比較關心的
  • 西安高級小程序開發公司,微信小程序量身定製開發
    如今大多數賣貨的商家都會選擇分銷,為什麼要選擇分銷,原因很簡單,那就是可以實現產品直接從生產商面向消費者的轉移,如今電子商務發展的越來越快,使用智慧型手機購物的用戶也逐漸增加,所以移動端的電商也異軍突起,但是移動端電商如果沒有相關的管理平臺是很麻煩的事情,隨著小程序的問世,現在小程序商城逐漸在增加
  • 微信小程序改變我們哪些
           微信是騰訊旗下的社交軟體,在更早以前就被使用,它跟QQ軟體共同生存,現如今微信已經獨佔武林,成為社交屆的佼佼者。由於微信小程序的出現,給微信平臺帶來了巨大的收穫,同時也給用戶帶來了驚喜,不僅僅方便實用,而且充滿了新鮮感,那麼,小程序的到底給我們帶來了哪些好處呢?我們一起來看一下吧!