{"pageContext":{"index":24,"total":363,"name":"2019-10-20","items":[{"node":{"frontmatter":{"title":"InversifyJS - typescript IoC(反转控制)容器库","publish":true,"cover":"https://raw.githubusercontent.com/inversify/inversify.github.io/master/img/cover.jpg","showCover":true,"date":"2019-10-18","category":"nodejs","url":"https://github.com/inversify/InversifyJS","author":"inversify","translator":"","tags":["ioc"],"priority":2},"html":""}},{"node":{"frontmatter":{"title":"Ionic React GA发布","publish":true,"cover":"https://ionicframework.com/blog/wp-content/uploads/2019/10/react-v1.png","showCover":true,"date":"2019-10-17","category":"frontend","url":"https://ionicframework.com/blog/announcing-ionic-react/","author":"Max Lynch","translator":"","tags":["react"],"priority":1},"html":""}},{"node":{"frontmatter":{"title":"JSON.stringify()的其它参数","publish":true,"cover":"","showCover":true,"date":"2019-10-19","category":"javascript","url":"https://pawelgrzybek.com/til-the-power-of-json-stringify-replacer-parameter/","author":"Pawel Grzybek","translator":"","tags":["js"],"priority":1},"html":"<div class=\"gatsby-highlight\" data-language=\"javascript\"><pre class=\"language-javascript\"><code class=\"language-javascript\"><span class=\"token keyword\">const</span> dude <span class=\"token operator\">=</span> <span class=\"token punctuation\">{</span>\n  name<span class=\"token punctuation\">:</span> <span class=\"token string\">\"Dan\"</span>\n<span class=\"token punctuation\">}</span><span class=\"token punctuation\">;</span>\n<span class=\"token keyword\">const</span> dudeStringified <span class=\"token operator\">=</span> <span class=\"token constant\">JSON</span><span class=\"token punctuation\">.</span><span class=\"token function\">stringify</span><span class=\"token punctuation\">(</span>dude<span class=\"token punctuation\">,</span> <span class=\"token punctuation\">(</span>key<span class=\"token punctuation\">,</span> value<span class=\"token punctuation\">)</span> <span class=\"token operator\">=></span>\n  key <span class=\"token operator\">===</span> <span class=\"token string\">\"name\"</span> <span class=\"token operator\">?</span> <span class=\"token string\">\"Pawel\"</span> <span class=\"token punctuation\">:</span> value\n<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\nconsole<span class=\"token punctuation\">.</span><span class=\"token function\">log</span><span class=\"token punctuation\">(</span>dudeStringified<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"token comment\">// {\"name\":\"Pawel\"}</span></code></pre></div>\n<div class=\"gatsby-highlight\" data-language=\"javascript\"><pre class=\"language-javascript\"><code class=\"language-javascript\"><span class=\"token constant\">JSON</span><span class=\"token punctuation\">.</span><span class=\"token function\">stringify</span><span class=\"token punctuation\">(</span>dude<span class=\"token punctuation\">,</span> <span class=\"token keyword\">null</span><span class=\"token punctuation\">,</span> <span class=\"token string\">\"\\t\"</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span></code></pre></div>\n<p>可以美观的打印。</p>"}},{"node":{"frontmatter":{"title":"SVG clip-path转换工具","publish":true,"cover":"","showCover":true,"date":"2019-10-17","category":"frontend","url":"https://yoksel.github.io/relative-clip-path/","author":"","translator":"","tags":["css"],"priority":1},"html":""}},{"node":{"frontmatter":{"title":"Timsort 各种语言默认的排序算法","publish":true,"cover":"https://cdn-images-1.medium.com/max/800/0*I8VlK7-Zh-2btQP4.gif","showCover":true,"date":"2019-10-18","category":"nodejs","url":"https://skerritt.blog/timsort-the-fastest-sorting-algorithm-youve-never-heard-of/","author":"Brandon Skerritt","translator":"","tags":["algorithm"],"priority":2},"html":"<p>python, java, <a href=\"https://v8.dev/blog/array-sort\">javascrit(v8) </a></p>\n<p>都用的这种算法</p>\n<blockquote>\n<p>这是我见过的最好懂的算法，结果也是目前最稳定的算法。</p>\n</blockquote>"}},{"node":{"frontmatter":{"title":"css和圆形","publish":true,"cover":"https://29comwzoq712ml5vj5gf479x-wpengine.netdna-ssl.com/wp-content/uploads/2019/10/centered-animation-opt.gif","showCover":true,"date":"2019-10-17","category":"frontend","url":"https://cloudfour.com/thinks/css-circles/","author":"Tyler Sticka","translator":"","tags":["css"],"priority":1},"html":"<h2 id=\"实现圆形的多种方式\"><a href=\"#%E5%AE%9E%E7%8E%B0%E5%9C%86%E5%BD%A2%E7%9A%84%E5%A4%9A%E7%A7%8D%E6%96%B9%E5%BC%8F\" aria-hidden class=\"anchor\"><svg aria-hidden=\"true\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>实现圆形的多种方式:</h2>\n<h3 id=\"border-radius-50\"><a href=\"#border-radius-50\" aria-hidden class=\"anchor\"><svg aria-hidden=\"true\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>border-radius: 50%;</h3>\n<div class=\"gatsby-highlight\" data-language=\"css\"><pre class=\"language-css\"><code class=\"language-css\"><span class=\"token selector\">.circle</span> <span class=\"token punctuation\">{</span>\n  <span class=\"token property\">background</span><span class=\"token punctuation\">:</span> #456BD9<span class=\"token punctuation\">;</span>\n  <span class=\"token property\">border</span><span class=\"token punctuation\">:</span> 0.1875em solid #0F1C3F<span class=\"token punctuation\">;</span>\n  <span class=\"token property\">border-radius</span><span class=\"token punctuation\">:</span> 50%<span class=\"token punctuation\">;</span>\n  <span class=\"token property\">box-shadow</span><span class=\"token punctuation\">:</span> 0.375em 0.375em 0 0 <span class=\"token function\">rgba</span><span class=\"token punctuation\">(</span>15, 28, 63, 0.125<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n  <span class=\"token property\">height</span><span class=\"token punctuation\">:</span> 5em<span class=\"token punctuation\">;</span>\n  <span class=\"token property\">width</span><span class=\"token punctuation\">:</span> 5em<span class=\"token punctuation\">;</span>\n<span class=\"token punctuation\">}</span></code></pre></div>\n<p>pill椭圆形状则将其换成高度的一半,见<a href=\"https://cloudfour.com/thinks/jagged-little-pill-issues-with-rounded-buttons/\">这里</a>  </p>\n<h3 id=\"svg-circle\"><a href=\"#svg-circle\" aria-hidden class=\"anchor\"><svg aria-hidden=\"true\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>svg <circle/></h3>\n<div class=\"gatsby-highlight\" data-language=\"html\"><pre class=\"language-html\"><code class=\"language-html\"><span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>svg</span> <span class=\"token attr-name\">viewBox</span><span class=\"token attr-value\"><span class=\"token punctuation\">=</span><span class=\"token punctuation\">\"</span>0 0 80 80<span class=\"token punctuation\">\"</span></span> <span class=\"token attr-name\">width</span><span class=\"token attr-value\"><span class=\"token punctuation\">=</span><span class=\"token punctuation\">\"</span>80<span class=\"token punctuation\">\"</span></span> <span class=\"token attr-name\">height</span><span class=\"token attr-value\"><span class=\"token punctuation\">=</span><span class=\"token punctuation\">\"</span>80<span class=\"token punctuation\">\"</span></span><span class=\"token punctuation\">></span></span>\n  <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>circle</span> <span class=\"token attr-name\">class</span><span class=\"token attr-value\"><span class=\"token punctuation\">=</span><span class=\"token punctuation\">\"</span>circle<span class=\"token punctuation\">\"</span></span> <span class=\"token attr-name\">cx</span><span class=\"token attr-value\"><span class=\"token punctuation\">=</span><span class=\"token punctuation\">\"</span>40<span class=\"token punctuation\">\"</span></span> <span class=\"token attr-name\">cy</span><span class=\"token attr-value\"><span class=\"token punctuation\">=</span><span class=\"token punctuation\">\"</span>40<span class=\"token punctuation\">\"</span></span> <span class=\"token attr-name\">r</span><span class=\"token attr-value\"><span class=\"token punctuation\">=</span><span class=\"token punctuation\">\"</span>38<span class=\"token punctuation\">\"</span></span><span class=\"token punctuation\">/></span></span>\n<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;/</span>svg</span><span class=\"token punctuation\">></span></span></code></pre></div>\n<h3 id=\"clip-path\"><a href=\"#clip-path\" aria-hidden class=\"anchor\"><svg aria-hidden=\"true\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Clip Path</h3>\n<div class=\"gatsby-highlight\" data-language=\"css\"><pre class=\"language-css\"><code class=\"language-css\"><span class=\"token selector\">.circle</span> <span class=\"token punctuation\">{</span>\n  <span class=\"token property\">background</span><span class=\"token punctuation\">:</span> #456BD9<span class=\"token punctuation\">;</span>\n  <span class=\"token property\">clip-path</span><span class=\"token punctuation\">:</span> <span class=\"token function\">circle</span><span class=\"token punctuation\">(</span>50%<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n  <span class=\"token property\">height</span><span class=\"token punctuation\">:</span> 5em<span class=\"token punctuation\">;</span>\n  <span class=\"token property\">width</span><span class=\"token punctuation\">:</span> 5em<span class=\"token punctuation\">;</span>\n<span class=\"token punctuation\">}</span></code></pre></div>\n<h3 id=\"radial-gradient\"><a href=\"#radial-gradient\" aria-hidden class=\"anchor\"><svg aria-hidden=\"true\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Radial Gradient</h3>\n<div class=\"gatsby-highlight\" data-language=\"css\"><pre class=\"language-css\"><code class=\"language-css\"><span class=\"token selector\">.circle</span> <span class=\"token punctuation\">{</span>\n  <span class=\"token property\">background-image</span><span class=\"token punctuation\">:</span> <span class=\"token function\">radial-gradient</span><span class=\"token punctuation\">(</span>circle, #456BD9, #456BD9 66%, transparent 66%<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n  <span class=\"token property\">height</span><span class=\"token punctuation\">:</span> 5em<span class=\"token punctuation\">;</span>\n  <span class=\"token property\">width</span><span class=\"token punctuation\">:</span> 5em<span class=\"token punctuation\">;</span>\n<span class=\"token punctuation\">}</span></code></pre></div>"}},{"node":{"frontmatter":{"title":"javascript命名约定","publish":true,"cover":"https://www.robinwieruch.de/static/42c38cd217935ca3c62713748f0fef4e/2b1a3/banner.jpg","showCover":true,"date":"2019-10-18","category":"nodejs","url":"https://www.robinwieruch.de/javascript-naming-conventions","author":"Robin Wieruch 编辑 Ka","translator":"","tags":["convetions"],"priority":1},"html":"<h2 id=\"几种命名方式\"><a href=\"#%E5%87%A0%E7%A7%8D%E5%91%BD%E5%90%8D%E6%96%B9%E5%BC%8F\" aria-hidden class=\"anchor\"><svg aria-hidden=\"true\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>几种命名方式</h2>\n<h3 id=\"camelcase-used-in-js-驼峰\"><a href=\"#camelcase-used-in-js-%E9%A9%BC%E5%B3%B0\" aria-hidden class=\"anchor\"><svg aria-hidden=\"true\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>camelCase (used in JS) 驼峰</h3>\n<h3 id=\"pascalcase-used-in-js-帕斯卡\"><a href=\"#pascalcase-used-in-js-%E5%B8%95%E6%96%AF%E5%8D%A1\" aria-hidden class=\"anchor\"><svg aria-hidden=\"true\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>PascalCase (used in JS) 帕斯卡</h3>\n<h3 id=\"snake_case-蛇形\"><a href=\"#snake_case-%E8%9B%87%E5%BD%A2\" aria-hidden class=\"anchor\"><svg aria-hidden=\"true\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>snake_case 蛇形</h3>\n<h3 id=\"kebab-case-脊柱（也叫spinal-case）\"><a href=\"#kebab-case-%E8%84%8A%E6%9F%B1%EF%BC%88%E4%B9%9F%E5%8F%ABspinal-case%EF%BC%89\" aria-hidden class=\"anchor\"><svg aria-hidden=\"true\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>kebab-case 脊柱（也叫spinal-case）</h3>\n<h2 id=\"普遍用驼峰\"><a href=\"#%E6%99%AE%E9%81%8D%E7%94%A8%E9%A9%BC%E5%B3%B0\" aria-hidden class=\"anchor\"><svg aria-hidden=\"true\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>普遍用驼峰</h2>\n<h3 id=\"布尔变量加is例如isvalid\"><a href=\"#%E5%B8%83%E5%B0%94%E5%8F%98%E9%87%8F%E5%8A%A0is%E4%BE%8B%E5%A6%82isvalid\" aria-hidden class=\"anchor\"><svg aria-hidden=\"true\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>布尔变量加is,例如isValid</h3>\n<h3 id=\"函数亦用驼峰-myfunction\"><a href=\"#%E5%87%BD%E6%95%B0%E4%BA%A6%E7%94%A8%E9%A9%BC%E5%B3%B0-myfunction\" aria-hidden class=\"anchor\"><svg aria-hidden=\"true\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>函数亦用驼峰 myFunction</h3>\n<h2 id=\"类使用帕斯卡-myclass\"><a href=\"#%E7%B1%BB%E4%BD%BF%E7%94%A8%E5%B8%95%E6%96%AF%E5%8D%A1-myclass\" aria-hidden class=\"anchor\"><svg aria-hidden=\"true\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>类使用帕斯卡 MyClass</h2>\n<h3 id=\"对于函数组件，则应该当作类处理，使用帕斯卡function-mycomponent\"><a href=\"#%E5%AF%B9%E4%BA%8E%E5%87%BD%E6%95%B0%E7%BB%84%E4%BB%B6%EF%BC%8C%E5%88%99%E5%BA%94%E8%AF%A5%E5%BD%93%E4%BD%9C%E7%B1%BB%E5%A4%84%E7%90%86%EF%BC%8C%E4%BD%BF%E7%94%A8%E5%B8%95%E6%96%AF%E5%8D%A1function-mycomponent\" aria-hidden class=\"anchor\"><svg aria-hidden=\"true\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>对于函数组件，则应该当作类处理，使用帕斯卡function MyComponent(){}</h3>\n<h3 id=\"私有属性，方法使用_开头-_myprivatemethod\"><a href=\"#%E7%A7%81%E6%9C%89%E5%B1%9E%E6%80%A7%EF%BC%8C%E6%96%B9%E6%B3%95%E4%BD%BF%E7%94%A8_%E5%BC%80%E5%A4%B4-_myprivatemethod\" aria-hidden class=\"anchor\"><svg aria-hidden=\"true\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>私有属性，方法使用_开头 _myPrivateMethod</h3>\n<h2 id=\"常量全部大些中间以隔开-myconstant\"><a href=\"#%E5%B8%B8%E9%87%8F%E5%85%A8%E9%83%A8%E5%A4%A7%E4%BA%9B%E4%B8%AD%E9%97%B4%E4%BB%A5%E9%9A%94%E5%BC%80-myconstant\" aria-hidden class=\"anchor\"><svg aria-hidden=\"true\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>常量全部大些,中间以<em>隔开 MY</em>CONSTANT</h2>\n<h2 id=\"文件一般用kebab-case\"><a href=\"#%E6%96%87%E4%BB%B6%E4%B8%80%E8%88%AC%E7%94%A8kebab-case\" aria-hidden class=\"anchor\"><svg aria-hidden=\"true\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>文件一般用kebab-case</h2>\n<blockquote>\n<p>但是对于类文件还是建议直接用类名做文件名，即帕斯卡命名方式。</p>\n</blockquote>"}},{"node":{"frontmatter":{"title":"popper强大的弹出框组件","publish":true,"cover":"https://raw.githubusercontent.com/FezVrasta/popper.js/master/popperjs.png","showCover":true,"date":"2019-10-19","category":"frontend","url":"https://github.com/FezVrasta/popper.js","author":"Federico Zivolo","translator":"","tags":["css"],"priority":1},"html":"<p><a href=\"https://popper.js.org/index.html#example10\">demo</a></p>"}},{"node":{"frontmatter":{"title":"node-convict  Mozillia出品,为配置加上shcema验证","publish":true,"cover":"","showCover":true,"date":"2019-10-18","category":"nodejs","url":"https://github.com/mozilla/node-convict","author":"Mozillia","translator":"","tags":["convetions"],"priority":1},"html":""}},{"node":{"frontmatter":{"title":"preventExtension  seal  freeze的区别","publish":true,"cover":"","showCover":true,"date":"2019-10-17","category":"frontend","url":"https://css-tricks.com/stop-animations-during-window-resizing/","author":"Chris Coyier","translator":"","tags":["css"],"priority":1},"html":"<table>\n<thead>\n<tr>\n<th></th>\n<th></th>\n<th></th>\n<th></th>\n<th></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>特性</td>\n<td>default</td>\n<td>preventExtensions</td>\n<td>seal</td>\n<td>freeze</td>\n</tr>\n<tr>\n<td>添加</td>\n<td>✓</td>\n<td></td>\n<td></td>\n<td></td>\n</tr>\n<tr>\n<td>删除</td>\n<td>✓</td>\n<td>✓</td>\n<td></td>\n<td></td>\n</tr>\n<tr>\n<td>改变</td>\n<td>✓</td>\n<td>✓</td>\n<td>✓</td>\n<td></td>\n</tr>\n</tbody>\n</table>\n<p>这些限制都是shadow的，即只能保证对第一层的属性。</p>"}},{"node":{"frontmatter":{"title":"react-tiny-fab react悬浮按钮组件","publish":true,"cover":"https://raw.githubusercontent.com/dericgw/react-tiny-fab/master/fab.gif","showCover":true,"date":"2019-10-17","category":"frontend","url":"https://github.com/dericgw/react-tiny-fab","author":"Deric Cain","translator":"","tags":["css"],"priority":1},"html":""}},{"node":{"frontmatter":{"title":"react-transitions 纯样式跨页面动画特效","publish":true,"cover":"https://camo.githubusercontent.com/dd5378ecfe6fc42690da1b7b99d28a84bc3e2469/68747470733a2f2f696d6167652e6962622e636f2f674d573871712f52656163742d5472616e736974696f6e732e676966","showCover":true,"date":"2019-10-17","category":"frontend","url":"https://github.com/joerez/react-transitions/","author":"Joe Rezendes","translator":"","tags":["css"],"priority":1},"html":"<p>虽然名字里有react，但其是一个纯css工具，任何框架都可以使用。\n<a href=\"http://www.joerezendes.com/projects/react-transitions\">在线Demo</a></p>"}},{"node":{"frontmatter":{"title":"svgr 将svg图片转换成react组件的工具","publish":true,"cover":"","showCover":true,"date":"2019-10-17","category":"frontend","url":"https://github.com/smooth-code/svgr","author":"Smooth Code","translator":"","tags":["css"],"priority":1},"html":""}},{"node":{"frontmatter":{"title":"tiny-swiper 只有2kb的swiper替代","publish":true,"cover":"","showCover":true,"date":"2019-10-19","category":"frontend","url":"https://github.com/joe223/tiny-swiper/","author":"WeRDyin","translator":"","tags":["css"],"priority":1},"html":"<p>替代大名鼎鼎的<a href=\"https://swiperjs.com/\">swiperjs</a>，提供相同的api，减少了大小。</p>"}},{"node":{"frontmatter":{"title":"user-agents 创建每天更新的随机User Agent","publish":true,"cover":"","showCover":true,"date":"2019-10-18","category":"nodejs","url":"https://github.com/intoli/user-agents","author":"Intoli","translator":"","tags":["agent"],"priority":1},"html":""}},{"node":{"frontmatter":{"title":"typical不到400b的打字特效","publish":true,"cover":"","showCover":true,"date":"2019-10-19","category":"frontend","url":"https://github.com/camwiegert/typical","author":"Cam Wiegert","translator":"","tags":["vanilla","effect"],"priority":1},"html":"<p><a href=\"https://codepen.io/camwiegert/pen/rNNepYo\">在线demo</a></p>"}},{"node":{"frontmatter":{"title":"游戏-飞翔的鸡蛋(Aero Egg)","publish":true,"cover":"https://blog.kazge.com/assets/volitantegg-show.gif","showCover":true,"date":"2019-06-12","category":"game","url":"https://blog.kazge.com/show/volitantegg/%E9%A3%9E%E7%BF%94%E7%9A%84%E9%B8%A1%E8%9B%8B.apk","author":"广告","translator":"","tags":["ads"],"priority":1},"html":"<p><a href=\"https://itunes.apple.com/us/app/volitant-egg-ads-version/id1247264387?mt=8\">APP Store(非国内账户可下载)</a>\n<a href=\"https://blog.kazge.com/show/volitantegg/%E9%A3%9E%E7%BF%94%E7%9A%84%E9%B8%A1%E8%9B%8B.apk\">安卓 - 中文</a></p>"}},{"node":{"frontmatter":{"title":"想让你的文章出现在这里？","publish":true,"cover":"","showCover":true,"date":"2019-07-08","category":"frontend","url":"mailto:editor@zhouexin.com?subject=投稿!","author":"投稿","translator":"","tags":["editor"],"priority":1},"html":""}},{"node":{"frontmatter":{"title":"当窗口大小变化时停止动画","publish":true,"cover":"","showCover":true,"date":"2019-10-17","category":"frontend","url":"https://css-tricks.com/stop-animations-during-window-resizing/","author":"Chris Coyier","translator":"","tags":["css"],"priority":1},"html":"<p>解决办法是，捕捉resize事件，为所有样式添加停止动画样式</p>\n<div class=\"gatsby-highlight\" data-language=\"javascript\"><pre class=\"language-javascript\"><code class=\"language-javascript\"><span class=\"token keyword\">let</span> resizeTimer<span class=\"token punctuation\">;</span>\nwindow<span class=\"token punctuation\">.</span><span class=\"token function\">addEventListener</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"resize\"</span><span class=\"token punctuation\">,</span> <span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span> <span class=\"token operator\">=></span> <span class=\"token punctuation\">{</span>\n  document<span class=\"token punctuation\">.</span>body<span class=\"token punctuation\">.</span>classList<span class=\"token punctuation\">.</span><span class=\"token function\">add</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"resize-animation-stopper\"</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n  <span class=\"token function\">clearTimeout</span><span class=\"token punctuation\">(</span>resizeTimer<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n  resizeTimer <span class=\"token operator\">=</span> <span class=\"token function\">setTimeout</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span> <span class=\"token operator\">=></span> <span class=\"token punctuation\">{</span>\n    document<span class=\"token punctuation\">.</span>body<span class=\"token punctuation\">.</span>classList<span class=\"token punctuation\">.</span><span class=\"token function\">remove</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"resize-animation-stopper\"</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n  <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span> <span class=\"token number\">400</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"token punctuation\">}</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span></code></pre></div>\n<div class=\"gatsby-highlight\" data-language=\"css\"><pre class=\"language-css\"><code class=\"language-css\"><span class=\"token selector\">.resize-animation-stopper *</span> <span class=\"token punctuation\">{</span>\n  <span class=\"token property\">animation</span><span class=\"token punctuation\">:</span> none <span class=\"token important\">!important</span><span class=\"token punctuation\">;</span>\n  <span class=\"token property\">transition</span><span class=\"token punctuation\">:</span> none <span class=\"token important\">!important</span><span class=\"token punctuation\">;</span>\n<span class=\"token punctuation\">}</span></code></pre></div>"}},{"node":{"frontmatter":{"title":"教程-dump mongo数据库压缩加密保存到AWS","publish":true,"cover":"https://severalnines.com/sites/default/files/blog/node_5773/image4.png","showCover":true,"date":"2019-10-18","category":"database","url":"https://severalnines.com/database-blog/tips-storing-mongodb-backups-cloud","author":"Bart Oles","translator":"","tags":["mongodb"],"priority":1},"html":""}},{"node":{"frontmatter":{"title":"教程-使用react创建横向滚动特效","publish":true,"cover":"https://konstantinlebedev.com/one-0bde82151042cb365993afa47aa6c8f3.gif","showCover":true,"date":"2019-10-17","category":"frontend","url":"https://konstantinlebedev.com/horizontal-scroll-animation/","author":"Konstantin Lebedev","translator":"","tags":["css"],"priority":1},"html":"<iframe src=\"https://codesandbox.io/embed/react-spring-fun-scroll-vmncd?fontsize=14\" title=\"react-spring-fun-scroll\" allow=\"geolocation; microphone; camera; midi; vr; accelerometer; gyroscope; payment; ambient-light-sensor; encrypted-media; usb\" style=\"width:100%; height:500px; border:0; border-radius: 4px; overflow:hidden;\" sandbox=\"allow-modals allow-forms allow-popups allow-scripts allow-same-origin\"></iframe>"}},{"node":{"frontmatter":{"title":"终端命令行里的转圈是怎么实现的","publish":true,"cover":"https://miro.medium.com/max/640/1*C66r9NIY1Nf-NtkIrZns7g.gif","showCover":true,"date":"2019-10-18","category":"nodejs","url":"https://blog.bitsrc.io/build-command-line-spinners-in-node-js-3e432d926d56","author":"Chidume Nnamdi","translator":"","tags":["terminal"],"priority":1},"html":"<ul>\n<li>\\ | / 四种字符不停显示</li>\n</ul>"}},{"node":{"frontmatter":{"title":"滚动阴影特效工具","publish":true,"cover":"https://github.com/stefanjudis/css-scroll-shadows/raw/master/screenshot.jpg","showCover":true,"date":"2019-10-17","category":"frontend","url":"https://github.com/stefanjudis/css-scroll-shadows/","author":"Stefan Judis","translator":"","tags":["css"],"priority":1},"html":""}}]}}