<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Robert Shaw</title>
    <description>The latest articles on DEV Community by Robert Shaw (@robertshaw).</description>
    <link>https://dev.to/robertshaw</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F28189%2F976f435e-8780-4d6c-8d15-d893efd8cb1c.png</url>
      <title>DEV Community: Robert Shaw</title>
      <link>https://dev.to/robertshaw</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/robertshaw"/>
    <language>en</language>
    <item>
      <title>🚀✨ We just launched Side Space on Product Hunt!</title>
      <dc:creator>Robert Shaw</dc:creator>
      <pubDate>Sat, 16 Nov 2024 08:49:38 +0000</pubDate>
      <link>https://dev.to/robertshaw/we-just-launched-side-space-on-product-hunt-3a0e</link>
      <guid>https://dev.to/robertshaw/we-just-launched-side-space-on-product-hunt-3a0e</guid>
      <description>&lt;p&gt;👋 Hi, Community!&lt;/p&gt;

&lt;p&gt;After a year in beta, we’re thrilled to introduce &lt;strong&gt;Side Space&lt;/strong&gt;—your ultimate AI-powered vertical tab manager. 🧠📂 Designed to tame the chaos of modern browsing, it brings a sleek, organized experience to your side panel. 🎯🌟&lt;/p&gt;

&lt;p&gt;We’d ❤️ your feedback and support! It’s free to try, so give it a spin and let us know your thoughts. 💬👍&lt;/p&gt;

&lt;p&gt;👉 &lt;a href="https://www.producthunt.com/posts/side-space" rel="noopener noreferrer"&gt;Check it out here!&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Thank you for helping us make Side Space even better! 🙌🎉&lt;/p&gt;

</description>
    </item>
    <item>
      <title>👋 Hi, Community! After a year in beta, we’re thrilled to introduce **Side Space**—your ultimate AI-powered vertical tab manager. 🧠📂 Designed to tame the chaos of modern browsing, it brings a sleek, organized experience to your side panel. 🎯🌟 We’d ❤️</title>
      <dc:creator>Robert Shaw</dc:creator>
      <pubDate>Sat, 16 Nov 2024 08:45:36 +0000</pubDate>
      <link>https://dev.to/robertshaw/hi-community-after-a-year-in-beta-were-thrilled-to-introduce-side-space-your-ultimate-ejb</link>
      <guid>https://dev.to/robertshaw/hi-community-after-a-year-in-beta-were-thrilled-to-introduce-side-space-your-ultimate-ejb</guid>
      <description></description>
      <category>ai</category>
      <category>productivity</category>
      <category>webdev</category>
      <category>development</category>
    </item>
    <item>
      <title>One Tab Group: Your all-in-one tab/tab group manager alternative to OneTab for Chrome</title>
      <dc:creator>Robert Shaw</dc:creator>
      <pubDate>Sun, 09 Oct 2022 07:11:40 +0000</pubDate>
      <link>https://dev.to/robertshaw/one-tab-group-your-all-in-one-tabtab-group-manager-alternative-to-onetab-for-chrome-45d7</link>
      <guid>https://dev.to/robertshaw/one-tab-group-your-all-in-one-tabtab-group-manager-alternative-to-onetab-for-chrome-45d7</guid>
      <description>&lt;p&gt;Does anyone feel that the &lt;code&gt;OneTab&lt;/code&gt; plugin is no longer enough to meet your needs?&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Are you also suffering from opening too many tabs, but can not find the site you want to find, all Icon ~ ~&lt;/li&gt;
&lt;li&gt;Are you also suffering from the fact that onetab can only recover tabs, but not groups of tabs?&lt;/li&gt;
&lt;li&gt;Are you also tired of onetab's layout, leaving a large blank space on the right side?&lt;/li&gt;
&lt;li&gt;Are you also looking forward to a new plugin that can replace it !!!&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  One Tab Group
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7lvas18jeuld8vodsm2l.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7lvas18jeuld8vodsm2l.jpg" alt="One Tab Group" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I'm building a Chrome plugin called &lt;code&gt;One Tab Group&lt;/code&gt; that solves some of the above problems. For those interested, check out this video&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.youtube.com/watch?v=lZ65zLtk_pI" rel="noopener noreferrer"&gt;https://www.youtube.com/watch?v=lZ65zLtk_pI&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If you were familiar with &lt;code&gt;onetab&lt;/code&gt;, then you will also use &lt;code&gt;One Tab Group&lt;/code&gt; as well.&lt;/p&gt;

&lt;h2&gt;
  
  
  Features
&lt;/h2&gt;

&lt;p&gt;The following features are supported.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;⚡️ One click button to save all tabs in the chrome window as a new session&lt;/li&gt;
&lt;li&gt;🖱️ Hand pick tabs and store them as a new session in the context menu&lt;/li&gt;
&lt;li&gt;🗂️ Restore tabs

&lt;ul&gt;
&lt;li&gt;in current window&lt;/li&gt;
&lt;li&gt;in a new window&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;🔄 Sync your opened tabs in sidenav&lt;/li&gt;

&lt;li&gt;🤏 Reorganize tab sessions use Drag &amp;amp; Drop with ease&lt;/li&gt;

&lt;li&gt;🔲 Single Column View | Double Columns View | Timeline View&lt;/li&gt;

&lt;li&gt;📑 Save your session as json file&lt;/li&gt;

&lt;li&gt;🌛 Darkmode Support&lt;/li&gt;

&lt;li&gt;🌍 i18n Support&lt;/li&gt;

&lt;li&gt;⌨️ Command &lt;code&gt;K&lt;/code&gt; Interface - easily explore the opened tabs &amp;amp; tab groups&lt;/li&gt;

&lt;li&gt;🏷️ Visual Web Bookmark - Turn a link into a visual web bookmark with beautiful QRCode, you can share with others&lt;/li&gt;

&lt;li&gt;🔖 Support for migrate tabs data from &lt;code&gt;OneTab&lt;/code&gt; to &lt;code&gt;onetab.group&lt;/code&gt;
&lt;/li&gt;

&lt;li&gt;🔍 Search all tabs quickly using fuzzy search&lt;/li&gt;

&lt;/ul&gt;




&lt;p&gt;One Tab Group is focused on solving the problem of restoring tab groups as well.&lt;/p&gt;

&lt;p&gt;So, have fun. One Tab Group already release on Chrome Web Store.&lt;/p&gt;

&lt;p&gt;Here's the link: &lt;/p&gt;

&lt;p&gt;&lt;a href="https://chrome.google.com/webstore/detail/one-tab-group/lajbajamkpmkmldodfbljkjihppdclbm?hl=en-GB&amp;amp;authuser=0" rel="noopener noreferrer"&gt;Get it for Chrome&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://microsoftedge.microsoft.com/addons/detail/one-tab-group-tabtab-g/njmgdlgmnlinpieohfpmiipenmgilpga" rel="noopener noreferrer"&gt;Get it for Mircosoft Edge&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If you have any idea about it, welcome let me know&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/one-tab-group/onetab.group/issues/new" rel="noopener noreferrer"&gt;Suggest a Change&lt;/a&gt;&lt;/p&gt;

</description>
      <category>chromeextension</category>
      <category>chrome</category>
    </item>
    <item>
      <title>I built a Chrome Extension alternative to onetab: One Tab Group</title>
      <dc:creator>Robert Shaw</dc:creator>
      <pubDate>Fri, 16 Sep 2022 08:26:20 +0000</pubDate>
      <link>https://dev.to/robertshaw/i-built-a-chrome-extension-alternative-to-onetab-one-tab-group-4jc4</link>
      <guid>https://dev.to/robertshaw/i-built-a-chrome-extension-alternative-to-onetab-one-tab-group-4jc4</guid>
      <description>&lt;p&gt;Does anyone feel that the &lt;code&gt;onetab&lt;/code&gt; plugin is no longer enough to meet your needs?&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Are you also suffering from opening too many tabs, but can not find the site you want to find, all Icon ~ ~&lt;/li&gt;
&lt;li&gt;Are you also suffering from the fact that onetab can only recover tabs, but not groups of tabs?&lt;/li&gt;
&lt;li&gt;Are you also tired of onetab's layout, leaving a large blank space on the right side?&lt;/li&gt;
&lt;li&gt;Are you also looking forward to a new plugin that can replace it !!!&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  One Tab Group
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7lvas18jeuld8vodsm2l.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7lvas18jeuld8vodsm2l.jpg" alt="One Tab Group" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I'm building a Chrome plugin called &lt;code&gt;One Tab Group&lt;/code&gt; that solves some of the above problems. For those interested, check out this video&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.youtube.com/watch?v=lZ65zLtk_pI" rel="noopener noreferrer"&gt;https://www.youtube.com/watch?v=lZ65zLtk_pI&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If you were familiar with &lt;code&gt;onetab&lt;/code&gt;, then you will also use &lt;code&gt;One Tab Group&lt;/code&gt; as well.&lt;/p&gt;

&lt;h2&gt;
  
  
  Features
&lt;/h2&gt;

&lt;p&gt;The following features are supported.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;⚡️ One click button to save all tabs in the chrome window as a new session&lt;/li&gt;
&lt;li&gt;🖱️ Hand pick tabs and store them as a new session in the context menu&lt;/li&gt;
&lt;li&gt;🗂️ Restore tabs

&lt;ul&gt;
&lt;li&gt;in current window&lt;/li&gt;
&lt;li&gt;in a new window&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;🔄 Sync your opened tabs in sidenav&lt;/li&gt;

&lt;li&gt;🤏 Reorganize tab sessions use Drag &amp;amp; Drop with ease&lt;/li&gt;

&lt;li&gt;🔲 Single Column View | Double Columns View | Timeline View&lt;/li&gt;

&lt;li&gt;📑 Save your session as json file&lt;/li&gt;

&lt;li&gt;🌛 Darkmode Support&lt;/li&gt;

&lt;li&gt;🌍 i18n Support&lt;/li&gt;

&lt;li&gt;⌨️ Command &lt;code&gt;K&lt;/code&gt; Interface - easily explore the opened tabs &amp;amp; tab groups&lt;/li&gt;

&lt;li&gt;🏷️ Visual Web Bookmark - Turn a link into a visual web bookmark with beautiful QRCode, you can share with others&lt;/li&gt;

&lt;li&gt;🔖 Support for migrate tabs data from &lt;code&gt;OneTab&lt;/code&gt; to &lt;code&gt;onetab.group&lt;/code&gt;
&lt;/li&gt;

&lt;li&gt;🔍 Search all tabs quickly using fuzzy search&lt;/li&gt;

&lt;/ul&gt;




&lt;p&gt;One Tab Group is focused on solving the problem of restoring tab groups as well.&lt;/p&gt;

&lt;p&gt;So, have fun. One Tab Group already release on Chrome Web Store.&lt;/p&gt;

&lt;p&gt;Here's the link: &lt;/p&gt;

&lt;p&gt;&lt;a href="https://chrome.google.com/webstore/detail/one-tab-group/lajbajamkpmkmldodfbljkjihppdclbm?hl=en-GB&amp;amp;authuser=0" rel="noopener noreferrer"&gt;One Tab Group Extension&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If you have any idea about it, welcome let me know&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/one-tab-group/onetab.group/issues/new" rel="noopener noreferrer"&gt;Suggest a Change&lt;/a&gt;&lt;/p&gt;

</description>
    </item>
    <item>
      <title>SHAS： A starter for the self-hosted app, help you to build your next full-stack project.</title>
      <dc:creator>Robert Shaw</dc:creator>
      <pubDate>Sat, 28 May 2022 02:51:10 +0000</pubDate>
      <link>https://dev.to/robertshaw/shas-a-starter-for-the-self-hosted-app-help-you-to-build-your-next-full-stack-project-4h3g</link>
      <guid>https://dev.to/robertshaw/shas-a-starter-for-the-self-hosted-app-help-you-to-build-your-next-full-stack-project-4h3g</guid>
      <description>&lt;h2&gt;
  
  
  Preview
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ff6a9uz68pzj7qy5p5tam.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ff6a9uz68pzj7qy5p5tam.png" alt="Preview" width="800" height="433"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://self-hosted-app-starter.up.railway.app/" rel="noopener noreferrer"&gt;Live Demo&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://xiaoluoboding.github.io/self-hosted-app-starter/" rel="noopener noreferrer"&gt;Documentation&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Features
&lt;/h2&gt;

&lt;blockquote&gt;
&lt;p&gt;SHA is built on top of GSVT Stack, which stands for Go、SQLite、Vue 3、TailwindCSS&lt;/p&gt;
&lt;/blockquote&gt;

&lt;ul&gt;
&lt;li&gt;🪄 Full-stack starter with GSVT Stack&lt;/li&gt;
&lt;li&gt;⚓️ Self-hosted with &lt;code&gt;Dockerfile&lt;/code&gt; on the fly&lt;/li&gt;
&lt;li&gt;💾 Store your data using the SQLite database&lt;/li&gt;
&lt;li&gt;🖖 Choosing your familiar Front-end Tech Stack, default is Vue 3&lt;/li&gt;
&lt;li&gt;🚄 Deploy your app easily on the Railway&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Tech Stack
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Back-end
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Go&lt;/li&gt;
&lt;li&gt;Air&lt;/li&gt;
&lt;li&gt;SQLite&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Front-end
&lt;/h3&gt;

&lt;p&gt;Generate by &lt;a href="https://github.com/xiaoluoboding/vue3-starter" rel="noopener noreferrer"&gt;vue3-starter&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Vue 3&lt;/li&gt;
&lt;li&gt;Vite&lt;/li&gt;
&lt;li&gt;WindiCSS&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Repo
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://github.com/xiaoluoboding/self-hosted-app-starter" rel="noopener noreferrer"&gt;https://github.com/xiaoluoboding/self-hosted-app-starter&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If you like it, please leave a star 🌟&lt;/p&gt;

</description>
      <category>vue</category>
      <category>go</category>
      <category>tailwindcss</category>
      <category>sqlite</category>
    </item>
    <item>
      <title>I built a Chrome Extension to turn any link into a stylish visual web bookmark</title>
      <dc:creator>Robert Shaw</dc:creator>
      <pubDate>Fri, 20 May 2022 06:43:12 +0000</pubDate>
      <link>https://dev.to/robertshaw/i-built-a-chrome-extension-to-turn-any-link-into-a-stylish-visual-web-bookmark-2ibe</link>
      <guid>https://dev.to/robertshaw/i-built-a-chrome-extension-to-turn-any-link-into-a-stylish-visual-web-bookmark-2ibe</guid>
      <description>&lt;p&gt;Hello everyone, I'm xiaoluoboding, a remote developer living in Dali, China.&lt;/p&gt;

&lt;p&gt;This topic focuses on sharing a Chrome Extension &lt;a href="https://chrome.google.com/webstore/detail/web-visual-bookmark/jcfidgjldodhkpiebmemhnhgpgdakham%20/" rel="noopener noreferrer"&gt;Web Visual Bookmark&lt;/a&gt;, which is the predecessor of &lt;a href="https://bookmark.style" rel="noopener noreferrer"&gt;bookmark.style&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Web Visual Bookmark
&lt;/h2&gt;

&lt;p&gt;This plugin mainly addresses its own needs, converting a link into a card like &lt;code&gt;Twitter Card&lt;/code&gt; or &lt;code&gt;Notion Web Bookmark&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;The generated image is suitable for developers, creators, and public writers, it can beautify your links and make your links "talk"&lt;/p&gt;

&lt;p&gt;The following image was generated by &lt;a href="https://chrome.google.com/webstore/detail/web-visual-bookmark/jcfidgjldodhkpiebmemhnhgpgdakham/" rel="noopener noreferrer"&gt;Web Visual Bookmark&lt;/a&gt; with the following link &lt;a href="https://www.producthunt.com/posts/bookmark-style" rel="noopener noreferrer"&gt;https://www.producthunt.com/posts/bookmark-style&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F63ti8pijcnypwnruf6mw.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F63ti8pijcnypwnruf6mw.png" alt="Web Visual Bookmark" width="800" height="429"&gt;&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;The plugin provides several features.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Clicking on the plugin Icon will convert the current Tab page link into a visual Web Bookmark card&lt;/li&gt;
&lt;li&gt;Twitter Card-like layout&lt;/li&gt;
&lt;li&gt;Notion Web bookmark-like layout&lt;/li&gt;
&lt;li&gt;Beautify gradient backgrounds (gradient backgrounds in the plugin are random)&lt;/li&gt;
&lt;li&gt;QR Code Reveal&lt;/li&gt;
&lt;li&gt;One-click image copy (@2x)&lt;/li&gt;
&lt;li&gt;Dark mode&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you want to customize the card, the plugin provides a configuration button, click to jump to &lt;a href="https://bookmark.style" rel="noopener noreferrer"&gt;bookmark.style&lt;/a&gt; to configure&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fbz4zlxo4o94nlnxbr7p3.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fbz4zlxo4o94nlnxbr7p3.png" alt="bookmark.style" width="800" height="720"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  bookmark.style
&lt;/h2&gt;

&lt;p&gt;Jump to bookmark.style and you can additionally configure the card&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Beautify the gradient background&lt;/li&gt;
&lt;li&gt;Turn on frosting effect&lt;/li&gt;
&lt;li&gt;Card rounding settings&lt;/li&gt;
&lt;li&gt;Download images&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F92ez1tvfektjxqeptwqn.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F92ez1tvfektjxqeptwqn.png" alt="Editor Panel" width="800" height="580"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Resources
&lt;/h2&gt;

&lt;p&gt;The tools mentioned above are all open source on GitHub, so if you have any requests, you can ask for them in the repository as an issue&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;chrome-web-bookmark - &lt;a href="https://github.com/one-tab-group/chrome-web-bookmark" rel="noopener noreferrer"&gt;https://github.com/one-tab-group/chrome-web-bookmark&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;bookmark.style - &lt;a href="https://github.com/one-tab-group/bookmark.style" rel="noopener noreferrer"&gt;https://github.com/one-tab-group/bookmark.style&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Support
&lt;/h2&gt;

&lt;p&gt;If bookmark.style has helped you, please don't hesitate to vote for it on &lt;a href="https://www.producthunt.com/posts/bookmark-style" rel="noopener noreferrer"&gt;ProductHunt&lt;/a&gt;, share it with your friends, or ☕️ buy me a cup of coffee.&lt;/p&gt;

&lt;h2&gt;
  
  
  About Me
&lt;/h2&gt;

&lt;p&gt;! &lt;a href="https://files.mdnice.com/user/6210/25da51e3-19ad-4ecb-9f53-065a7aa874c2.png" rel="noopener noreferrer"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Remote worker living in Dali, China, focused on front-end, often active in the open source community&lt;/li&gt;
&lt;li&gt;You can find me on GitHub: &lt;a href="https://github.com/xiaoluoboding" rel="noopener noreferrer"&gt;https://github.com/xiaoluoboding&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Interested students can also follow my public number: I usually share some front-end technology stack, and front-end technology solutions, and occasionally share my life in Dali.&lt;/li&gt;
&lt;li&gt;Or follow me on &lt;a href="https://twitter.com/xiaoluoboding" rel="noopener noreferrer"&gt;Twitter&lt;/a&gt;: I'm a daily tweeter of great tools to improve front-end development performance and productivity.&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>chrome</category>
      <category>vue</category>
    </item>
    <item>
      <title>Use Vuex With Composition API Helpers</title>
      <dc:creator>Robert Shaw</dc:creator>
      <pubDate>Thu, 10 Dec 2020 14:45:14 +0000</pubDate>
      <link>https://dev.to/robertshaw/use-vuex-with-composition-api-helpers-48e0</link>
      <guid>https://dev.to/robertshaw/use-vuex-with-composition-api-helpers-48e0</guid>
      <description>&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F6c1x062vmb8fexuwqcw3.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F6c1x062vmb8fexuwqcw3.png" alt="Alt Text" width="800" height="231"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Recently, I'm focus on build a new wheel, I implement &lt;a href="https://github.com/vuejs/vuex/issues/1725" rel="noopener noreferrer"&gt;useXXX helpers&lt;/a&gt; for Vuex, and I'm consider about to contribute in Vuex, then i found that, the useXXX helpers proposal already exist nearly eight months.&lt;/p&gt;

&lt;p&gt;checkout &lt;a href="https://github.com/vueblocks/vue-use-utilities#vuex" rel="noopener noreferrer"&gt;https://github.com/vueblocks/vue-use-utilities#vuex&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;@vueblocks/vue-use-vuex&lt;/code&gt; - Use Vuex With Composition API Easily. It build on top of &lt;code&gt;vue-demi&lt;/code&gt; &amp;amp; &lt;code&gt;@vue/compostion-api&lt;/code&gt;. It works both for Vue 2 &amp;amp; 3, TypeScript Supported too.&lt;/p&gt;

&lt;h3&gt;
  
  
  useVuex
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;useState&lt;/code&gt; - same as &lt;code&gt;mapState&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;useGetters&lt;/code&gt; - same as &lt;code&gt;mapGetters&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;useMutations&lt;/code&gt; - same as &lt;code&gt;mapMutations&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;useActions&lt;/code&gt; - same as &lt;code&gt;mapActions&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  useStore
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;useStore&lt;/code&gt; - same as Vuex 4.x composition api &lt;a href="https://next.vuex.vuejs.org/guide/composition-api.html" rel="noopener noreferrer"&gt;useStore&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Usage
&lt;/h3&gt;

&lt;h4&gt;
  
  
  useState
&lt;/h4&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;useVuex&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;@vueblocks/vue-use-vuex&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;

&lt;span class="k"&gt;export&lt;/span&gt; &lt;span class="k"&gt;default&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="c1"&gt;// ...&lt;/span&gt;
  &lt;span class="nf"&gt;setup &lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="c1"&gt;// Use the useState as you would use mapState&lt;/span&gt;
    &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;useState&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;useVuex&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;

    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="c1"&gt;// mix this into the outer object with the object spread operator&lt;/span&gt;
      &lt;span class="p"&gt;...&lt;/span&gt;&lt;span class="nf"&gt;useState&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
        &lt;span class="c1"&gt;// arrow functions can make the code very succinct!&lt;/span&gt;
        &lt;span class="na"&gt;count&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;state&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nx"&gt;state&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;count&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;

        &lt;span class="c1"&gt;// passing the string value 'count' is same as `state =&amp;gt; state.count`&lt;/span&gt;
        &lt;span class="na"&gt;countAlias&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;count&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;

        &lt;span class="c1"&gt;// to access local state with `this`, a normal function must be used&lt;/span&gt;
        &lt;span class="nf"&gt;countPlusLocalState &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;state&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
          &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nx"&gt;state&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;count&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="k"&gt;this&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;localCount&lt;/span&gt;
        &lt;span class="p"&gt;}&lt;/span&gt;
      &lt;span class="p"&gt;}),&lt;/span&gt;
      &lt;span class="p"&gt;...&lt;/span&gt;&lt;span class="nf"&gt;mapState&lt;/span&gt;&lt;span class="p"&gt;([&lt;/span&gt;
        &lt;span class="c1"&gt;// map count&amp;lt;ComputedRef&amp;gt; to store.state.count&lt;/span&gt;
        &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;count&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;
      &lt;span class="p"&gt;])&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h4&gt;
  
  
  useGetters
&lt;/h4&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;useVuex&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;@vueblocks/vue-use-vuex&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;

&lt;span class="k"&gt;export&lt;/span&gt; &lt;span class="k"&gt;default&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="c1"&gt;// ...&lt;/span&gt;
  &lt;span class="nf"&gt;setup &lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="c1"&gt;// Use the useGetters as you would use mapGetters&lt;/span&gt;
    &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;useGetters&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;useVuex&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;

    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="c1"&gt;// mix the getters into outer object with the object spread operator&lt;/span&gt;
      &lt;span class="p"&gt;...&lt;/span&gt;&lt;span class="nf"&gt;useGetters&lt;/span&gt;&lt;span class="p"&gt;([&lt;/span&gt;
        &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;doneTodosCount&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;anotherGetter&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="c1"&gt;// ...&lt;/span&gt;
      &lt;span class="p"&gt;]),&lt;/span&gt;
      &lt;span class="c1"&gt;// if you want to map a getter to a different name, use an object:&lt;/span&gt;
      &lt;span class="p"&gt;...&lt;/span&gt;&lt;span class="nf"&gt;mapGetters&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
        &lt;span class="c1"&gt;// map `doneCount&amp;lt;ComputedRef&amp;gt;` to `this.$store.getters.doneTodosCount`&lt;/span&gt;
        &lt;span class="na"&gt;doneCount&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;doneTodosCount&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;
      &lt;span class="p"&gt;})&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h4&gt;
  
  
  useMutations
&lt;/h4&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;useVuex&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;@vueblocks/vue-use-vuex&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;

&lt;span class="k"&gt;export&lt;/span&gt; &lt;span class="k"&gt;default&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="c1"&gt;// ...&lt;/span&gt;
  &lt;span class="nf"&gt;setup &lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="c1"&gt;// Use the useMutations as you would use mapMutations&lt;/span&gt;
    &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;useMutations&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;useVuex&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;

    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="p"&gt;...&lt;/span&gt;&lt;span class="nf"&gt;useMutations&lt;/span&gt;&lt;span class="p"&gt;([&lt;/span&gt;
        &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;increment&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="c1"&gt;// map `increment()` to `this.$store.commit('increment')`&lt;/span&gt;

        &lt;span class="c1"&gt;// `mapMutations` also supports payloads:&lt;/span&gt;
        &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;incrementBy&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt; &lt;span class="c1"&gt;// map `incrementBy(amount)` to `this.$store.commit('incrementBy', amount)`&lt;/span&gt;
      &lt;span class="p"&gt;]),&lt;/span&gt;
      &lt;span class="p"&gt;...&lt;/span&gt;&lt;span class="nf"&gt;useMutations&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
        &lt;span class="na"&gt;add&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;increment&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt; &lt;span class="c1"&gt;// map `add()` to `this.$store.commit('increment')`&lt;/span&gt;
      &lt;span class="p"&gt;})&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h4&gt;
  
  
  useActions
&lt;/h4&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;useVuex&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;@vueblocks/vue-use-vuex&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;

&lt;span class="k"&gt;export&lt;/span&gt; &lt;span class="k"&gt;default&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="c1"&gt;// ...&lt;/span&gt;
  &lt;span class="nf"&gt;setup &lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="c1"&gt;// Use the useActions as you would use mapActions&lt;/span&gt;
    &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;useActions&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;useVuex&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;

    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="p"&gt;...&lt;/span&gt;&lt;span class="nf"&gt;useActions&lt;/span&gt;&lt;span class="p"&gt;([&lt;/span&gt;
        &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;increment&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="c1"&gt;// map `increment()` to `this.$store.dispatch('increment')`&lt;/span&gt;

        &lt;span class="c1"&gt;// `mapActions` also supports payloads:&lt;/span&gt;
        &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;incrementBy&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt; &lt;span class="c1"&gt;// map `incrementBy(amount)` to `this.$store.dispatch('incrementBy', amount)`&lt;/span&gt;
      &lt;span class="p"&gt;]),&lt;/span&gt;
      &lt;span class="p"&gt;...&lt;/span&gt;&lt;span class="nf"&gt;useActions&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
        &lt;span class="na"&gt;add&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;increment&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt; &lt;span class="c1"&gt;// map `add()` to `this.$store.dispatch('increment')`&lt;/span&gt;
      &lt;span class="p"&gt;})&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h4&gt;
  
  
  namespacing
&lt;/h4&gt;

&lt;p&gt;also support&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="c1"&gt;// Get namespaced component binding helpers in useVuex&lt;/span&gt;
&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;useVuex&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;@vueblocks/vue-use-vuex&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;

&lt;span class="k"&gt;export&lt;/span&gt; &lt;span class="k"&gt;default&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nf"&gt;setup &lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;mapState&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;mapActions&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;useVuex&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;some/nested/module&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="c1"&gt;// look up in `some/nested/module`&lt;/span&gt;
      &lt;span class="p"&gt;...&lt;/span&gt;&lt;span class="nf"&gt;mapState&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
        &lt;span class="na"&gt;a&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;state&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nx"&gt;state&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;a&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="na"&gt;b&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;state&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nx"&gt;state&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;b&lt;/span&gt;
      &lt;span class="p"&gt;})&lt;/span&gt;
      &lt;span class="c1"&gt;// look up in `some/nested/module`&lt;/span&gt;
      &lt;span class="p"&gt;...&lt;/span&gt;&lt;span class="nf"&gt;mapActions&lt;/span&gt;&lt;span class="p"&gt;([&lt;/span&gt;
        &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;foo&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;bar&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;
      &lt;span class="p"&gt;])&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;It seems familiar right?  Yeah, You could think of &lt;code&gt;@vueblocks/vue-use-vuex&lt;/code&gt; as a wrapper of &lt;code&gt;Vuex Helpers&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://vue-use-utilities.vercel.app/guide/vuex/useVuex.html" rel="noopener noreferrer"&gt;Read Docs&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;But, I'm didn't think too much about type safety, and i am still learning TypeScript. If you're interested it, Please help me improve it.&lt;/p&gt;

&lt;p&gt;PRs Welcome in &lt;a href="https://github.com/vueblocks/vue-use-utilities" rel="noopener noreferrer"&gt;@vueblocks/vue-use-utilities&lt;/a&gt;&lt;/p&gt;

</description>
      <category>vue2</category>
      <category>vue3</category>
      <category>composition</category>
      <category>vuex</category>
    </item>
    <item>
      <title>I built a VSCode extension: Folder Size</title>
      <dc:creator>Robert Shaw</dc:creator>
      <pubDate>Mon, 28 Sep 2020 02:40:01 +0000</pubDate>
      <link>https://dev.to/robertshaw/i-built-a-vscode-extension-folder-size-81o</link>
      <guid>https://dev.to/robertshaw/i-built-a-vscode-extension-folder-size-81o</guid>
      <description>&lt;p&gt;At the beginning of this year, I planned a task on to-do, which was to develop a VSCode extension for the purpose of solving my own needs.&lt;/p&gt;

&lt;p&gt;Recently, I have a small idea, I wanted counting the size of a file or folder without leaving the VSCode editor.&lt;/p&gt;

&lt;p&gt;However, there is no such extension in the VSCode Extension Market.&lt;/p&gt;

&lt;p&gt;So I began to build wheels&lt;/p&gt;




&lt;h2&gt;
  
  
  Install
&lt;/h2&gt;

&lt;p&gt;You can Install the extension in the website &lt;a href="https://marketplace.visualstudio.com/items?itemName=xiaoluoboding.vscode-folder-size" rel="noopener noreferrer"&gt;Folder Size&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;or&lt;/p&gt;

&lt;p&gt;Search "Folder Size" in Extension Market.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvre9usvloy4ok7273nfq.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvre9usvloy4ok7273nfq.png" alt="install" width="800" height="300"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Preview
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwjn1qqo4892xd74utaw9.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwjn1qqo4892xd74utaw9.jpg" width="800" height="600"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Features
&lt;/h2&gt;

&lt;p&gt;Currently, Folder Size has two statistical functions are supported&lt;/p&gt;

&lt;h3&gt;
  
  
  Count the [file | folder] size
&lt;/h3&gt;

&lt;p&gt;When you selected/opened/saved file, extension will show the status of [📃 file | 📁 folder] size in the status bar.&lt;/p&gt;

&lt;h3&gt;
  
  
  Show Number of statistical files
&lt;/h3&gt;

&lt;p&gt;Click on the status bar to display the number of files and statistics in the folder where the selected file is located&lt;/p&gt;




&lt;p&gt;👏 Welcome to try it.&lt;/p&gt;

</description>
      <category>vscode</category>
      <category>typescript</category>
      <category>extension</category>
    </item>
    <item>
      <title>GitHub Awesome Starless Repositories</title>
      <dc:creator>Robert Shaw</dc:creator>
      <pubDate>Wed, 15 Jul 2020 16:00:21 +0000</pubDate>
      <link>https://dev.to/robertshaw/github-awesome-starless-repositories-2bjl</link>
      <guid>https://dev.to/robertshaw/github-awesome-starless-repositories-2bjl</guid>
      <description>&lt;h1&gt;
  
  
  Awesome Starless
&lt;/h1&gt;

&lt;p&gt;&lt;a href="https://github.com/xiaoluoboding/awesome-starless" rel="noopener noreferrer"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fgh-card.dev%2Frepos%2Fxiaoluoboding%2Fawesome-starless.svg%3Ffullname%3D" alt="xiaoluoboding/awesome-starless-GitHub" width="442" height="130"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;A curated list of awesome repositories with few stargazers but many users.&lt;/p&gt;

&lt;p&gt;Most of these repositories were the cornerstone of front-end development.&lt;/p&gt;

&lt;h2&gt;
  
  
  How defined &lt;strong&gt;Starless&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;I recommend the repos is usefully and the stargazers were disproportionate to the used by count.&lt;/p&gt;

&lt;p&gt;If you like it, please give it  a star ✨, thank you.&lt;/p&gt;




&lt;blockquote&gt;
&lt;p&gt;Generated at 2020-07-12 21:18:37.&lt;/p&gt;
&lt;/blockquote&gt;




&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
  &lt;thead&gt;
    &lt;th&gt;#&lt;/th&gt;
    &lt;th&gt;Owner/Repo&lt;/th&gt;
    &lt;th&gt;Star&lt;/th&gt;
    
    &lt;th&gt;Used By&lt;/th&gt;
    &lt;th&gt;Proportion&lt;/th&gt;
    &lt;th&gt;Picture&lt;/th&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
    
  &lt;tr&gt;
    &lt;th&gt;#1&lt;/th&gt;
    &lt;td&gt;&lt;a href="https://github.com/component/has-cors" rel="noopener noreferrer"&gt;component/has-cors&lt;/a&gt;&lt;/td&gt;
    &lt;td&gt;16&lt;/td&gt;
    &lt;td&gt;1621063&lt;/td&gt;
    &lt;td&gt;101316&lt;/td&gt;
    &lt;td&gt;&lt;a href="https://github.com/component" rel="noopener noreferrer"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Favatars1.githubusercontent.com%2Fu%2F1687071%3Fv%3D4" width="460" height="460"&gt;&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
  
          
  &lt;tr&gt;
    &lt;th&gt;#2&lt;/th&gt;
    &lt;td&gt;&lt;a href="https://github.com/jonschlinkert/is-plain-object" rel="noopener noreferrer"&gt;jonschlinkert/is-plain-object&lt;/a&gt;&lt;/td&gt;
    &lt;td&gt;101&lt;/td&gt;
    &lt;td&gt;5369213&lt;/td&gt;
    &lt;td&gt;53160&lt;/td&gt;
    &lt;td&gt;&lt;a href="https://github.com/jonschlinkert" rel="noopener noreferrer"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Favatars0.githubusercontent.com%2Fu%2F383994%3Fv%3D4" width="338" height="338"&gt;&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
  
          
  &lt;tr&gt;
    &lt;th&gt;#3&lt;/th&gt;
    &lt;td&gt;&lt;a href="https://github.com/component/is-module" rel="noopener noreferrer"&gt;component/is-module&lt;/a&gt;&lt;/td&gt;
    &lt;td&gt;6&lt;/td&gt;
    &lt;td&gt;167455&lt;/td&gt;
    &lt;td&gt;27909&lt;/td&gt;
    &lt;td&gt;&lt;a href="https://github.com/component" rel="noopener noreferrer"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Favatars1.githubusercontent.com%2Fu%2F1687071%3Fv%3D4" width="460" height="460"&gt;&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
  
          
  &lt;tr&gt;
    &lt;th&gt;#4&lt;/th&gt;
    &lt;td&gt;&lt;a href="https://github.com/sindresorhus/slash" rel="noopener noreferrer"&gt;sindresorhus/slash&lt;/a&gt;&lt;/td&gt;
    &lt;td&gt;174&lt;/td&gt;
    &lt;td&gt;4629774&lt;/td&gt;
    &lt;td&gt;26607&lt;/td&gt;
    &lt;td&gt;&lt;a href="https://github.com/sindresorhus" rel="noopener noreferrer"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Favatars1.githubusercontent.com%2Fu%2F170270%3Fv%3D4" width="460" height="460"&gt;&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
  
          
  &lt;tr&gt;
    &lt;th&gt;#5&lt;/th&gt;
    &lt;td&gt;&lt;a href="https://github.com/component/escape-html" rel="noopener noreferrer"&gt;component/escape-html&lt;/a&gt;&lt;/td&gt;
    &lt;td&gt;277&lt;/td&gt;
    &lt;td&gt;6300754&lt;/td&gt;
    &lt;td&gt;22746&lt;/td&gt;
    &lt;td&gt;&lt;a href="https://github.com/component" rel="noopener noreferrer"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Favatars1.githubusercontent.com%2Fu%2F1687071%3Fv%3D4" width="460" height="460"&gt;&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
  
          
  &lt;tr&gt;
    &lt;th&gt;#6&lt;/th&gt;
    &lt;td&gt;&lt;a href="https://github.com/browserify/resolve" rel="noopener noreferrer"&gt;browserify/resolve&lt;/a&gt;&lt;/td&gt;
    &lt;td&gt;591&lt;/td&gt;
    &lt;td&gt;5710002&lt;/td&gt;
    &lt;td&gt;9661&lt;/td&gt;
    &lt;td&gt;&lt;a href="https://github.com/browserify" rel="noopener noreferrer"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Favatars2.githubusercontent.com%2Fu%2F6320506%3Fv%3D4" width="213" height="213"&gt;&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
  
          
  &lt;tr&gt;
    &lt;th&gt;#7&lt;/th&gt;
    &lt;td&gt;&lt;a href="https://github.com/sindresorhus/globby" rel="noopener noreferrer"&gt;sindresorhus/globby&lt;/a&gt;&lt;/td&gt;
    &lt;td&gt;1465&lt;/td&gt;
    &lt;td&gt;4340481&lt;/td&gt;
    &lt;td&gt;2962&lt;/td&gt;
    &lt;td&gt;&lt;a href="https://github.com/sindresorhus" rel="noopener noreferrer"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Favatars1.githubusercontent.com%2Fu%2F170270%3Fv%3D4" width="460" height="460"&gt;&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
  
          
  &lt;tr&gt;
    &lt;th&gt;#8&lt;/th&gt;
    &lt;td&gt;&lt;a href="https://github.com/mozilla/source-map" rel="noopener noreferrer"&gt;mozilla/source-map&lt;/a&gt;&lt;/td&gt;
    &lt;td&gt;2286&lt;/td&gt;
    &lt;td&gt;6323013&lt;/td&gt;
    &lt;td&gt;2765&lt;/td&gt;
    &lt;td&gt;&lt;a href="https://github.com/mozilla" rel="noopener noreferrer"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Favatars2.githubusercontent.com%2Fu%2F131524%3Fv%3D4" width="460" height="460"&gt;&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
  
          
  &lt;tr&gt;
    &lt;th&gt;#9&lt;/th&gt;
    &lt;td&gt;&lt;a href="https://github.com/csstree/csstree" rel="noopener noreferrer"&gt;csstree/csstree&lt;/a&gt;&lt;/td&gt;
    &lt;td&gt;960&lt;/td&gt;
    &lt;td&gt;1844805&lt;/td&gt;
    &lt;td&gt;1921&lt;/td&gt;
    &lt;td&gt;&lt;a href="https://github.com/csstree" rel="noopener noreferrer"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Favatars3.githubusercontent.com%2Fu%2F18097402%3Fv%3D4" width="200" height="200"&gt;&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
  
          
  &lt;tr&gt;
    &lt;th&gt;#10&lt;/th&gt;
    &lt;td&gt;&lt;a href="https://github.com/isaacs/node-lru-cache" rel="noopener noreferrer"&gt;isaacs/node-lru-cache&lt;/a&gt;&lt;/td&gt;
    &lt;td&gt;3226&lt;/td&gt;
    &lt;td&gt;5904048&lt;/td&gt;
    &lt;td&gt;1830&lt;/td&gt;
    &lt;td&gt;&lt;a href="https://github.com/isaacs" rel="noopener noreferrer"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Favatars2.githubusercontent.com%2Fu%2F9287%3Fv%3D4" width="256" height="256"&gt;&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
  
          
  &lt;tr&gt;
    &lt;th&gt;#11&lt;/th&gt;
    &lt;td&gt;&lt;a href="https://github.com/eemeli/yaml" rel="noopener noreferrer"&gt;eemeli/yaml&lt;/a&gt;&lt;/td&gt;
    &lt;td&gt;242&lt;/td&gt;
    &lt;td&gt;433411&lt;/td&gt;
    &lt;td&gt;1790&lt;/td&gt;
    &lt;td&gt;&lt;a href="https://github.com/eemeli" rel="noopener noreferrer"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Favatars2.githubusercontent.com%2Fu%2F617000%3Fv%3D4" width="460" height="460"&gt;&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
  
          
  &lt;tr&gt;
    &lt;th&gt;#12&lt;/th&gt;
    &lt;td&gt;&lt;a href="https://github.com/isaacs/rimraf" rel="noopener noreferrer"&gt;isaacs/rimraf&lt;/a&gt;&lt;/td&gt;
    &lt;td&gt;3841&lt;/td&gt;
    &lt;td&gt;6271591&lt;/td&gt;
    &lt;td&gt;1632&lt;/td&gt;
    &lt;td&gt;&lt;a href="https://github.com/isaacs" rel="noopener noreferrer"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Favatars2.githubusercontent.com%2Fu%2F9287%3Fv%3D4" width="256" height="256"&gt;&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
  
          
  &lt;tr&gt;
    &lt;th&gt;#13&lt;/th&gt;
    &lt;td&gt;&lt;a href="https://github.com/substack/minimist" rel="noopener noreferrer"&gt;substack/minimist&lt;/a&gt;&lt;/td&gt;
    &lt;td&gt;4236&lt;/td&gt;
    &lt;td&gt;6845693&lt;/td&gt;
    &lt;td&gt;1616&lt;/td&gt;
    &lt;td&gt;&lt;a href="https://github.com/substack" rel="noopener noreferrer"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Favatars0.githubusercontent.com%2Fu%2F12631%3Fv%3D4" width="420" height="420"&gt;&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
  
          
  &lt;tr&gt;
    &lt;th&gt;#14&lt;/th&gt;
    &lt;td&gt;&lt;a href="https://github.com/Rich-Harris/estree-walker" rel="noopener noreferrer"&gt;Rich-Harris/estree-walker&lt;/a&gt;&lt;/td&gt;
    &lt;td&gt;130&lt;/td&gt;
    &lt;td&gt;206397&lt;/td&gt;
    &lt;td&gt;1587&lt;/td&gt;
    &lt;td&gt;&lt;a href="https://github.com/Rich-Harris" rel="noopener noreferrer"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Favatars3.githubusercontent.com%2Fu%2F1162160%3Fv%3D4" width="460" height="460"&gt;&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
  
          
  &lt;tr&gt;
    &lt;th&gt;#15&lt;/th&gt;
    &lt;td&gt;&lt;a href="https://github.com/MikeMcl/big.js" rel="noopener noreferrer"&gt;MikeMcl/big.js&lt;/a&gt;&lt;/td&gt;
    &lt;td&gt;2823&lt;/td&gt;
    &lt;td&gt;4181373&lt;/td&gt;
    &lt;td&gt;1481&lt;/td&gt;
    &lt;td&gt;&lt;a href="https://github.com/MikeMcl" rel="noopener noreferrer"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Favatars0.githubusercontent.com%2Fu%2F921201%3Fv%3D4" width="420" height="420"&gt;&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
  
          
  &lt;tr&gt;
    &lt;th&gt;#16&lt;/th&gt;
    &lt;td&gt;&lt;a href="https://github.com/isaacs/node-glob" rel="noopener noreferrer"&gt;isaacs/node-glob&lt;/a&gt;&lt;/td&gt;
    &lt;td&gt;6458&lt;/td&gt;
    &lt;td&gt;6451079&lt;/td&gt;
    &lt;td&gt;998&lt;/td&gt;
    &lt;td&gt;&lt;a href="https://github.com/isaacs" rel="noopener noreferrer"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Favatars2.githubusercontent.com%2Fu%2F9287%3Fv%3D4" width="256" height="256"&gt;&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
  
          
  &lt;tr&gt;
    &lt;th&gt;#17&lt;/th&gt;
    &lt;td&gt;&lt;a href="https://github.com/facebook/prop-types" rel="noopener noreferrer"&gt;facebook/prop-types&lt;/a&gt;&lt;/td&gt;
    &lt;td&gt;3562&lt;/td&gt;
    &lt;td&gt;2552354&lt;/td&gt;
    &lt;td&gt;716&lt;/td&gt;
    &lt;td&gt;&lt;a href="https://github.com/facebook" rel="noopener noreferrer"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Favatars3.githubusercontent.com%2Fu%2F69631%3Fv%3D4" width="400" height="400"&gt;&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
  
          
  &lt;tr&gt;
    &lt;th&gt;#18&lt;/th&gt;
    &lt;td&gt;&lt;a href="https://github.com/browserslist/browserslist" rel="noopener noreferrer"&gt;browserslist/browserslist&lt;/a&gt;&lt;/td&gt;
    &lt;td&gt;7824&lt;/td&gt;
    &lt;td&gt;4530399&lt;/td&gt;
    &lt;td&gt;579&lt;/td&gt;
    &lt;td&gt;&lt;a href="https://github.com/browserslist" rel="noopener noreferrer"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Favatars0.githubusercontent.com%2Fu%2F37521022%3Fv%3D4" width="460" height="460"&gt;&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
  
          
  &lt;tr&gt;
    &lt;th&gt;#19&lt;/th&gt;
    &lt;td&gt;&lt;a href="https://github.com/tigt/mini-svg-data-uri" rel="noopener noreferrer"&gt;tigt/mini-svg-data-uri&lt;/a&gt;&lt;/td&gt;
    &lt;td&gt;123&lt;/td&gt;
    &lt;td&gt;47350&lt;/td&gt;
    &lt;td&gt;384&lt;/td&gt;
    &lt;td&gt;&lt;a href="https://github.com/tigt" rel="noopener noreferrer"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Favatars2.githubusercontent.com%2Fu%2F8072522%3Fv%3D4" width="460" height="460"&gt;&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
  
          
  &lt;tr&gt;
    &lt;th&gt;#20&lt;/th&gt;
    &lt;td&gt;&lt;a href="https://github.com/postcss/postcss-color-function" rel="noopener noreferrer"&gt;postcss/postcss-color-function&lt;/a&gt;&lt;/td&gt;
    &lt;td&gt;303&lt;/td&gt;
    &lt;td&gt;104535&lt;/td&gt;
    &lt;td&gt;345&lt;/td&gt;
    &lt;td&gt;&lt;a href="https://github.com/postcss" rel="noopener noreferrer"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Favatars0.githubusercontent.com%2Fu%2F8296347%3Fv%3D4" width="460" height="460"&gt;&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
  
          
  &lt;tr&gt;
    &lt;th&gt;#21&lt;/th&gt;
    &lt;td&gt;&lt;a href="https://github.com/postcss/sugarss" rel="noopener noreferrer"&gt;postcss/sugarss&lt;/a&gt;&lt;/td&gt;
    &lt;td&gt;581&lt;/td&gt;
    &lt;td&gt;111009&lt;/td&gt;
    &lt;td&gt;191&lt;/td&gt;
    &lt;td&gt;&lt;a href="https://github.com/postcss" rel="noopener noreferrer"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Favatars0.githubusercontent.com%2Fu%2F8296347%3Fv%3D4" width="460" height="460"&gt;&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
  
          
  &lt;tr&gt;
    &lt;th&gt;#22&lt;/th&gt;
    &lt;td&gt;&lt;a href="https://github.com/sindresorhus/matcher" rel="noopener noreferrer"&gt;sindresorhus/matcher&lt;/a&gt;&lt;/td&gt;
    &lt;td&gt;453&lt;/td&gt;
    &lt;td&gt;81073&lt;/td&gt;
    &lt;td&gt;178&lt;/td&gt;
    &lt;td&gt;&lt;a href="https://github.com/sindresorhus" rel="noopener noreferrer"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Favatars1.githubusercontent.com%2Fu%2F170270%3Fv%3D4" width="460" height="460"&gt;&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
  
          
  &lt;tr&gt;
    &lt;th&gt;#23&lt;/th&gt;
    &lt;td&gt;&lt;a href="https://github.com/yyx990803/register-service-worker" rel="noopener noreferrer"&gt;yyx990803/register-service-worker&lt;/a&gt;&lt;/td&gt;
    &lt;td&gt;454&lt;/td&gt;
    &lt;td&gt;50680&lt;/td&gt;
    &lt;td&gt;111&lt;/td&gt;
    &lt;td&gt;&lt;a href="https://github.com/yyx990803" rel="noopener noreferrer"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Favatars1.githubusercontent.com%2Fu%2F499550%3Fv%3D4" width="392" height="392"&gt;&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
  
          
  &lt;tr&gt;
    &lt;th&gt;#24&lt;/th&gt;
    &lt;td&gt;&lt;a href="https://github.com/remarkjs/remark" rel="noopener noreferrer"&gt;remarkjs/remark&lt;/a&gt;&lt;/td&gt;
    &lt;td&gt;3115&lt;/td&gt;
    &lt;td&gt;124821&lt;/td&gt;
    &lt;td&gt;40&lt;/td&gt;
    &lt;td&gt;&lt;a href="https://github.com/remarkjs" rel="noopener noreferrer"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Favatars2.githubusercontent.com%2Fu%2F16309564%3Fv%3D4" width="460" height="460"&gt;&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
  
          
  &lt;tr&gt;
    &lt;th&gt;#25&lt;/th&gt;
    &lt;td&gt;&lt;a href="https://github.com/knicklabs/lorem-ipsum.js" rel="noopener noreferrer"&gt;knicklabs/lorem-ipsum.js&lt;/a&gt;&lt;/td&gt;
    &lt;td&gt;187&lt;/td&gt;
    &lt;td&gt;4685&lt;/td&gt;
    &lt;td&gt;25&lt;/td&gt;
    &lt;td&gt;&lt;a href="https://github.com/knicklabs" rel="noopener noreferrer"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Favatars3.githubusercontent.com%2Fu%2F431654%3Fv%3D4" width="400" height="400"&gt;&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
  
          
  &lt;tr&gt;
    &lt;th&gt;#26&lt;/th&gt;
    &lt;td&gt;&lt;a href="https://github.com/zeit/serve" rel="noopener noreferrer"&gt;zeit/serve&lt;/a&gt;&lt;/td&gt;
    &lt;td&gt;5945&lt;/td&gt;
    &lt;td&gt;69162&lt;/td&gt;
    &lt;td&gt;11&lt;/td&gt;
    &lt;td&gt;&lt;a href="https://github.com/zeit" rel="noopener noreferrer"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Favatars0.githubusercontent.com%2Fu%2F14985020%3Fv%3D4" width="460" height="460"&gt;&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
  
          
  &lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  Credits
&lt;/h2&gt;

&lt;p&gt;Inspired by &lt;a href="https://gist.github.com/paulmillr/2657075" rel="noopener noreferrer"&gt;Most active GitHub users&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  License
&lt;/h2&gt;

&lt;p&gt;MIT © &lt;a href="https://github.com/xiaoluoboding" rel="noopener noreferrer"&gt;xiaoluoboding&lt;/a&gt;&lt;/p&gt;

</description>
      <category>github</category>
      <category>awesome</category>
      <category>frontend</category>
      <category>javascript</category>
    </item>
    <item>
      <title>Release Ghost Blog Theme Kaldorei 3.0</title>
      <dc:creator>Robert Shaw</dc:creator>
      <pubDate>Sat, 06 Jun 2020 16:39:32 +0000</pubDate>
      <link>https://dev.to/robertshaw/release-ghost-blog-theme-kaldorei-3-0-2iga</link>
      <guid>https://dev.to/robertshaw/release-ghost-blog-theme-kaldorei-3-0-2iga</guid>
      <description>&lt;h2&gt;
  
  
  Kaldorei
&lt;/h2&gt;

&lt;p&gt;A Simple And Elegant Ghost Theme Derive From Default Theme Casper&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/xiaoluoboding/ghost-theme-kaldorei" rel="noopener noreferrer"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fgh-card.dev%2Frepos%2Fxiaoluoboding%2Fghost-theme-kaldorei.svg" alt="xiaoluoboding/ghost-theme-kaldorei - GitHub" width="442" height="130"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Preview
&lt;/h2&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;a href="http://blog.xlbd.me" rel="noopener noreferrer"&gt;http://blog.xlbd.me&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fo8bmo4wygjqpnqniek25.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fo8bmo4wygjqpnqniek25.png" alt="preview" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Features
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;[x] Blog main theme is set to be fresh green&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;[x] The post's font color is ink blue&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;[x] Back To Top&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;[x] Code Highlight&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;[x] Side Bar&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;[x] Tag Cloud&lt;/li&gt;
&lt;li&gt;[x] Table of Content&lt;/li&gt;
&lt;li&gt;[x] Site Info&lt;/li&gt;
&lt;li&gt;[x] Author Info&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;p&gt;[x] Post Page&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;[x] Author Info&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;&lt;p&gt;[x] Loading Post Animation&lt;/p&gt;&lt;/li&gt;

&lt;li&gt;&lt;p&gt;[x] Responsive Design&lt;/p&gt;&lt;/li&gt;

&lt;li&gt;&lt;p&gt;[x] Archives&lt;/p&gt;&lt;/li&gt;

&lt;li&gt;&lt;p&gt;[x] Image LightBox&lt;/p&gt;&lt;/li&gt;

&lt;li&gt;&lt;p&gt;[x] Blog Global Search&lt;/p&gt;&lt;/li&gt;

&lt;li&gt;&lt;p&gt;[x] Color &amp;amp; Fonts&lt;/p&gt;&lt;/li&gt;

&lt;/ul&gt;

&lt;h2&gt;
  
  
  Config Reference
&lt;/h2&gt;

&lt;h3&gt;
  
  
  🌐 Language ^2.x
&lt;/h3&gt;

&lt;p&gt;Ghost2.x version supports set the language of your site, &lt;code&gt;Kaldorei&lt;/code&gt; also supports Chinese/English switching, the default value is &lt;code&gt;en&lt;/code&gt;.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Configure：ghost admin &amp;gt; &lt;code&gt;General&lt;/code&gt; &amp;gt; &lt;code&gt;Publication Language&lt;/code&gt; Enter &lt;code&gt;zh&lt;/code&gt; &lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3&gt;
  
  
  🏷️ Tag Statistics ^2.x
&lt;/h3&gt;

&lt;p&gt;In Ghost2.x version, Kaldorei uses the ghost api for statistics. so you need to enable the &lt;code&gt;Public API&lt;/code&gt; function in the Ghost Labs.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Configure：ghost admin &amp;gt; &lt;code&gt;Labs&lt;/code&gt; &amp;gt; &lt;code&gt;Enable Beta Features&lt;/code&gt; &amp;gt; &lt;code&gt;Checked Public API&lt;/code&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3&gt;
  
  
  🌄 Lightbox ^2.x
&lt;/h3&gt;

&lt;p&gt;Kaldorei integrates fancyBox 3，supports picture lightbox effect, slide show carousel, full screen preview, thumbnail preview and other fancy features. Preview &amp;amp; usage &lt;a href="http://xlbd.me/how-to-use-fancybox-in-ghost-blog/" rel="noopener noreferrer"&gt;Preview_Usage&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  💬 Disqus ^2.x
&lt;/h3&gt;

&lt;p&gt;Kaldorei supports Disqus plugins，only need a short code snippet in the ghost admin &lt;code&gt;code injection&lt;/code&gt;.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Configure：ghost admin &amp;gt; &lt;code&gt;Code Injection&lt;/code&gt; &amp;gt; &lt;code&gt;Blog Header&lt;/code&gt;&lt;br&gt;
&lt;/p&gt;
&lt;/blockquote&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;script&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="kd"&gt;var&lt;/span&gt; &lt;span class="nx"&gt;disqus_shortname&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;your_disqus_shortname&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="sr"&gt;/script&lt;/span&gt;&lt;span class="err"&gt;&amp;gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  🗂 Archives ^2.x
&lt;/h3&gt;

&lt;p&gt;Kaldorei provides simple archives features, using ghost api to generate site archives. Preview&lt;a href="http://blog.xlbd.me/archives" rel="noopener noreferrer"&gt;Blog Archives&lt;/a&gt;。&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Ghost 3.x Configuration：ghost admin&lt;/p&gt;
&lt;/blockquote&gt;

&lt;ol&gt;
&lt;li&gt;Pages -&amp;gt; New Page -&amp;gt; Enter the title "Archives", At this time, the page url is &lt;code&gt;archives&lt;/code&gt; by default.&lt;/li&gt;
&lt;li&gt;Design &amp;gt; Create an archive navigation，URL：&lt;a href="http://your_blog_url/archives" rel="noopener noreferrer"&gt;http://your_blog_url/archives&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;Done! Go to your site find your archives page. Have fun.&lt;/li&gt;
&lt;/ol&gt;

&lt;blockquote&gt;
&lt;p&gt;Ghost 2.x Configuration：ghost admin&lt;/p&gt;
&lt;/blockquote&gt;

&lt;ol&gt;
&lt;li&gt;New Post &amp;gt; Enter the title "Archives", At this time, the page url is &lt;code&gt;archives&lt;/code&gt; by default.&lt;/li&gt;
&lt;li&gt;Post Settings &amp;gt; Checked &lt;code&gt;Turn this post into a page&lt;/code&gt;，Then Publish;&lt;/li&gt;
&lt;li&gt;Navigation &amp;gt; Create an archive navigation，URL：&lt;a href="http://your_blog_url/archives" rel="noopener noreferrer"&gt;http://your_blog_url/archives&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;Done! Go to your site find your archives page. Have fun.&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  🎨 Code Highlighting Theme ^2.x
&lt;/h3&gt;

&lt;p&gt;Kaldorei uses &lt;a href="https://github.com/isagalaev/highlight.js" rel="noopener noreferrer"&gt;highlight.js&lt;/a&gt; to achieve code highlight，the default theme is: &lt;code&gt;monokai-sublime&lt;/code&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Configuration：ghost admin &amp;gt; &lt;code&gt;Code Injection&lt;/code&gt; &amp;gt; &lt;code&gt;Blog Header&lt;/code&gt;&lt;br&gt;
&lt;/p&gt;
&lt;/blockquote&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="c"&gt;&amp;lt;!-- use solarized-light style --&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;link&lt;/span&gt; &lt;span class="na"&gt;rel=&lt;/span&gt;&lt;span class="s"&gt;"stylesheet"&lt;/span&gt; &lt;span class="na"&gt;type=&lt;/span&gt;&lt;span class="s"&gt;"text/css"&lt;/span&gt; &lt;span class="na"&gt;href=&lt;/span&gt;&lt;span class="s"&gt;"/assets/plugins/highlight-latest/styles/solarized-light.css"&lt;/span&gt; &lt;span class="nt"&gt;/&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://highlightjs.org/static/demo/" rel="noopener noreferrer"&gt;The All Themes List&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  🔢 Show code line number ^3.x
&lt;/h3&gt;

&lt;blockquote&gt;
&lt;p&gt;New feature in Version 3.x&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Kaldorei supports config the line number of code snippets，show line numbers to the left of each code blocks, it's closed by default，also support &lt;code&gt;dark&lt;/code&gt; / &lt;code&gt;light&lt;/code&gt; mode&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Configuration：ghost admin &amp;gt; &lt;code&gt;Code Injection&lt;/code&gt; &amp;gt; &lt;code&gt;Blog Header&lt;/code&gt;&lt;br&gt;
&lt;/p&gt;
&lt;/blockquote&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;script&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;
  &lt;span class="kd"&gt;var&lt;/span&gt; &lt;span class="nx"&gt;hljsSettings&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="na"&gt;lineNumber&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;  &lt;span class="c1"&gt;// Optional value: flase / true, default: false&lt;/span&gt;
    &lt;span class="na"&gt;mode&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;light&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;  &lt;span class="c1"&gt;// Optional value: dark / light，default: 'dark'&lt;/span&gt;
  &lt;span class="p"&gt;};&lt;/span&gt;
&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="sr"&gt;/script&lt;/span&gt;&lt;span class="err"&gt;&amp;gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Not only the line number can be configured, but also the background color of the line number can be customized. The default line number background color is as follows:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;style&amp;gt;&lt;/span&gt;
&lt;span class="nd"&gt;:root&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="py"&gt;--linenumber-dark-bg&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;#282c34&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="py"&gt;--linenumber-light-bg&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;#c5d2d9&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/style&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  🔍 Global Search ^2.x
&lt;/h3&gt;

&lt;p&gt;Search engine supports search by blog title by default，This feature need the &lt;code&gt;ghost&lt;/code&gt; version &amp;gt;= &lt;code&gt;2.10.x&lt;/code&gt;。&lt;/p&gt;

&lt;p&gt;Configure by two steps：&lt;/p&gt;

&lt;h4&gt;
  
  
  1、Create Custom Integrations
&lt;/h4&gt;

&lt;blockquote&gt;
&lt;p&gt;Configure：ghost admin &amp;gt; &lt;code&gt;Integrations&lt;/code&gt; &amp;gt; &lt;code&gt;Add custom integration&lt;/code&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F231dwo7kkrqqy4w7nk0l.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F231dwo7kkrqqy4w7nk0l.png" alt="apikey" width="800" height="328"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  2、Configure Variables
&lt;/h4&gt;

&lt;blockquote&gt;
&lt;p&gt;Configure：ghost admin &amp;gt; &lt;code&gt;Code Injection&lt;/code&gt; &amp;gt; &lt;code&gt;Blog Header&lt;/code&gt;&lt;br&gt;
&lt;/p&gt;
&lt;/blockquote&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="c1"&gt;// &lt;/span&gt;
&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;script&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;
  &lt;span class="kd"&gt;var&lt;/span&gt; &lt;span class="nx"&gt;searchSettings&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="na"&gt;key&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;__CONTENT__API__KEY__&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;  &lt;span class="c1"&gt;// Your custom integration Content API Key&lt;/span&gt;
    &lt;span class="na"&gt;host&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;__API__URL__&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;  &lt;span class="c1"&gt;// Your custom integration API URL&lt;/span&gt;
  &lt;span class="p"&gt;};&lt;/span&gt;
&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="sr"&gt;/script&lt;/span&gt;&lt;span class="err"&gt;&amp;gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  🌈 Custom Color &amp;amp; Fonts ^2.x
&lt;/h3&gt;

&lt;p&gt;Starting from &lt;code&gt;kaldorei&lt;/code&gt; v2.1.0 version, users can customize the color and font of your site.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9agjznx53grhcvi21du8.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9agjznx53grhcvi21du8.png" alt="banner_colors" width="800" height="271"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Configure：ghost admin &amp;gt; &lt;code&gt;Code Injection&lt;/code&gt; &amp;gt; &lt;code&gt;Blog Header&lt;/code&gt;&lt;br&gt;
&lt;/p&gt;
&lt;/blockquote&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;style&amp;gt;&lt;/span&gt;
&lt;span class="nd"&gt;:root&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="py"&gt;--primary-color&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;#4af&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="py"&gt;--primary-light-hover&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;#4cf&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="py"&gt;--primary-dark-hover&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;#49f&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/style&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Fully replaceable &lt;a href="https://github.com/xiaoluoboding/ghost-theme-kaldorei/blob/master/assets/css/variables.css" rel="noopener noreferrer"&gt;variables&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  🔖 Bookmark card ^3.x
&lt;/h3&gt;

&lt;p&gt;Starting from &lt;code&gt;Ghost&lt;/code&gt; v3.x version, It provides a new bookmark card feature, it can show the page title、excerpt、author、publisher and even a preview image. Like this:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fg1vcfxv3tu59nid7s109.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fg1vcfxv3tu59nid7s109.jpg" alt="bookmark" width="800" height="196"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;Kaldorei&lt;/code&gt; supports bookmark card feature in the 3.x version&lt;/p&gt;

&lt;h2&gt;
  
  
  Credits
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/FortAwesome/Font-Awesome" rel="noopener noreferrer"&gt;font-awesome&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/twbs/bootstrap" rel="noopener noreferrer"&gt;bootstrap&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/isagalaev/highlight.js" rel="noopener noreferrer"&gt;highlight.js&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/julianshapiro/velocity" rel="noopener noreferrer"&gt;velocity.js&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/jgallen23/toc" rel="noopener noreferrer"&gt;jquery.toc.js&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/anijs/anijs" rel="noopener noreferrer"&gt;anijs&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/JoelSutherland/GitHub-jQuery-Repo-Widget" rel="noopener noreferrer"&gt;jquery.githubRepoWidget.js&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/fancyapps/fancyBox" rel="noopener noreferrer"&gt;fancyBox&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/HauntedThemes/ghost-search" rel="noopener noreferrer"&gt;Ghost Search&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  License
&lt;/h2&gt;

&lt;p&gt;MIT © &lt;a href="https://github.com/xiaoluoboding" rel="noopener noreferrer"&gt;xiaoluoboding&lt;/a&gt;&lt;/p&gt;

</description>
      <category>ghost</category>
      <category>theme</category>
      <category>github</category>
    </item>
    <item>
      <title>20 JavaScript Playgrounds to use in 2019</title>
      <dc:creator>Robert Shaw</dc:creator>
      <pubDate>Tue, 12 Nov 2019 14:12:21 +0000</pubDate>
      <link>https://dev.to/robertshaw/20-javascript-playgrounds-to-use-in-2019-455c</link>
      <guid>https://dev.to/robertshaw/20-javascript-playgrounds-to-use-in-2019-455c</guid>
      <description>&lt;p&gt;In the daily development of the front end, we use our favorite IDE to debug JavaScript code. For example, I like two code editors, &lt;strong&gt;Sublime Text 3&lt;/strong&gt; and &lt;strong&gt;VS Code&lt;/strong&gt;. I also used &lt;strong&gt;Atom&lt;/strong&gt; in previous years. &lt;/p&gt;

&lt;p&gt;Occasionally, we find ourselves needing to quickly share and or collaborate with a friend or colleague in our local projects, the importance of the online JavaScript runtime environment is reflected.&lt;/p&gt;

&lt;p&gt;In order to slove such problems，many excellent online editors have emerged in the industry. For example &lt;code&gt;JS Bin&lt;/code&gt;、&lt;code&gt;JS Fiddle&lt;/code&gt;、&lt;code&gt;Code Pen&lt;/code&gt;、&lt;code&gt;Code Sandbox&lt;/code&gt;, etc. I also found some good other options in the past few years, and then look at the browser favorites, there are more than 20 kinds.&lt;/p&gt;

&lt;p&gt;Now we use 20 tools to execute a factorial function that has been optimized by TCO.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/http%3A%2F%2Fxlbd.me%2Fcontent%2Fimages%2F2019%2F11%2F201911_runjs-carbonize-1.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/http%3A%2F%2Fxlbd.me%2Fcontent%2Fimages%2F2019%2F11%2F201911_runjs-carbonize-1.png" alt="banner" width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  1、iTerm2
&lt;/h2&gt;

&lt;p&gt;Installing the node environment in the terminal tool and using the node runtime environment to execute the JS code is a must for us to learn the node.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/http%3A%2F%2Fxlbd.me%2Fcontent%2Fimages%2F2019%2F11%2F201911_runjs-iTerm2-1.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/http%3A%2F%2Fxlbd.me%2Fcontent%2Fimages%2F2019%2F11%2F201911_runjs-iTerm2-1.jpg" alt="201911_runjs-iTer" width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  2、Sublime Text 3
&lt;/h2&gt;

&lt;p&gt;In Sublime Text 3，we can use &lt;code&gt;build system&lt;/code&gt; create build command，use build command run js code quickly&lt;/p&gt;

&lt;p&gt;Shortcuts：CMD + B&lt;/p&gt;

&lt;h3&gt;
  
  
  config file
&lt;/h3&gt;

&lt;p&gt;fisrt install the dep &lt;code&gt;babel-cli&lt;/code&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npm i &lt;span class="nt"&gt;-g&lt;/span&gt; babel-cli
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;new &lt;code&gt;build system&lt;/code&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"path"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"/usr/local/bin"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"working_dir"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"${project_path:${folder}}"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"selector"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"source.js"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"encoding"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"utf-8"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"shell"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"windows"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="nl"&gt;"cmd"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;"taskkill /f /im node.exe &amp;gt;nul 2&amp;gt;nul &amp;amp; node $file"&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"osx"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="nl"&gt;"cmd"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;"killall node &amp;gt;/dev/null 2&amp;gt;&amp;amp;1; node $file"&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"linux"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="nl"&gt;"cmd"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;"killall node &amp;gt;/dev/null 2&amp;gt;&amp;amp;1; node $file"&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Preview
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/http%3A%2F%2Fxlbd.me%2Fcontent%2Fimages%2F2019%2F11%2F201911_runjs-sublime-1.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/http%3A%2F%2Fxlbd.me%2Fcontent%2Fimages%2F2019%2F11%2F201911_runjs-sublime-1.jpg" alt="201911_runjs-sublime" width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  3、VSCode
&lt;/h2&gt;

&lt;p&gt;In VSCode，we can run JS with &lt;code&gt;task&lt;/code&gt;，actually we run js by &lt;code&gt;node&lt;/code&gt; use the termnal&lt;/p&gt;

&lt;p&gt;Shortcuts：CMD + Shift + B&lt;/p&gt;

&lt;h3&gt;
  
  
  Config File
&lt;/h3&gt;

&lt;blockquote&gt;
&lt;p&gt;/.vscode/tasks.json&lt;br&gt;
&lt;/p&gt;
&lt;/blockquote&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="err"&gt;//&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;See&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;https://go.microsoft.com/fwlink/?LinkId=&lt;/span&gt;&lt;span class="mi"&gt;733558&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="err"&gt;//&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;for&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;the&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;documentation&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;about&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;the&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;tasks.json&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;format&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"version"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"2.0.0"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"tasks"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"label"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Run ES6"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"type"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"shell"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"command"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"node ${file}"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"group"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="nl"&gt;"kind"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"build"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="nl"&gt;"isDefault"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Preview
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/http%3A%2F%2Fxlbd.me%2Fcontent%2Fimages%2F2019%2F11%2F201911_runjs-vscode-1.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/http%3A%2F%2Fxlbd.me%2Fcontent%2Fimages%2F2019%2F11%2F201911_runjs-vscode-1.jpg" alt="201911_runjs-vscode" width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  4、use browser console
&lt;/h2&gt;

&lt;p&gt;we use browse console feature debug js code offen, like Chrome's devtools、Firefox's web console, we are famlier with this tools&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/http%3A%2F%2Fxlbd.me%2Fcontent%2Fimages%2F2019%2F11%2F201911-runjs-browser-console-1.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/http%3A%2F%2Fxlbd.me%2Fcontent%2Fimages%2F2019%2F11%2F201911-runjs-browser-console-1.jpg" alt="201911-runjs-browser-console" width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  5、Firefox Scratchpad
&lt;/h2&gt;

&lt;p&gt;In the &lt;code&gt;Firefox&lt;/code&gt; browser, there is a particularly useful feature called &lt;strong&gt;Scratchpad&lt;/strong&gt;, where you can enter some JS code to see the result.&lt;/p&gt;

&lt;p&gt;shortcut：In the &lt;code&gt;Firefox&lt;/code&gt; browser Shift + F4&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/http%3A%2F%2Fxlbd.me%2Fcontent%2Fimages%2F2019%2F11%2F201911_runjs-firefox-1.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/http%3A%2F%2Fxlbd.me%2Fcontent%2Fimages%2F2019%2F11%2F201911_runjs-firefox-1.jpg" alt="201911_runjs-firefox" width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  6、Chrome Sources Panel
&lt;/h2&gt;

&lt;p&gt;Chrome provides powerful DevTools, where the &lt;code&gt;Sources&lt;/code&gt; panel allows you to create some &lt;code&gt;Snippets&lt;/code&gt; for easy execute JS code.&lt;/p&gt;

&lt;p&gt;shortcuts：CMD + Enter run code&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/http%3A%2F%2Fxlbd.me%2Fcontent%2Fimages%2F2019%2F11%2F201911_runjs-chrome-devtools-1.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/http%3A%2F%2Fxlbd.me%2Fcontent%2Fimages%2F2019%2F11%2F201911_runjs-chrome-devtools-1.jpg" alt="201911_runjs-chrome-devtools" width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  7、JS Bin
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://jsbin.com" rel="noopener noreferrer"&gt;JS Bin&lt;/a&gt; is a live pastebin for HTML, CSS &amp;amp; JavaScript and a range of processors, including SCSS, CoffeeScript, Jade and more...&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/http%3A%2F%2Fxlbd.me%2Fcontent%2Fimages%2F2019%2F11%2F201911_runjs-jsbin-1.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/http%3A%2F%2Fxlbd.me%2Fcontent%2Fimages%2F2019%2F11%2F201911_runjs-jsbin-1.jpg" alt="201911_runjs-jsbin" width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  8、JS Fiddle
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://jsfiddle.net/" rel="noopener noreferrer"&gt;JS Fiddle&lt;/a&gt; is a good place for front-end coder to write demo examples. Here you can use some third-party libraries in CDN mode, which is very convenient to build a page demo.&lt;/p&gt;

&lt;p&gt;Because the JS Fiddle tool itself does not provide a console panel, you can use the browser developer tools to print out JS code results.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/http%3A%2F%2Fxlbd.me%2Fcontent%2Fimages%2F2019%2F11%2F201911-runjs-jsfiddle-1.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/http%3A%2F%2Fxlbd.me%2Fcontent%2Fimages%2F2019%2F11%2F201911-runjs-jsfiddle-1.jpg" alt="201911-runjs-jsfiddle" width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  9、CodePen
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://codepen.io/" rel="noopener noreferrer"&gt;CodePen&lt;/a&gt; It's a great online code editor that can write almost any front-end web application. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/http%3A%2F%2Fxlbd.me%2Fcontent%2Fimages%2F2019%2F11%2F201911-runjs-codepen-1.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/http%3A%2F%2Fxlbd.me%2Fcontent%2Fimages%2F2019%2F11%2F201911-runjs-codepen-1.jpg" alt="201911-runjs-codepen" width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  10、“JavaScript Demo” in MDN
&lt;/h2&gt;

&lt;p&gt;If you has been used MDN, maybe you remember that there will be a &lt;code&gt;JavaScript Demo&lt;/code&gt; area in some JavaScript documentation, such as &lt;a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function" rel="noopener noreferrer"&gt;JavaScript Standard built-in objects Function&lt;/a&gt;, here you can execute some JS code&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/http%3A%2F%2Fxlbd.me%2Fcontent%2Fimages%2F2019%2F11%2F201911-runjs-js-demo-1.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/http%3A%2F%2Fxlbd.me%2Fcontent%2Fimages%2F2019%2F11%2F201911-runjs-js-demo-1.jpg" alt="201911-runjs-js-demo" width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  11、PLAYCODE
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://playcode.io/" rel="noopener noreferrer"&gt;PLAYCODE&lt;/a&gt; is a Quickly and Easily make Frontend Experiments&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/http%3A%2F%2Fxlbd.me%2Fcontent%2Fimages%2F2019%2F11%2F201911_runjs-playcode-1.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/http%3A%2F%2Fxlbd.me%2Fcontent%2Fimages%2F2019%2F11%2F201911_runjs-playcode-1.jpg" alt="201911_runjs-playcode" width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  12、Flems
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://flems.io/" rel="noopener noreferrer"&gt;Flems&lt;/a&gt; is a playground for web development. It's ideal for prototyping ideas &amp;amp; sharing working front-end code examples&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/http%3A%2F%2Fxlbd.me%2Fcontent%2Fimages%2F2019%2F11%2F201911_runjs-flems-1.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/http%3A%2F%2Fxlbd.me%2Fcontent%2Fimages%2F2019%2F11%2F201911_runjs-flems-1.jpg" alt="201911_runjs-flems" width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  13、JSitor
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://jsitor.com/" rel="noopener noreferrer"&gt;JSitor&lt;/a&gt; Alternative of JSFiddle, Codepen &amp;amp; JSbin&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/http%3A%2F%2Fxlbd.me%2Fcontent%2Fimages%2F2019%2F11%2F201911_runjs-jsitor-1.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/http%3A%2F%2Fxlbd.me%2Fcontent%2Fimages%2F2019%2F11%2F201911_runjs-jsitor-1.jpg" alt="201911_runjs-jsito" width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  14、Code Sandbox
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://codesandbox.io/" rel="noopener noreferrer"&gt;Code Sandbox&lt;/a&gt; is an online editor that helps you create web applications, from prototype to deployment.&lt;/p&gt;

&lt;p&gt;I use codesandbox to build some &lt;code&gt;vue&lt;/code&gt; demo, it's really very nice tool&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/http%3A%2F%2Fxlbd.me%2Fcontent%2Fimages%2F2019%2F11%2F201911_runjs-codesandbox-1.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/http%3A%2F%2Fxlbd.me%2Fcontent%2Fimages%2F2019%2F11%2F201911_runjs-codesandbox-1.jpg" alt="201911_runjs-codesandbox" width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  15、Web Maker
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://webmaker.app/" rel="noopener noreferrer"&gt;Web Maker&lt;/a&gt; is a blazing fast &amp;amp; offline web playground in your browser&lt;/p&gt;

&lt;p&gt;Web Maker also provide Chrome Extension, you can use it offline&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/http%3A%2F%2Fxlbd.me%2Fcontent%2Fimages%2F2019%2F11%2F201911_runjs-webmaker-1.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/http%3A%2F%2Fxlbd.me%2Fcontent%2Fimages%2F2019%2F11%2F201911_runjs-webmaker-1.jpg" alt="201911_runjs-webmake" width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  16、LeetCode Playground
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://leetcode.com/" rel="noopener noreferrer"&gt;LeetCode&lt;/a&gt; Provides excellent Playground tools, supports switching in various languages, and also supports JavaScript&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/http%3A%2F%2Fxlbd.me%2Fcontent%2Fimages%2F2019%2F11%2F201911_runjs-leetcode-1.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/http%3A%2F%2Fxlbd.me%2Fcontent%2Fimages%2F2019%2F11%2F201911_runjs-leetcode-1.jpg" alt="201911_runjs-leetcode" width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  17、Repl.it Stop wasting time setting up a development environment. Repl.it gives you an instant IDE to learn, build, collaborate, and host all in one place.
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://repl.it" rel="noopener noreferrer"&gt;Repl.it&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/http%3A%2F%2Fxlbd.me%2Fcontent%2Fimages%2F2019%2F11%2F201911_runjs-repl-it-1.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/http%3A%2F%2Fxlbd.me%2Fcontent%2Fimages%2F2019%2F11%2F201911_runjs-repl-it-1.jpg" alt="201911_runjs_replit" width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  18、RunKit + npm
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://npm.runkit.com" rel="noopener noreferrer"&gt;RunKit + npm&lt;/a&gt; Try any Node.js package right in your browser&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/http%3A%2F%2Fxlbd.me%2Fcontent%2Fimages%2F2019%2F11%2F201911_runjs-runkit-npm-1.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/http%3A%2F%2Fxlbd.me%2Fcontent%2Fimages%2F2019%2F11%2F201911_runjs-runkit-npm-1.jpg" alt="201911_runjs-runkit-np" width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  19、StackBlitz
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://stackblitz.com/" rel="noopener noreferrer"&gt;StackBlitz&lt;/a&gt; Code the Future. In Your Browser（The online code editor for web apps）&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/http%3A%2F%2Fxlbd.me%2Fcontent%2Fimages%2F2019%2F11%2F201911_runjs-stackblitz-1.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/http%3A%2F%2Fxlbd.me%2Fcontent%2Fimages%2F2019%2F11%2F201911_runjs-stackblitz-1.jpg" alt="201911_runjs-stackblitz" width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  20、Plunker Next
&lt;/h2&gt;

&lt;p&gt;&lt;a href="http://next.plnkr.co/" rel="noopener noreferrer"&gt;Plunker Next&lt;/a&gt; Plunker is the best tool to prototype, experiment, share and debug your ideas on the web platform. From idea to implementation, Plunker helps you build something quickly and frictionlessly.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/http%3A%2F%2Fxlbd.me%2Fcontent%2Fimages%2F2019%2F11%2F201911_runjs-plunker-1.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/http%3A%2F%2Fxlbd.me%2Fcontent%2Fimages%2F2019%2F11%2F201911_runjs-plunker-1.jpg" alt="201911_runjs-plunke" width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Others
&lt;/h2&gt;

&lt;p&gt;The tools that are easy to use are endless. In fact, there are other tools or solutions that can be chosen. For example, the following four different types, I have selected a representative tool.&lt;/p&gt;

&lt;h3&gt;
  
  
  Online programming
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://scrimba.com" rel="noopener noreferrer"&gt;scrimba&lt;/a&gt; - The interactive screencasting platform&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Local Application
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://runjs.dev/" rel="noopener noreferrer"&gt;RunJS&lt;/a&gt; - A scratchpad for your thoughts, a playground for your creativity...&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Editor plugin
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://quokkajs.com" rel="noopener noreferrer"&gt;Quokka.js&lt;/a&gt; - Quokka.js is a developer productivity tool for rapid JavaScript / TypeScript prototyping. Runtime values are updated and displayed in your IDE next to your code, as you type.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Cloud-powered dev environments
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://visualstudio.microsoft.com/zh-hans/services/visual-studio-online/" rel="noopener noreferrer"&gt;Visual Studio Online&lt;/a&gt; - Cloud-powered dev environments accessible from anywhere&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  👀 Compare
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Tool&lt;/th&gt;
&lt;th&gt;Star Rate&lt;/th&gt;
&lt;th&gt;Console Panel&lt;/th&gt;
&lt;th&gt;offline&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;JS Bin&lt;/td&gt;
&lt;td&gt;⭐️⭐️⭐️⭐️&lt;/td&gt;
&lt;td&gt;has&lt;/td&gt;
&lt;td&gt;no&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;JS Fiddle&lt;/td&gt;
&lt;td&gt;⭐️⭐️⭐️⭐️⭐️&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;no&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;no&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;CodePen&lt;/td&gt;
&lt;td&gt;⭐️⭐️⭐️⭐️⭐️&lt;/td&gt;
&lt;td&gt;has&lt;/td&gt;
&lt;td&gt;no&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;PLAYCODE&lt;/td&gt;
&lt;td&gt;⭐️⭐️⭐️&lt;/td&gt;
&lt;td&gt;has&lt;/td&gt;
&lt;td&gt;no&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Flems&lt;/td&gt;
&lt;td&gt;⭐️⭐️⭐️&lt;/td&gt;
&lt;td&gt;has&lt;/td&gt;
&lt;td&gt;no&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;JSitor&lt;/td&gt;
&lt;td&gt;⭐️⭐️⭐️&lt;/td&gt;
&lt;td&gt;has&lt;/td&gt;
&lt;td&gt;no&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Code Sandbox&lt;/td&gt;
&lt;td&gt;⭐️⭐️⭐️⭐️⭐️&lt;/td&gt;
&lt;td&gt;has&lt;/td&gt;
&lt;td&gt;no&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Web Marker&lt;/td&gt;
&lt;td&gt;⭐️⭐️⭐️⭐️&lt;/td&gt;
&lt;td&gt;has&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;yes&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;LeetCode&lt;/td&gt;
&lt;td&gt;⭐️⭐️⭐️⭐️⭐️&lt;/td&gt;
&lt;td&gt;has&lt;/td&gt;
&lt;td&gt;no&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Repl.it&lt;/td&gt;
&lt;td&gt;⭐️⭐️⭐️&lt;/td&gt;
&lt;td&gt;has&lt;/td&gt;
&lt;td&gt;no&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;RunKit + npm&lt;/td&gt;
&lt;td&gt;⭐️⭐️⭐️⭐️&lt;/td&gt;
&lt;td&gt;has&lt;/td&gt;
&lt;td&gt;no&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;StackBlitz&lt;/td&gt;
&lt;td&gt;⭐️⭐️⭐️&lt;/td&gt;
&lt;td&gt;has&lt;/td&gt;
&lt;td&gt;no&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Plunker Next&lt;/td&gt;
&lt;td&gt;⭐️⭐️⭐️&lt;/td&gt;
&lt;td&gt;has&lt;/td&gt;
&lt;td&gt;no&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  Conslusion
&lt;/h2&gt;

&lt;p&gt;Actually for myself&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;If I want to run a code snippets to get test results, the fastest way is to use the browser console, because the browser is the best tool.&lt;/li&gt;
&lt;li&gt;If I want to write a demo on my blog, I will choose &lt;code&gt;jsfiddle&lt;/code&gt;, &lt;code&gt;codepen&lt;/code&gt;, &lt;code&gt;codesandbox&lt;/code&gt;, which provides everything you need to write a demo.&lt;/li&gt;
&lt;li&gt;If I want to share beautiful code snippets, I will use &lt;a href="https://www.dangercove.com/carbonize/Z" rel="noopener noreferrer"&gt;Carbonize&lt;/a&gt; to generate an image, just like the one at the beginning of the blog post&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The meaning of using an online editor is that it is fast, easy to share and collaborate, and my favorite is still VSCode.&lt;/p&gt;

&lt;p&gt;Maybe you are writing your playground, or you have better tools, I hope to leave a message and share with everyone.&lt;/p&gt;

</description>
      <category>tools</category>
      <category>javascript</category>
      <category>es6</category>
    </item>
  </channel>
</rss>
