uni-app markdown 一键分享功能问题

uni-app markdown 一键分享功能问题

操作步骤:

已一键分享过的 markdown 文件,修改后重新一键分享,链接地址访问到的还是旧的数据。

预期结果:

markdown一键分享数据修改后重新分享,生成的链接访问到修改后的内容

实际结果:

数据修改后重新分享,链接访问到修改前的内容

bug描述:

已一键分享过的 markdown 文件,修改后重新一键分享,链接地址访问到的还是旧的数据。 从前端网页托管的 markdown-share-docs下载index.html文件内容是修改过的。


| 开发环境 | 版本号 | 项目创建方式 |
|----------|--------|--------------|
| Windows  | 11     | HBuilderX    |

| 手机系统 | 手机系统版本号 | 手机厂商 | 手机机型 | 页面类型 | vue版本 | 打包方式 |
|----------|---------------|----------|----------|----------|---------|----------|
| Android  | Android 14    | 华为      | 无       | vue      | vue2    | 云端     |

| HBuilderX类型 | HBuilderX版本号 |
|---------------|-----------------|
| 正式          | 4.08            |

更多关于uni-app markdown 一键分享功能问题的实战教程也可以访问 https://www.itying.com/category-93-b0.html

2 回复

已解决,在unicloud后台的前端网页托管-参数配置-刷新缓存

更多关于uni-app markdown 一键分享功能问题的实战教程也可以访问 https://www.itying.com/category-93-b0.html


uni-app 中实现 Markdown 的一键分享功能,通常需要结合以下几个步骤:

1. 解析 Markdown 内容

首先,你需要将 Markdown 内容解析为 HTML 或其他可分享的格式。可以使用一些现成的 Markdown 解析库,比如 marked 或者 markdown-it

import marked from 'marked';

// 解析 Markdown 为 HTML
const markdownContent = '# Hello, uni-app!';
const htmlContent = marked(markdownContent);

2. 生成分享内容

根据你的需求,可以将解析后的 HTML 内容生成文本、图片或其他格式的分享内容。例如,你可以将 HTML 转换为纯文本:

const textContent = htmlContent.replace(/<[^>]+>/g, ''); // 去除 HTML 标签

3. 实现分享功能

uni-app 提供了 uni.share API,可以用来实现分享功能。你可以根据不同的平台(微信、QQ、微博等)来配置分享内容。

uni.share({
    provider: 'weixin', // 分享平台,可以是 'weixin', 'qq', 'sinaweibo' 等
    scene: 'WXSceneSession', // 分享场景,WXSceneSession 表示分享到好友会话
    type: 0, // 分享类型,0 为文字,1 为图片,2 为音乐,3 为视频,4 为网页
    summary: textContent, // 分享的文本内容
    success: function (res) {
        console.log('分享成功');
    },
    fail: function (err) {
        console.log('分享失败', err);
    }
});

4. 处理图片或其他媒体分享

如果你需要分享的是图片或其他媒体内容,可以先将 Markdown 中的图片提取出来,然后使用 uni.uploadFile 将图片上传到服务器,获取图片的 URL,再进行分享。

// 提取 Markdown 中的图片
const imageUrls = markdownContent.match(/!\[.*?\]\((.*?)\)/g) || [];

// 上传图片并获取 URL
const uploadImage = async (imageUrl) => {
    const res = await uni.uploadFile({
        url: 'https://your-server.com/upload',
        filePath: imageUrl,
        name: 'file'
    });
    return res.data.url;
};

// 分享图片
uni.share({
    provider: 'weixin',
    scene: 'WXSceneSession',
    type: 1, // 1 为图片
    imageUrl: imageUrls[0], // 分享的图片 URL
    success: function (res) {
        console.log('分享成功');
    },
    fail: function (err) {
        console.log('分享失败', err);
    }
});

5. 处理不同平台的分享限制

不同的分享平台可能对分享内容有不同的限制,例如微信对分享的字数、图片大小等有一定的限制。你需要根据具体的平台要求来调整分享内容。

6. 兼容性处理

由于 uni.share 在不同平台的实现可能有所不同,你需要确保在目标平台上进行充分的测试,以确保分享功能的稳定性和兼容性。

7. 用户授权

在某些平台上,分享功能可能需要用户授权,比如微信的分享功能需要用户授权后才能使用。你需要确保在调用分享功能之前,用户已经授权。

uni.authorize({
    scope: 'scope.share',
    success() {
        // 用户已经授权,可以调用分享功能
        uni.share({
            provider: 'weixin',
            scene: 'WXSceneSession',
            type: 0,
            summary: textContent,
            success: function (res) {
                console.log('分享成功');
            },
            fail: function (err) {
                console.log('分享失败', err);
            }
        });
    },
    fail() {
        // 用户未授权,提示用户授权
        uni.showModal({
            title: '授权提示',
            content: '需要授权才能分享,是否去授权?',
            success(res) {
                if (res.confirm) {
                    uni.openSetting();
                }
            }
        });
    }
});
回到顶部