uniapp 開發(fā)app使用renderjs操作dom

需求:把頁面中的對(duì)話內(nèi)容另存為一張圖片保存到手機(jī)相冊(cè)。
解決方案:這時(shí)我們需要使用到document對(duì)象創(chuàng)建一個(gè)dom對(duì)象計(jì)算對(duì)話內(nèi)容的寬高、位置等,再利用canvas能力將內(nèi)容繪制繪制成一張圖保存。
現(xiàn)狀:總所周知,非H5端,不能使用瀏覽器自帶對(duì)象,比如document、window、localstorage、cookie等,更不能使用jquery等依賴這些瀏覽器對(duì)象的框架。
uniapp解決方案:uniapp文檔提示到App端若要使用操作window、document的庫(kù),需要通過renderjs來實(shí)現(xiàn)。

首先uniapp是不支持vue3的setup語法糖的,所以獲取到圖片后保存到相冊(cè)邏輯需要這樣寫:

<script>
export default defineComponent({
    setup(props, context) {
        const saveImg = async (url) => {
            uni.saveImageToPhotosAlbum({
                filePath: url,
                success: (res) => {
                    console.log("保存圖片成功");
                },
                fail: (err) => {
                    console.log("保存圖片失敗");
                }
            });
        };
        return {
            saveImg
        };
    }
});
</script>

視圖層中的保存按鈕:

<template>
  <view class="save" @click="sharechat.generateImage">
    {{ t("share") }}
  </view>       
</template>

renderjs生成圖片:

<script module="sharechat" lang="renderjs">  // sharechat和視圖層調(diào)用的一致
export default {
  data(){
    return { }
  },
  computed: {},
  methods: {
    generateImage(event, ownerInstance) {
    // 計(jì)算內(nèi)容寬高,位置
    // canvas dom生成圖片
    // 利用uinapp保存圖片到相冊(cè)
    ownerInstance.callMethod('saveImg', {url: dataURL})
    }
  },
  mounted(){}
}
</script>

此致,就完成了所有的功能了。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容