{"pageContext":{"index":56,"total":362,"name":"2020-05-31","items":[{"node":{"frontmatter":{"title":"AudioMass 全功能音频编辑工具","publish":true,"cover":"","showCover":true,"date":"2020-05-31","category":"javascript","url":"https://github.com/pkalogiros/audiomass","author":"Pantelis Kalogiros","translator":"","tags":["audio"],"priority":1},"html":"<p><a href=\"https://audiomass.co/\">在线演示</a></p>"}},{"node":{"frontmatter":{"title":"EVT - 支持typescript的EventEmitter(事件触发器)替代","publish":true,"cover":"https://user-images.githubusercontent.com/6702424/76674598-91ebfc00-65b1-11ea-88df-eb43f04f3cce.png","showCover":true,"date":"2019-08-01","category":"nodejs","url":"https://github.com/garronej/evt","author":"Garrone Joseph","translator":"","tags":["event"],"priority":1},"html":""}},{"node":{"frontmatter":{"title":"Gatsby背后公司获得两千八百万美元投资","publish":true,"cover":"https://specials-images.forbesimg.com/imageserve/5ece785989ee2f0006814c73/960x0.jpg?cropX1=1001&cropX2=4433&cropY1=807&cropY2=3095","showCover":true,"date":"2020-05-31","category":"other","url":"https://www.forbes.com/sites/davidjeans/2020/05/27/gatsby-website-building-startup-backed-by-index-ventures-raises-28-million/#693f7d2a7f3e","author":"David Jeans","translator":"","tags":["react"],"priority":1},"html":""}},{"node":{"frontmatter":{"title":"REST Client - VSCode 取代 postman 的插件","publish":true,"cover":"https://humao.gallerycdn.vsassets.io/extensions/humao/rest-client/0.23.2/1583741246890/Microsoft.VisualStudio.Services.Icons.Default","showCover":true,"date":"2020-05-31","category":"other","url":"https://marketplace.visualstudio.com/items?itemName=humao.rest-client#rest-clientx","author":"Huachao Mao","translator":"","tags":["vscode"],"priority":1},"html":"<ul>\n<li>支持.rest 或.http 文件格式</li>\n<li>支持多个请求</li>\n<li>支持导出 cURL 命令</li>\n<li>支持自动补全</li>\n</ul>"}},{"node":{"frontmatter":{"title":"codefence.io - 支持25种服务端语言的可嵌入代码编辑器","publish":true,"cover":"","showCover":true,"date":"2020-05-31","category":"frontend","url":"https://codefence.io/","author":"codefence","translator":"","tags":["editor"],"priority":1},"html":""}},{"node":{"frontmatter":{"title":"howler.js 音频库","publish":true,"cover":"https://camo.githubusercontent.com/98b571ff7230cf5d95e1d41d5d8ea0620c20a79d/68747470733a2f2f73332e616d617a6f6e6177732e636f6d2f686f776c65722e6a732f686f776c65722d6c6f676f2e706e67","showCover":true,"date":"2020-05-31","category":"frontend","url":"https://github.com/goldfire/howler.js","author":"James Simpson","translator":"","tags":["html"],"priority":1},"html":""}},{"node":{"frontmatter":{"title":"htmx - 使用html属性构建动态页面","publish":true,"cover":"https://raw.githubusercontent.com/bigskysoftware/htmx/master/www/img/htmx_logo.1.png","showCover":true,"date":"2020-05-31","category":"frontend","url":"https://github.com/bigskysoftware/htmx","author":"Big Sky Software","translator":"","tags":["html"],"priority":1},"html":""}},{"node":{"frontmatter":{"title":"number-precision - 精确数字操作库","publish":true,"cover":"","showCover":true,"date":"2020-05-31","category":"javascript","url":"https://github.com/nefe/number-precision","author":"NEFE","translator":"","tags":["math"],"priority":1},"html":"<div class=\"gatsby-highlight\" data-language=\"javascript\"><pre class=\"language-javascript\"><code class=\"language-javascript\"><span class=\"token keyword\">import</span> <span class=\"token constant\">NP</span> <span class=\"token keyword\">from</span> <span class=\"token string\">'number-precision'</span>\n<span class=\"token constant\">NP</span><span class=\"token punctuation\">.</span><span class=\"token function\">strip</span><span class=\"token punctuation\">(</span><span class=\"token number\">0.09999999999999998</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span> <span class=\"token comment\">// = 0.1</span>\n<span class=\"token constant\">NP</span><span class=\"token punctuation\">.</span><span class=\"token function\">plus</span><span class=\"token punctuation\">(</span><span class=\"token number\">0.1</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0.2</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>             <span class=\"token comment\">// = 0.3, not 0.30000000000000004</span>\n<span class=\"token constant\">NP</span><span class=\"token punctuation\">.</span><span class=\"token function\">plus</span><span class=\"token punctuation\">(</span><span class=\"token number\">2.3</span><span class=\"token punctuation\">,</span> <span class=\"token number\">2.4</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>             <span class=\"token comment\">// = 4.7, not 4.699999999999999</span>\n<span class=\"token constant\">NP</span><span class=\"token punctuation\">.</span><span class=\"token function\">minus</span><span class=\"token punctuation\">(</span><span class=\"token number\">1.0</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0.9</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>            <span class=\"token comment\">// = 0.1, not 0.09999999999999998</span>\n<span class=\"token constant\">NP</span><span class=\"token punctuation\">.</span><span class=\"token function\">times</span><span class=\"token punctuation\">(</span><span class=\"token number\">3</span><span class=\"token punctuation\">,</span> <span class=\"token number\">0.3</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>              <span class=\"token comment\">// = 0.9, not 0.8999999999999999</span>\n<span class=\"token constant\">NP</span><span class=\"token punctuation\">.</span><span class=\"token function\">times</span><span class=\"token punctuation\">(</span><span class=\"token number\">0.362</span><span class=\"token punctuation\">,</span> <span class=\"token number\">100</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>          <span class=\"token comment\">// = 36.2, not 36.199999999999996</span>\n<span class=\"token constant\">NP</span><span class=\"token punctuation\">.</span><span class=\"token function\">divide</span><span class=\"token punctuation\">(</span><span class=\"token number\">1.21</span><span class=\"token punctuation\">,</span> <span class=\"token number\">1.1</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>          <span class=\"token comment\">// = 1.1, not 1.0999999999999999</span>\n<span class=\"token constant\">NP</span><span class=\"token punctuation\">.</span><span class=\"token function\">round</span><span class=\"token punctuation\">(</span><span class=\"token number\">0.105</span><span class=\"token punctuation\">,</span> <span class=\"token number\">2</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>            <span class=\"token comment\">// = 0.11, not 0.1</span></code></pre></div>"}},{"node":{"frontmatter":{"title":"lineicons - 2千+ 免费图标","publish":true,"cover":"","showCover":true,"date":"2020-05-31","category":"frontend","url":"https://lineicons.com/","author":"lineicons","translator":"","tags":["icon"],"priority":1},"html":""}},{"node":{"frontmatter":{"title":"react form验证框架合集","publish":true,"cover":"https://i2.wp.com/blog.logrocket.com/wp-content/uploads/2020/05/reactforms.png?w=730&ssl=1","showCover":true,"date":"2020-05-31","category":"frontend","url":"https://blog.logrocket.com/the-ultimate-roundup-of-react-form-validation-solutions/","author":"Wern Ancheta","translator":"","tags":["react"],"priority":1},"html":"<h2 id=\"一般适用\"><a href=\"#%E4%B8%80%E8%88%AC%E9%80%82%E7%94%A8\" 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<ul>\n<li><a href=\"https://jaredpalmer.com/formik/\">Formik</a></li>\n<li><a href=\"https://final-form.org/react\">React Final Form</a></li>\n<li><a href=\"https://react-hook-form.com/\">React Hook Form</a></li>\n</ul>\n<h2 id=\"其他\"><a href=\"#%E5%85%B6%E4%BB%96\" 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<ul>\n<li>\n<p><a href=\"https://unform.dev/\">Unform</a></p>\n</li>\n<li>\n<p><a href=\"https://github.com/dockwa/simple-react-validator\">Simple React Validator</a></p>\n</li>\n<li>\n<p>Redux Autoform</p>\n</li>\n<li>\n<p>uniforms</p>\n</li>\n<li>\n<p>React Reactive Forms</p>\n</li>\n<li>\n<p>react-json-editor</p>\n</li>\n</ul>\n<h2 id=\"不推荐以下不再维护的库\"><a href=\"#%E4%B8%8D%E6%8E%A8%E8%8D%90%E4%BB%A5%E4%B8%8B%E4%B8%8D%E5%86%8D%E7%BB%B4%E6%8A%A4%E7%9A%84%E5%BA%93\" 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<ul>\n<li>React-Formal</li>\n<li>React-forms</li>\n<li>Value Link</li>\n<li>newforms</li>\n<li>formjs</li>\n<li>tcomb-form</li>\n</ul>"}},{"node":{"frontmatter":{"title":"react-shimmer 图片加载特效","publish":true,"cover":"https://camo.githubusercontent.com/92f836c3865f034ba3d5df879c43cf4d0facc3ff/68747470733a2f2f63646e2e7261776769742e636f6d2f676f6b63616e2f72656163742d7368696d6d65722f6d61737465722f6d656469612f64656d6f2e676966","showCover":true,"date":"2020-05-31","category":"frontend","url":"https://github.com/gokcan/react-shimmer","author":"David Jeans","translator":"","tags":["react"],"priority":2},"html":""}},{"node":{"frontmatter":{"title":"rough-notation - 手绘标注动画效果","publish":true,"cover":"https://camo.githubusercontent.com/38ac63f7ede6dab65e2a9ffdd4f04fa2fa60b464/68747470733a2f2f726f7567686e6f746174696f6e2e636f6d2f696d616765732f736f6369616c2e706e67","showCover":true,"date":"2020-05-31","category":"frontend","url":"https://github.com/pshihn/rough-notation","author":"Preet","translator":"","tags":["animation"],"priority":1},"html":""}},{"node":{"frontmatter":{"title":"snowpack - 高性能构建打包工具","publish":true,"cover":"https://camo.githubusercontent.com/7b3c510e492d16b8bab8c484f0c60be7e148666b/68747470733a2f2f696d6775722e636f6d2f755848466d35792e6a7067","showCover":true,"date":"2020-05-31","category":"javascript","url":"https://github.com/pikapkg/snowpack","author":"pikapkg","translator":"","tags":["html"],"priority":1},"html":""}},{"node":{"frontmatter":{"title":"react native项目模板合集","publish":true,"cover":"https://iotvnaw69daj.i.optimole.com/6LNb4wA-AxoTIYMv/w:509/h:312/q:90/https://mk0codeinwp10tp0961a.kinstacdn.com/wp-content/uploads/2018/12/material-kit-react-native-1.jpg","showCover":true,"date":"2020-05-31","category":"mobile","url":"https://www.codeinwp.com/blog/free-react-native-templates/","author":" John Hughes","translator":"","tags":["react"],"priority":1},"html":""}},{"node":{"frontmatter":{"title":"sou-react-table excel风格支持粘贴的可编辑表格","publish":true,"cover":"https://github.com/miadwang/sou-react-table/raw/master/screenshot.png?raw=true","showCover":true,"date":"2020-05-31","category":"frontend","url":"https://github.com/miadwang/sou-react-table","author":"Mia Wang","translator":"","tags":["excel"],"priority":1},"html":""}},{"node":{"frontmatter":{"title":"strapi - 开源nodejs CMS（内容管理系统）","publish":true,"cover":"https://raw.githubusercontent.com/strapi/strapi/master/public/assets/administration_panel.png","showCover":true,"date":"2020-05-31","category":"nodejs","url":"https://github.com/strapi/strapi","author":"strapi","translator":"","tags":["cms"],"priority":2},"html":"<p>支持MongoDB, PostgreSQL, MySQL, MariaDB, SQLite.</p>"}},{"node":{"frontmatter":{"title":"target=\"_blank\" 为什么要特别注意","publish":true,"cover":"","showCover":true,"date":"2020-05-31","category":"frontend","url":"https://www.manjuladube.dev/target-blank-security-vulnerability","author":"Manjula Dube","translator":"","tags":["security"],"priority":1},"html":"<p>因为 window.opener 可以操作原来页面，例如<code class=\"language-text\">window.opener.location = &#39;https://phishingwebsite/facebook.com/page.html&#39;;</code></p>\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>a</span> <span class=\"token attr-name\">href</span><span class=\"token attr-value\"><span class=\"token punctuation\">=</span><span class=\"token punctuation\">\"</span>/share<span class=\"token punctuation\">\"</span></span> <span class=\"token attr-name\">rel</span><span class=\"token attr-value\"><span class=\"token punctuation\">=</span><span class=\"token punctuation\">\"</span>noopener noreferrer<span class=\"token punctuation\">\"</span></span> <span class=\"token attr-name\">target</span><span class=\"token attr-value\"><span class=\"token punctuation\">=</span><span class=\"token punctuation\">\"</span>_blank<span class=\"token punctuation\">\"</span></span> <span class=\"token punctuation\">/></span></span></code></pre></div>"}},{"node":{"frontmatter":{"title":"unofficial-apis - 非官方api合集","publish":true,"cover":"","showCover":true,"date":"2020-05-31","category":"other","url":"https://github.com/Rolstenhouse/unofficial-apis","author":"Robert Olsthoorn","translator":"","tags":["hack"],"priority":1},"html":""}},{"node":{"frontmatter":{"title":"tailblocks 用tailwinds拼凑可直接用的代码块","publish":true,"cover":"https://github.com/mertjf/tailblocks/raw/master/public/preview.gif","showCover":true,"date":"2020-05-31","category":"frontend","url":"https://github.com/mertJF/tailblocks","author":"Mert Cukuren","translator":"","tags":["css"],"priority":1},"html":""}},{"node":{"frontmatter":{"title":"多租户系统的数据库设计比较","publish":true,"cover":"","showCover":true,"date":"2020-05-31","category":"database","url":"https://blog.arkency.com/comparison-of-approaches-to-multitenancy-in-rails-apps/","author":"TOMASZ WRÓBEL","translator":"","tags":["saas"],"priority":1},"html":"<p>还是提倡行级区分,使用 tenant_id</p>"}},{"node":{"frontmatter":{"title":"完全serverless解决方案图解","publish":true,"cover":"https://miro.medium.com/max/4320/1*JxDFqhb95iPclzr2FJcQAQ.png","showCover":true,"date":"2020-05-31","category":"other","url":"https://medium.com/serverless-transformation/what-a-typical-100-serverless-architecture-looks-like-in-aws-40f252cd0ecb","author":"Xavier Lefèvre","translator":"","tags":["serverless"],"priority":1},"html":""}},{"node":{"frontmatter":{"title":"websocket嗅探到底可不可能导致危害","publish":true,"cover":"https://nullsweep.com/content/images/2020/05/ebay_port_scan.png","showCover":true,"date":"2020-05-31","category":"security","url":"https://medium.com/@stestagg/stealing-secrets-from-developers-using-websockets-254f98d577a0","author":"Steve Stagg","translator":"","tags":["security"],"priority":1},"html":"<ul>\n<li><a href=\"http://frontend-overflowstack.com/\">在线测试</a></li>\n<li>作者认为可能性不大</li>\n<li>但还是期待需要有个浏览器规则管一下</li>\n</ul>"}},{"node":{"frontmatter":{"title":"教程 - Serverless hello系列","publish":true,"cover":"","showCover":true,"date":"2020-05-31","category":"frontend","url":"https://www.serverlessops.io/blog/hello-serverless","author":"Tom McLaughlin","translator":"","tags":["serverless"],"priority":1},"html":""}},{"node":{"frontmatter":{"title":"教程 - javascript内存泄漏可能情况以及怎样避免","publish":true,"cover":"https://www.ditdot.hr/images/dev/010/causes-of-memory-leaks-in-javascript-01.png","showCover":true,"date":"2020-05-31","category":"javascript","url":"https://www.ditdot.hr/en/causes-of-memory-leaks-in-javascript-and-how-to-avoid-them","author":"Ekaterina Vujasinović","translator":"","tags":["leak"],"priority":1},"html":"<p>教程 - javascript内存泄漏.md</p>"}},{"node":{"frontmatter":{"title":"想让你的文章出现在这里？","publish":true,"cover":"","showCover":true,"date":"2020-01-12","category":"frontend","url":"mailto:editor@zhouexin.com?subject=投稿!","author":"投稿","translator":"","tags":["editor"],"priority":1},"html":""}},{"node":{"frontmatter":{"title":"教程 - 在浏览器中使用GitHub Classroom编程","publish":true,"cover":"https://github.blog/wp-content/uploads/2020/05/code-in-the-browser-with-github-classroom.png?w=1200","showCover":true,"date":"2020-05-31","category":"other","url":"https://github.blog/2020-05-26-code-in-the-browser-with-github-classroom/","author":"Arelia Jones","translator":"","tags":["github"],"priority":1},"html":""}},{"node":{"frontmatter":{"title":"十大javascript烧脑问题","publish":true,"cover":"https://typeofnan.dev/static/69a3c18e52de334cff093d909589549b/c26dd/quiz-brain.jpeg","showCover":true,"date":"2020-05-31","category":"javascript","url":"https://typeofnan.dev/10-javascript-quiz-questions-and-answers/","author":"Nick Scialli ","translator":"","tags":["quiz"],"priority":1},"html":""}}]}}