<?xml version="1.0" encoding="utf-8"?>
<rss xmlns:atom="http://www.w3.org/2005/Atom" version="2.0">
    <channel>
        <title>前端技术分享</title>
        <link>https://www.leon82.com</link>
        <description>Leon82的技术和生活文字</description>
        <atom:link href="https://www.leon82.com/rss.html" rel="self" />
        <language>zh-cn</language>
        <lastBuildDate>Sat, 14 Mar 2026 13:26:04 GMT</lastBuildDate>
        <item>
            <title>auto-sync-locastorage</title>
            <link>https://www.leon82.com/post/auto-sync-locastorage.html</link>
            <description><![CDATA[
            <p>开发时，经常需要同步全域的localStorage值到开发环境。这里有个简单脚本。</p>
<pre><code class="hljs lang-processing"><span class="hljs-comment">// 在源域的开发者工具中执行此脚本</span>
(function () {
    <span class="hljs-keyword">const</span> data = {};
    <span class="hljs-comment">// 收集所有localStorage键值对</span>
    <span class="hljs-keyword">for</span> (let i = <span class="hljs-number">0</span>; i &lt; localStorage.length; i++) {
        <span class="hljs-keyword">const</span> <span class="hljs-built_in">key</span> = localStorage.<span class="hljs-built_in">key</span>(i);
        data[<span class="hljs-built_in">key</span>] = localStorage.getItem(<span class="hljs-built_in">key</span>);
    }
    <span class="hljs-comment">// 生成目标域执行的代码</span>
    <span class="hljs-keyword">const</span> code = `<span class="hljs-comment">// 在目标域的开发者工具中执行此代码</span>
<span class="hljs-keyword">const</span> data = ${JSON.stringify(data)};
<span class="hljs-keyword">for</span> (<span class="hljs-keyword">const</span> <span class="hljs-built_in">key</span> in data) {
    <span class="hljs-keyword">if</span> (<span class="hljs-keyword">Object</span>.prototype.hasOwnProperty.call(data, <span class="hljs-built_in">key</span>)) {
        localStorage.setItem(<span class="hljs-built_in">key</span>, data[<span class="hljs-built_in">key</span>]);
    }
}
console.<span class="hljs-built_in">log</span>(<span class="hljs-string">&#x27;已导入&#x27;</span>, <span class="hljs-keyword">Object</span>.keys(data).length, <span class="hljs-string">&#x27;条数据&#x27;</span>);`;
    
    <span class="hljs-comment">// 仅打印代码</span>
    console.<span class="hljs-built_in">log</span>(<span class="hljs-string">&#x27;请复制以下代码到目标域执行：\n&#x27;</span>);
    console.<span class="hljs-built_in">log</span>(code);
})()
</code></pre>

            <p class="more">
                <a href="https://www.leon82.com/post/auto-sync-locastorage.html" title="auto-sync-locastorage">[...]</a>
            </p>
            ]]></description>
            <pubDate>Thu, 17 Jul 2025 02:17:29 GMT</pubDate>
            <guid>https://www.leon82.com/post/auto-sync-locastorage.html</guid>
        </item>
        <item>
            <title>Mermaid简介</title>
            <link>https://www.leon82.com/post/Mermaid-jian-jie.html</link>
            <description><![CDATA[
            <h1 id="mermaid简介">Mermaid简介</h1>
<p>Mermaid是一个基于JavaScript的图表和图形生成工具，它允许用户使用类似于Markdown的简单文本语法来创建和修改复杂的图表。Mermaid的目标是让非专业人士也能轻松创建详细的图表，而无需使用复杂的绘图工具。</p>
<h2 id="mermaid的主要特点">Mermaid的主要特点</h2>
<ol>
<li><strong>简单的语法</strong>：使用类似Markdown的文本语法，易于学习和使用</li>
<li><strong>多种图表类型</strong>：支持流程图、时序图、类图、甘特图、饼图、状态图等多种图表类型</li>
<li><strong>易于集成</strong>：可以集成到各种平台，如GitHub、GitLab、Notion、VS Code等</li>
<li><strong>实时渲染</strong>：支持实时预览，方便调整和修改</li>
<li><strong>开源免费</strong>：完全开源，可以自由使用和修改</li>
</ol>
<h2 id="常见图表类型及语法示例">常见图表类型及语法示例</h2>
<p>Mermaid支持多种图表类型，以下是一些常见的图表类型及其语法示例：</p>

            <p class="more">
                <a href="https://www.leon82.com/post/Mermaid-jian-jie.html" title="Mermaid简介">[...]</a>
            </p>
            ]]></description>
            <pubDate>Mon, 14 Apr 2025 09:48:56 GMT</pubDate>
            <guid>https://www.leon82.com/post/Mermaid-jian-jie.html</guid>
        </item>
        <item>
            <title>网站http自动跳转https的一些琐记</title>
            <link>https://www.leon82.com/post/http-to-https.html</link>
            <description><![CDATA[
            <h3 id="缘起">缘起</h3>
<p>笔者目前负责的一个可视化自助搭建平台，最开始是使用http部署的。随着迭代不断进行，特别是逐渐开始涉及到支付、涉密数据等需求，我们的站点就开始支持https。这时候的情况是，对于同一个网址，我们可以使用http和https协议，访问同一内容。</p>
<p>然而还需要解决几个问题才能完美解决问题。</p>

            <p class="more">
                <a href="https://www.leon82.com/post/http-to-https.html" title="网站http自动跳转https的一些琐记">[...]</a>
            </p>
            ]]></description>
            <pubDate>Tue, 19 Sep 2023 01:15:04 GMT</pubDate>
            <guid>https://www.leon82.com/post/http-to-https.html</guid>
        </item>
        <item>
            <title>说说截图</title>
            <link>https://www.leon82.com/post/shuo-shuo-jie-tu.html</link>
            <description><![CDATA[
            <p>笔者最近负责一款大屏在线编辑器。可以通过拖拽进行大屏搭建。</p>
<p>该编辑器可以在每个大屏或模版保存时候，对该大屏或模版的展现进行截图，后续在列表展示的时候，用户就能对该大屏或模版的大致展现有初步的了解。</p>
<p>同时，我们还可以在编辑大屏时候，将大屏的截图以JPG的形式导出来。</p>
<p>随着项目日渐复杂，我们的截图功能有时会出现截图失败的情况。为此我们需要分析下截图失败的原因，并解决之。</p>

            <p class="more">
                <a href="https://www.leon82.com/post/shuo-shuo-jie-tu.html" title="说说截图">[...]</a>
            </p>
            ]]></description>
            <pubDate>Tue, 23 May 2023 08:38:34 GMT</pubDate>
            <guid>https://www.leon82.com/post/shuo-shuo-jie-tu.html</guid>
        </item>
        <item>
            <title>浏览器绘制图表的N种方法</title>
            <link>https://www.leon82.com/post/draw-in-browser.html</link>
            <description><![CDATA[
            <p>哆啦可视化大屏编辑器，是植根于浏览器的可视化平台。我们不难发现，哆啦的众多图表中，有多种实现方案。如，基于ECharts二次开发的BI图表，有基于Mapbox/leaflet等实现的地理图表，以及根据业务需要制作的基于Dom的内容、视频、图片等组件。
以ECharts为例，我们知道它的底层是基于zrender的。因此，ECharts也可以自由的切换渲染引擎。默认地，ECharts使用的是Canvas作为渲染器。如果你希望看到节点结构，你还可以使用下面的语句，用SVG作为渲染器。</p>

            <p class="more">
                <a href="https://www.leon82.com/post/draw-in-browser.html" title="浏览器绘制图表的N种方法">[...]</a>
            </p>
            ]]></description>
            <pubDate>Wed, 22 Feb 2023 04:38:21 GMT</pubDate>
            <guid>https://www.leon82.com/post/draw-in-browser.html</guid>
        </item>
        <item>
            <title>谈谈跨域</title>
            <link>https://www.leon82.com/post/tan-tan-kua-yu.html</link>
            <description><![CDATA[
            <h1 id="问题的由来">问题的由来</h1>
<h2 id="什么是跨域资源共享">什么是跨域资源共享</h2>
<p>根据MDN的表述，跨域资源共享（Cross-Origin Resource Sharing，简称CORS），一般也称为跨域请求，是一种基于 HTTP 头的机制，通过这种机制，服务器可以通知浏览器，允许非同源访问加载该服务器域内的资源。</p>
<p>其实这个表述还有一层隐含意思，就是如果服务器没告诉浏览器这些源可访问，那么浏览器就会禁止这个域访问该资源。</p>
<p>但是，有很多能够发起请求的客户端，比如命令行程序、比如 Postman，其实是可以随意的获取各个域名下的资源的。跨域资源获取，是一种浏览器的机制。如 Chrome ，也是可以关掉跨域限制的。</p>

            <p class="more">
                <a href="https://www.leon82.com/post/tan-tan-kua-yu.html" title="谈谈跨域">[...]</a>
            </p>
            ]]></description>
            <pubDate>Tue, 03 Jan 2023 08:39:23 GMT</pubDate>
            <guid>https://www.leon82.com/post/tan-tan-kua-yu.html</guid>
        </item>
        <item>
            <title>画地图</title>
            <link>https://www.leon82.com/post/map.html</link>
            <description><![CDATA[
            <p>可视化项目中，经常会遇到绘制地图的需求。除了地图自身的寻路、标注等需求外，可视化地图应用还会将业务数据在地理信息上进行拆分，并通过某种方式在地图上进行呈现，从而揭示出业务数据与地理数据的相关性。</p>
<p><img src="https://p1.ssl.qhimg.com/t0150e9335e49a2f6d4.png" alt=""></p>
<p>像上图所示，即为2011年香港18区的人口密度图。</p>
<p>这篇文章里，我们就来讨论下，一个符合常识的在线地图的绘制方案。在正式开始之前，我们先明确一点，由于地图绘制是一项严肃且异常严谨的工作。因此，<a href="http://www.xinhuanet.com/expo/2020-08/31/c_1210778017.htm">规范使用地图，一点都不能错！</a>。本文旨在揭示在线地图的技术原理，如在产品中使用，需使用合规地图，并应取得政府认可的审图号并在产品中进行展示。</p>

            <p class="more">
                <a href="https://www.leon82.com/post/map.html" title="画地图">[...]</a>
            </p>
            ]]></description>
            <pubDate>Wed, 31 Aug 2022 04:34:23 GMT</pubDate>
            <guid>https://www.leon82.com/post/map.html</guid>
        </item>
        <item>
            <title>谈谈小程序自动化</title>
            <link>https://www.leon82.com/post/miniapp-automation.html</link>
            <description><![CDATA[
            <p>浏览器领域，我们有如selenium和puppeteer这样的库，可以自动化控制浏览器执行自动化脚本，以完成自动化端对端测试、定时自动化任务等。随着持续集成、持续部署也就是CI/CD的需求日益增长，自动化也成为必不可少的一环。</p>
<p>对于日益增长的小程序开发需求，我们能不能自动化控制小程序，进而达成自动测试、自动发布等任务呢？</p>

            <p class="more">
                <a href="https://www.leon82.com/post/miniapp-automation.html" title="谈谈小程序自动化">[...]</a>
            </p>
            ]]></description>
            <pubDate>Sun, 05 Apr 2020 16:30:46 GMT</pubDate>
            <guid>https://www.leon82.com/post/miniapp-automation.html</guid>
        </item>
        <item>
            <title>谈谈农历</title>
            <link>https://www.leon82.com/post/Chinese-calendar.html</link>
            <description><![CDATA[
            <p>还有不到20多天，2020年的农历春节就要到了。对于中国人来讲，农历春节是一年最隆重的节日。笔者曾经编写过<a href="http://hao.360.com/rili/#cid=youlike">农历计算的程序</a>。为此调研过一段农历的算法。我国现行的农历，经过了若干次迭代，形成了如今的版本。农历，精确地反映了太阳、地球、月亮的天体运动的相对位置。2016年11月30日，农历中的二十四节气被正式列入联合国教科文组织人类非物质文化遗产名录。那么，农历是如何定义的，年份又是如何计算的，农历的月是如何划分的，二十四节气的天文学意义是什么以及如何用计算机推算农历？这篇文章将给大家做比较详细的解答。</p>

            <p class="more">
                <a href="https://www.leon82.com/post/Chinese-calendar.html" title="谈谈农历">[...]</a>
            </p>
            ]]></description>
            <pubDate>Tue, 07 Jan 2020 15:21:51 GMT</pubDate>
            <guid>https://www.leon82.com/post/Chinese-calendar.html</guid>
        </item>
        <item>
            <title>中不中奖，都是抽奖程序的锅？</title>
            <link>https://www.leon82.com/post/math.random.html</link>
            <description><![CDATA[
            <p><img src="https://p2.ssl.qhimg.com/t015bcf664a00dc0093.png" alt=""></p>
<p>转眼年关切近，很多业务都会考虑做一些抽奖活动，而各大公司在年底也会考虑开办年会。年会中，一般会安排抽奖环节。抽奖程序一般接收一个抽奖人员列表，通过算法产生一个随机数，再通过某种对应关系，将列表中的某个人与这个随机数匹配。这个匹配的人就是中奖的幸运儿了。</p>
<p>不出意外的话，年底这一个多月，通常是一年中随机函数被调用最频繁的一段时间。</p>

            <p class="more">
                <a href="https://www.leon82.com/post/math.random.html" title="中不中奖，都是抽奖程序的锅？">[...]</a>
            </p>
            ]]></description>
            <pubDate>Wed, 11 Dec 2019 02:00:54 GMT</pubDate>
            <guid>https://www.leon82.com/post/math.random.html</guid>
        </item>
    </channel>
</rss>
