獻給所有技術內容創作者~猿創聚合助手小程序開發難點解析

語言: CN / TW / HK

本文已參與「掘力星計劃」,贏取創作大禮包,挑戰創作激勵金。


前言

  • 2020年11月

我重新開始了原創技術內容創作,至今在掘金髮表了原創文章60篇,47.7w閲讀,1.5w贊。

image.png

現在的技術內容作者都不只在單一平台發佈內容了,都是文章、長視頻,短視頻一把抓。 我經過一番摸索和嘗試,目前確定主要在以下平台發佈原創內容

  • 掘金:技術文章
  • B站:教學視頻
  • 微信公眾號:個人原創內容標記平台

做着做着我覺得自己需要有一個地方可以方便的將各個平台裏的內容聚合起來,讓某一載體的讀者可以通過這個地方看到我其他載體的內容,未來還可以在這個地方做一些讀者互動,比如抽獎,討論組之類...

並且我希望這個地方所用到的技術都是我親手完成的,都是我曾經文章或視頻裏寫到過的技術點

  • 2021年8月31日

我開始策劃、設計、開發這個小程序,歷經30次迭代

image.png

這裏面踩的坑無數,因為微信的審核是非常嚴格的,尤其又是個人註冊的小程序,很多內容不是你想做就能做的。所以沒做過的小程序開發小夥伴可能無法理解有些功能為什麼那麼設計?就不能怎麼怎麼樣嗎?因為真的就是不能。

功能點概覽

猿創聚合助手.001.jpeg

關鍵技術點的實現

  • 聚合

聚合本身沒什麼難度,無非是提取數據來源平台的API。但麻煩的地方在於,個人小程序是不允許使用webview,導致為了跳轉原網頁,我只好採用客服消息的機制來下發網址。

  1. 客服消息教程原文:https://juejin.cn/post/7002866939026472974
  2. 高贊文章滑卡組件教程:https://juejin.cn/post/6906143905922678797

  3. 分享

原本這個小程序只給我自己用的話是不用這麼麻煩的。現在要能夠給大家用,那麼分享的時候就得攜帶大家的配置信息。在進入小程序後,先檢查是否有攜帶配置信息,如果有,則使用攜帶的配置信息。

  • 引導關注公眾號

在微信小程序裏,引導關注公眾號只能用<official-account>組件,並且只能關聯和小程序主體相同的公眾號。那怎麼才能實現引導關注大家自己配置的公眾號信息呢?答案還是利用客服消息機制來實現,只是這裏下發的是公眾號的二維碼。

通過微信id微信原始id來生成二維碼

~~~javascript https://open.weixin.qq.com/qr/code?username=ezfullstack ~~~

在uniCloud雲函數裏將二維碼圖片讀取並上傳至微信的媒體素材接口

~~~javascript let imageRes = await uniCloud.httpclient.request(url);

let buff = new Buffer(imageRes.data);

let form = new FormData(); form.append('media', buff, { filename: ${Date.now()}.jpg, contentType: 'image/jpeg' })

const access_token = await getAccessToken();

const res = await uniCloud.httpclient.request("https://api.weixin.qq.com/cgi-bin/media/upload?access_token="+access_token+"&type=image",{ method:"POST", content: form.getBuffer(), headers: form.getHeaders(), dataType:"json" }) ~~~

拿到返回的media_id就可以利用客服消息發給想要關注的用户了

~~~javascript var res = await sendCustomerServiceMessage({ touser:touser, msgtype:"image", image: { "media_id":media_id } }); ~~~

  • 緩存機制

uniCloud免費的雲空間性能一般,加上雲函數本身冷/熱啟動較大的差異,必須要好好設計一下緩存機制。在這個小程序裏我總共設計了三種緩存機制。

1. cloudStorage

在雲函數中http請求的緩存機制,利用雲數據庫來做數據緩存,避免每次請求第三方接口數據的時候都重新請求,一段時間內的數據從數據庫緩存獲得。 2. localStorage 前端的本地數據存儲,小程序退出時不銷燬。 3. memoryStorage 小程序生命週期之內的數據緩存,避免一段時間內多次請求雲函數,退出即銷燬。

  • 用户隔離

各位技術內容作者的粉絲羣體有交集的部分,可以在小程序中切換數據來源,沒有交集的也無法得知其他的數據源,充分保障各自粉絲羣體的獨立性。

image.png

為什麼我會做這個,我能收穫什麼?

原本就是我的個人需求,即使沒有其他人用,這個工具是能滿足我自己需要的。後來做着做着發現也許和我一樣的內容創作者們也需要這樣的工具,所以做成了開放型配置,大家都可以用。

希望這個工具能為技術內容創作者帶來便利,讓技術內容作者們更加專注的創作內容,而無須想方設法的引流導流。

如果你和我一樣是技術內容創作者,請使用微信搜索"猿創聚合助手"小程序

為什麼數據源只有掘金和B站?

因為我只用掘金和B站...未來也不會更新,我愛掘金,未來如果掘金有視頻載體,我再把B站給替換掉...

o(* ̄3 ̄)o