Skip to content

处理URL

sunsonliu edited this page Jan 3, 2025 · 3 revisions

简单例子

new Cherry({
    id: 'markdown-container', 
    value: '## hello world', 
    callback: {
        /**
        * 全局的URL处理器
        * @param {string} url 来源url
        * @param {'image'|'audio'|'video'|'autolink'|'link'} srcType 来源类型
        * @param {function} callback 回调函数
        * @returns
        */
        urlProcessor: (url, srcType) => url,
    }
});

在这个例子中,我们在callback中定义了urlProcessor,当markdown中存在图片、音频、视频、自动链接、链接时,会调用urlProcessor进行处理。

异步例子

异步仅在v0.8.58及以上版本才支持

new Cherry({
    id: 'markdown-container', 
    value: '## hello world', 
    callback: {
        /**
        * 全局的URL处理器
        * @param {string} url 来源url
        * @param {'image'|'audio'|'video'|'autolink'|'link'} srcType 来源类型
        * @param {function} callback 回调函数
        * @returns
        */
        urlProcessor: (url, srcType, callback) => {
            setTimeout(() => {
                callback(`https://${url}`);
            }, 1000);
        },
    }
});

典型场景

  1. 将图片、音频、视频资源上传到服务器,并返回新的url
  2. 对所有超链接追加类似'?from=xxx'的后缀,用于统计来源
  3. 将图片URL替换为压缩后的URL,以节省流量(搭配cherry.previewer.lazyLoadImg的配置一起食用效果更好)

动态配置

参见事件&回调