<?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>Forem: Kelp</title>
    <description>The latest articles on Forem by Kelp (@kelp404).</description>
    <link>https://forem.com/kelp404</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%2F100870%2F4347f569-5b10-4d83-8fdc-e04c2e3e17eb.jpeg</url>
      <title>Forem: Kelp</title>
      <link>https://forem.com/kelp404</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/kelp404"/>
    <language>en</language>
    <item>
      <title>An awesome terminal.</title>
      <dc:creator>Kelp</dc:creator>
      <pubDate>Fri, 26 Apr 2019 08:13:06 +0000</pubDate>
      <link>https://forem.com/kelp404/an-awesome-terminal-12h8</link>
      <guid>https://forem.com/kelp404/an-awesome-terminal-12h8</guid>
      <description>&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2Fvk3q6f2xbl61yeg4qki0.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2Fvk3q6f2xbl61yeg4qki0.png" alt="screenshot"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Today, I saw this project. It is so cool!&lt;/p&gt;


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev.to%2Fassets%2Fgithub-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/GitSquared" rel="noopener noreferrer"&gt;
        GitSquared
      &lt;/a&gt; / &lt;a href="https://github.com/GitSquared/edex-ui" rel="noopener noreferrer"&gt;
        edex-ui
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      A cross-platform, customizable science fiction terminal emulator with advanced monitoring &amp;amp; touchscreen support.
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;p&gt;
  &lt;br&gt;
  &lt;a rel="noopener noreferrer" href="https://github.com/GitSquared/edex-uimedia/logo.png"&gt;&lt;img alt="Logo" src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fgithub.com%2FGitSquared%2Fedex-uimedia%2Flogo.png"&gt;&lt;/a&gt;
  &lt;br&gt;&lt;br&gt;
  &lt;a href="https://lgtm.com/projects/g/GitSquared/edex-ui/context:javascript" rel="nofollow noopener noreferrer"&gt;&lt;img alt="undefined" src="https://camo.githubusercontent.com/877b115bb2075b7e9d5340d42586998d6f541c614d916c9d623c9ab3427d6b87/68747470733a2f2f696d672e736869656c64732e696f2f6c67746d2f67726164652f6a6176617363726970742f672f476974537175617265642f656465782d75692e7376673f6c6f676f3d6c67746d266c6f676f57696474683d3138"&gt;&lt;/a&gt;
  &lt;br&gt;
  &lt;a href="https://github.com/GitSquared/edex-ui/releases/latest" rel="noopener noreferrer"&gt;&lt;img alt="undefined" src="https://camo.githubusercontent.com/ed8f3147195afa9afcb8f086270662c5637d1ac4529642984cb4e85d2b5657a1/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f72656c656173652f476974537175617265642f656465782d75692e7376673f7374796c653d706f706f7574"&gt;&lt;/a&gt;
  &lt;a href="https://github.com/GitSquared/edex-ui#featured-in" rel="noopener noreferrer"&gt;&lt;img alt="undefined" src="https://camo.githubusercontent.com/09d716d94aecb913184fef5264b355c63db88860faa34dbdf40250a69211d55b/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f646f776e6c6f6164732f476974537175617265642f656465782d75692f746f74616c2e7376673f7374796c653d706f706f7574"&gt;&lt;/a&gt;
  &lt;a href="https://github.com/GitSquared/edex-ui/blob/master/LICENSE" rel="noopener noreferrer"&gt;&lt;img alt="undefined" src="https://camo.githubusercontent.com/6e981300410563663717603a18bbc07dcd39e80e7643a11ace7aebe0291f26b8/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f6c6963656e73652f476974537175617265642f656465782d75692e7376673f7374796c653d706f706f7574"&gt;&lt;/a&gt;
  &lt;br&gt;
  &lt;a href="https://github.com/GitSquared/edex-ui/releases/download/v2.2.8/eDEX-UI-Windows.exe" rel="noopener noreferrer"&gt;&lt;img alt="undefined" src="https://camo.githubusercontent.com/4d2dd4528f9648edfbabc894f1d428918fe51da6715d77384401dac4ce98ec56/68747470733a2f2f62616467656e2e6e65742f62616467652f446f776e6c6f61642f57696e646f77732f3f636f6c6f723d626c75652669636f6e3d77696e646f7773266c6162656c"&gt;&lt;/a&gt;
  &lt;a href="https://github.com/GitSquared/edex-ui/releases/download/v2.2.8/eDEX-UI-macOS.dmg" rel="noopener noreferrer"&gt;&lt;img alt="undefined" src="https://camo.githubusercontent.com/5606b14cf47f7c222cfe903425e5e2dd909641150b73e3211ac7001ddf0bb039/68747470733a2f2f62616467656e2e6e65742f62616467652f446f776e6c6f61642f6d61634f532f3f636f6c6f723d677265792669636f6e3d6170706c65266c6162656c"&gt;&lt;/a&gt;
  &lt;a href="https://github.com/GitSquared/edex-ui/releases/download/v2.2.8/eDEX-UI-Linux-x86_64.AppImage" rel="noopener noreferrer"&gt;&lt;img alt="undefined" src="https://camo.githubusercontent.com/bf7430c069df45079a7106747d3b226dd43f691e9d51a54f44e9368c1b45c1a1/68747470733a2f2f62616467656e2e6e65742f62616467652f446f776e6c6f61642f4c696e757836342f3f636f6c6f723d6f72616e67652669636f6e3d7465726d696e616c266c6162656c"&gt;&lt;/a&gt;
  &lt;a href="https://github.com/GitSquared/edex-ui/releases/download/v2.2.8/eDEX-UI-Linux-arm64-AppImage" rel="noopener noreferrer"&gt;&lt;img alt="undefined" src="https://camo.githubusercontent.com/dc8d0e17c3738c7c60064623ac23e504255890934d55763b5f72896e94bb2320/68747470733a2f2f62616467656e2e6e65742f62616467652f446f776e6c6f61642f4c696e757841726d36342f3f636f6c6f723d6f72616e67652669636f6e3d7465726d696e616c266c6162656c"&gt;&lt;/a&gt;
  &lt;a href="https://aur.archlinux.org/packages/edex-ui" rel="nofollow noopener noreferrer"&gt;&lt;img alt="undefined" src="https://camo.githubusercontent.com/882211f8dc369c7dfc6e2a56c8bc2816886ae68a2b543d5949dc67d48de39a3a/68747470733a2f2f62616467656e2e6e65742f62616467652f4155522f5061636b6167652f6379616e"&gt;&lt;/a&gt;
  &lt;br&gt;
  &lt;a href="https://github.com/GitSquared/edex-ui/releases/tag/v2.2.8" rel="noopener noreferrer"&gt;&lt;strong&gt;&lt;i&gt;(Project archived oct. 18th 2021)&lt;/i&gt;&lt;/strong&gt;&lt;/a&gt;
  &lt;br&gt;&lt;br&gt;&lt;br&gt;
&lt;/p&gt;

&lt;p&gt;eDEX-UI is a fullscreen, cross-platform terminal emulator and system monitor that looks and feels like a sci-fi computer interface.&lt;/p&gt;



&lt;br&gt;
&lt;a href="https://youtu.be/BGeY1rK19zA" rel="nofollow noopener noreferrer"&gt;&lt;br&gt;
  &lt;img width="400" alt="Demo on YouTube" src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fgithub.com%2FGitSquared%2Fedex-uimedia%2Fyoutube-demo-teaser.gif"&gt;&lt;br&gt;
&lt;/a&gt;

&lt;p&gt;Heavily inspired from the &lt;a href="https://web.archive.org/web/20170511000410/http://jtnimoy.com/blogs/projects/14881671" rel="nofollow noopener noreferrer"&gt;TRON Legacy movie effects&lt;/a&gt; (especially the &lt;a href="https://gmunk.com/TRON-Board-Room" rel="nofollow noopener noreferrer"&gt;Board Room sequence&lt;/a&gt;), the eDEX-UI project was originally meant to be &lt;em&gt;"&lt;a href="https://github.com/seenaburns/dex-ui" rel="noopener noreferrer"&gt;DEX-UI&lt;/a&gt; with less « art » and more « distributable software »"&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;While keeping a futuristic look and feel, it strives to maintain a certain level of functionality and to be usable in real-life scenarios, with the larger goal of bringing science-fiction UXs to the mainstream.&lt;/p&gt;



&lt;p&gt;It might or might not be a joke taken too seriously.&lt;/p&gt;




&lt;p&gt;
  &lt;em&gt;Jump to: &lt;br&gt;&lt;a href="https://github.com/GitSquared/edex-ui#features" rel="noopener noreferrer"&gt;Features&lt;/a&gt; — &lt;a href="https://github.com/GitSquared/edex-ui#screenshots" rel="noopener noreferrer"&gt;Screenshots&lt;/a&gt; — &lt;a href="https://github.com/GitSquared/edex-ui#qa" rel="noopener noreferrer"&gt;Questions &amp;amp; Answers&lt;/a&gt; — &lt;strong&gt;&lt;a href="https://github.com/GitSquared/edex-ui#how-do-i-get-it" rel="noopener noreferrer"&gt;Download&lt;/a&gt;&lt;/strong&gt; — &lt;a href="https://github.com/GitSquared/edex-ui#featured-in" rel="noopener noreferrer"&gt;Featured In&lt;/a&gt; — &lt;a href="https://github.com/GitSquared/edex-ui#useful-commands-for-the-nerds" rel="noopener noreferrer"&gt;Contributor Instructions&lt;/a&gt; — &lt;a href="https://github.com/GitSquared/edex-ui#credits" rel="noopener noreferrer"&gt;Credits&lt;/a&gt;&lt;/em&gt;
&lt;/p&gt;

&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Sponsor&lt;/h2&gt;
&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;Want to help support my open-source experiments and learn some cool JavaScript tricks at the same time?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Click the banner below and sign up to…&lt;/p&gt;
&lt;/div&gt;


&lt;/div&gt;
&lt;br&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/GitSquared/edex-ui" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;br&gt;
&lt;/div&gt;
&lt;br&gt;


</description>
      <category>fun</category>
    </item>
    <item>
      <title>Log MongoDB query plans when the query is slow.</title>
      <dc:creator>Kelp</dc:creator>
      <pubDate>Tue, 23 Apr 2019 03:27:06 +0000</pubDate>
      <link>https://forem.com/kelp404/log-query-plans-to-console-when-the-query-is-slow-502o</link>
      <guid>https://forem.com/kelp404/log-query-plans-to-console-when-the-query-is-slow-502o</guid>
      <description>&lt;h2&gt;
  
  
  How to tune the performance issue about MongoDB?
&lt;/h2&gt;

&lt;p&gt;We can use &lt;code&gt;.explain()&lt;/code&gt; then &lt;a href="https://www.mongodb.com/"&gt;MongoDB&lt;/a&gt; will return &lt;a href="https://docs.mongodb.com/manual/reference/explain-results/"&gt;explain-results&lt;/a&gt;.&lt;br&gt;
The explain-results are look like this.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;"executionStats" : {
   "executionSuccess" : &amp;lt;boolean&amp;gt;,
   "nReturned" : &amp;lt;int&amp;gt;,
   "executionTimeMillis" : &amp;lt;int&amp;gt;,
   "totalKeysExamined" : &amp;lt;int&amp;gt;,
   "totalDocsExamined" : &amp;lt;int&amp;gt;,
   "executionStages" : {
      "stage" : &amp;lt;STAGE1&amp;gt;
      "nReturned" : &amp;lt;int&amp;gt;,
      "executionTimeMillisEstimate" : &amp;lt;int&amp;gt;,
      "works" : &amp;lt;int&amp;gt;,
      "advanced" : &amp;lt;int&amp;gt;,
      "needTime" : &amp;lt;int&amp;gt;,
      "needYield" : &amp;lt;int&amp;gt;,
      "saveState" : &amp;lt;int&amp;gt;,
      "restoreState" : &amp;lt;int&amp;gt;,
      "isEOF" : &amp;lt;boolean&amp;gt;,
      ...
      "inputStage" : {
         "stage" : &amp;lt;STAGE2&amp;gt;,
         "nReturned" : &amp;lt;int&amp;gt;,
         "executionTimeMillisEstimate" : &amp;lt;int&amp;gt;,
         ...
         "inputStage" : {
            ...
         }
      }
   },
   "allPlansExecution" : [
      {
         "nReturned" : &amp;lt;int&amp;gt;,
         "executionTimeMillisEstimate" : &amp;lt;int&amp;gt;,
         "totalKeysExamined" : &amp;lt;int&amp;gt;,
         "totalDocsExamined" :&amp;lt;int&amp;gt;,
         "executionStages" : {
            "stage" : &amp;lt;STAGEA&amp;gt;,
            "nReturned" : &amp;lt;int&amp;gt;,
            "executionTimeMillisEstimate" : &amp;lt;int&amp;gt;,
            ...
            "inputStage" : {
               "stage" : &amp;lt;STAGEB&amp;gt;,
               ...
               "inputStage" : {
                 ...
               }
            }
         }
      },
      ...
   ]
}
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;


&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;executionStats.totalDocsExamined&lt;/code&gt; too large means your query need scan a lot of documents.&lt;/li&gt;
&lt;li&gt;When the &lt;code&gt;stage&lt;/code&gt; is &lt;code&gt;COLLSCAN&lt;/code&gt; means MongoDB scanning documents from the collection not the index. Scanning from the index is more quickly than from the collection.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;When we log all explain-results on the console. There are too much information, so that we can't find we want.&lt;/p&gt;
&lt;h2&gt;
  
  
  A &lt;a href="https://mongoosejs.com/"&gt;Mongoose&lt;/a&gt; plugin to show query plans when the query is slow.
&lt;/h2&gt;

&lt;p&gt;You can set your own when to show the explain result.&lt;/p&gt;


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--vJ70wriM--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://practicaldev-herokuapp-com.freetls.fastly.net/assets/github-logo-ba8488d21cd8ee1fee097b8410db9deaa41d0ca30b004c0c63de0a479114156f.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/kelp404"&gt;
        kelp404
      &lt;/a&gt; / &lt;a href="https://github.com/kelp404/mongoose-profiler"&gt;
        mongoose-profiler
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      A performance tuning tool for Mongoose. Show explain results when the query is slow.
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;h1&gt;
mongoose-profiler&lt;/h1&gt;
&lt;p&gt;&lt;a href="https://www.npmjs.com/package/mongoose-profiler" rel="nofollow"&gt;&lt;img src="https://camo.githubusercontent.com/ee6d076f258cc94ff18684472e0764f3ef676440/68747470733a2f2f62616467652e667572792e696f2f6a732f6d6f6e676f6f73652d70726f66696c65722e737667" alt="npm version"&gt;&lt;/a&gt;
&lt;a href="https://lgtm.com/projects/g/kelp404/mongoose-profiler/context:javascript" rel="nofollow"&gt;&lt;img src="https://camo.githubusercontent.com/1f6dd9cf4aa5a476e8181e37cd51f87568ee7bec/68747470733a2f2f696d672e736869656c64732e696f2f6c67746d2f67726164652f6a6176617363726970742f672f6b656c703430342f6d6f6e676f6f73652d70726f66696c65722e7376673f6c6f676f3d6c67746d266c6f676f57696474683d3138" alt="Language grade: JavaScript"&gt;&lt;/a&gt;
&lt;a href="https://coveralls.io/github/kelp404/mongoose-profiler?branch=master" rel="nofollow"&gt;&lt;img src="https://camo.githubusercontent.com/a6b45097f870ee602816ce2d9f473b18f5832a87/68747470733a2f2f636f766572616c6c732e696f2f7265706f732f6769746875622f6b656c703430342f6d6f6e676f6f73652d70726f66696c65722f62616467652e7376673f6272616e63683d6d61737465722661" alt="Coverage Status"&gt;&lt;/a&gt;
&lt;a href="https://github.com/kelp404/mongoose-profiler/actions"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--2KSjU89x--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://github.com/kelp404/mongoose-profiler/workflows/test%2520and%2520upload%2520coveralls/badge.svg" alt="Actions Status"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;This is a &lt;a href="https://mongoosejs.com" rel="nofollow"&gt;mongoose&lt;/a&gt; plugin for tuning performance.&lt;br&gt;
It will show the &lt;a href="https://docs.mongodb.com/manual/reference/explain-results/" rel="nofollow"&gt;explain results&lt;/a&gt; on the console when the query is slow. Such as mongodb scans all documents in the collection without index.&lt;br&gt;
&lt;strong&gt;Don't use it on production.&lt;/strong&gt;&lt;/p&gt;
&lt;h2&gt;
Installation&lt;/h2&gt;
&lt;div class="highlight highlight-source-shell"&gt;&lt;pre&gt;$ npm install mongoose-profiler --save-dev&lt;/pre&gt;&lt;/div&gt;
&lt;h2&gt;
Quick start&lt;/h2&gt;
&lt;div class="highlight highlight-source-js"&gt;&lt;pre&gt;&lt;span class="pl-k"&gt;const&lt;/span&gt; &lt;span class="pl-s1"&gt;mongooseProfiler&lt;/span&gt; &lt;span class="pl-c1"&gt;=&lt;/span&gt; &lt;span class="pl-en"&gt;require&lt;/span&gt;&lt;span class="pl-kos"&gt;(&lt;/span&gt;&lt;span class="pl-s"&gt;'mongoose-profiler'&lt;/span&gt;&lt;span class="pl-kos"&gt;)&lt;/span&gt;&lt;span class="pl-kos"&gt;;&lt;/span&gt;
&lt;span class="pl-s1"&gt;schema&lt;/span&gt;&lt;span class="pl-kos"&gt;.&lt;/span&gt;&lt;span class="pl-en"&gt;plugin&lt;/span&gt;&lt;span class="pl-kos"&gt;(&lt;/span&gt;&lt;span class="pl-s1"&gt;mongooseProfiler&lt;/span&gt;&lt;span class="pl-kos"&gt;(&lt;/span&gt;&lt;span class="pl-kos"&gt;)&lt;/span&gt;&lt;span class="pl-kos"&gt;)&lt;/span&gt;&lt;span class="pl-kos"&gt;;&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;When you execute this query without the index then you will get some messages on the console.&lt;/p&gt;
&lt;div class="highlight highlight-source-js"&gt;&lt;pre&gt;&lt;span class="pl-v"&gt;ProductModel&lt;/span&gt;
  &lt;span class="pl-kos"&gt;.&lt;/span&gt;&lt;span class="pl-en"&gt;where&lt;/span&gt;&lt;span class="pl-kos"&gt;(&lt;/span&gt;&lt;span class="pl-kos"&gt;{&lt;/span&gt;&lt;span class="pl-c1"&gt;state&lt;/span&gt;: &lt;span class="pl-s"&gt;'active'&lt;/span&gt;&lt;span class="pl-kos"&gt;}&lt;/span&gt;&lt;span class="pl-kos"&gt;)&lt;/span&gt;
  &lt;span class="pl-kos"&gt;.&lt;/span&gt;&lt;span class="pl-en"&gt;where&lt;/span&gt;&lt;span class="pl-kos"&gt;(&lt;/span&gt;&lt;span class="pl-kos"&gt;{&lt;/span&gt;&lt;span class="pl-c1"&gt;owner&lt;/span&gt;: &lt;span class="pl-kos"&gt;{&lt;/span&gt;&lt;span class="pl-c1"&gt;$in&lt;/span&gt;: &lt;span class="pl-kos"&gt;[&lt;/span&gt;&lt;span class="pl-s"&gt;'5c9d9428e7462d3d989cb69b'&lt;/span&gt;&lt;span class="pl-kos"&gt;,&lt;/span&gt; &lt;span class="pl-s"&gt;'5c9d95acea5c9b4036d97c88'&lt;/span&gt;&lt;span class="pl-kos"&gt;]&lt;/span&gt;&lt;span class="pl-kos"&gt;}&lt;/span&gt;&lt;span class="pl-kos"&gt;}&lt;/span&gt;&lt;span class="pl-kos"&gt;)&lt;/span&gt;
  &lt;span class="pl-kos"&gt;.&lt;/span&gt;&lt;span class="pl-en"&gt;limit&lt;/span&gt;&lt;span class="pl-kos"&gt;(&lt;/span&gt;&lt;span class="pl-c1"&gt;100&lt;/span&gt;&lt;span class="pl-kos"&gt;)&lt;/span&gt;&lt;span class="pl-kos"&gt;;&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;pre&gt;&lt;code&gt;Mongoose:      64ms Products.find({ state: 'active', owner: { '$in': [ ObjectId("5c9d9428e7462d3d989cb69b"), ObjectId("5c9d95acea5c9b4036d97c88") ] } }, { skip: 0, limit: 100 })
[ { queryPlanner
     { plannerVersion: 1
       namespace: 'database.Products'
       indexFilterSet: false,
       parsedQuery:
        { '$and':
           [ { state:&lt;/code&gt;&lt;/pre&gt;…&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/kelp404/mongoose-profiler"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;



&lt;div class="highlight"&gt;&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;mongooseProfiler&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;require&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;mongoose-profiler&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="nx"&gt;schema&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;plugin&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;mongooseProfiler&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
  &lt;span class="na"&gt;isAlwaysShowQuery&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="na"&gt;duration&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;1000&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;          &lt;span class="c1"&gt;// Show query plans when it took more than this time (ms).&lt;/span&gt;
  &lt;span class="na"&gt;totalDocsExamined&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;1000&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="c1"&gt;// Show query plans when "totalDocsExamined" more than this value.&lt;/span&gt;
  &lt;span class="na"&gt;level&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;COLLSCAN&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;        &lt;span class="c1"&gt;// Show query plans when the stage is "COLLSCAN".&lt;/span&gt;
&lt;span class="p"&gt;}));&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



</description>
      <category>webdev</category>
      <category>node</category>
      <category>mongodb</category>
      <category>mongoose</category>
    </item>
    <item>
      <title>Build a React SPA without Redux.</title>
      <dc:creator>Kelp</dc:creator>
      <pubDate>Fri, 18 Jan 2019 04:23:26 +0000</pubDate>
      <link>https://forem.com/kelp404/build-a-react-spa-without-redux-4b6g</link>
      <guid>https://forem.com/kelp404/build-a-react-spa-without-redux-4b6g</guid>
      <description>&lt;h2&gt;
  
  
  We need two elements to render a page on the client.
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Template&lt;/strong&gt;. The React component.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Data&lt;/strong&gt;. We fetch data from the backend.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The client-side app fetch data from the backend, then render it on the browser DOM.&lt;br&gt;
It is really simple work. But what we do on projects. We use &lt;a href="https://github.com/facebook/flux" rel="noopener noreferrer"&gt;flux&lt;/a&gt;, &lt;a href="https://github.com/reduxjs/redux" rel="noopener noreferrer"&gt;redux&lt;/a&gt;, &lt;a href="https://github.com/reduxjs/redux-thunk" rel="noopener noreferrer"&gt;redux-thunk&lt;/a&gt;, &lt;a href="https://github.com/redux-saga/redux-saga" rel="noopener noreferrer"&gt;redux-saga&lt;/a&gt;...&lt;/p&gt;

&lt;p&gt;I have used redux, but I think redux takes too much time to build actions and reducers.&lt;br&gt;
We just want a client-side router. We define the page of routes with the component and that how to fetch data.&lt;/p&gt;

&lt;p&gt;I build &lt;a href="https://github.com/kelp404/capybara-router" rel="noopener noreferrer"&gt;capybara router&lt;/a&gt;. It is a react router without flux and redux.&lt;br&gt;
It provides a simple way to build a frontend app of SPA.&lt;/p&gt;


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev.to%2Fassets%2Fgithub-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/kelp404" rel="noopener noreferrer"&gt;
        kelp404
      &lt;/a&gt; / &lt;a href="https://github.com/kelp404/capybara-router" rel="noopener noreferrer"&gt;
        capybara-router
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      Unfancy react router without flux and redux.
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;capybara-router&lt;/h1&gt;
&lt;/div&gt;
&lt;p&gt;&lt;a href="https://www.npmjs.com/package/capybara-router" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/bc36a2562eb7c57c85b3e485a6c44d315d9deb428e90a5f6077da74ef6bf7c6e/68747470733a2f2f62616467652e667572792e696f2f6a732f63617079626172612d726f757465722e737667" alt="npm version"&gt;&lt;/a&gt;
&lt;a href="https://coveralls.io/github/kelp404/capybara-router" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/ba77730297637a544af3efe26aee45183102f78d020b200dc24ac48ed287ce6b/68747470733a2f2f636f766572616c6c732e696f2f7265706f732f6769746875622f6b656c703430342f63617079626172612d726f757465722f62616467652e737667" alt="Coverage Status"&gt;&lt;/a&gt;
&lt;a href="https://github.com/kelp404/capybara-router/actions" rel="noopener noreferrer"&gt;&lt;img src="https://github.com/kelp404/capybara-router/workflows/test/badge.svg" alt="Actions Status"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;This is a react router without flux and redux.&lt;br&gt;
We just want a simple way to build a Single Page Application.&lt;br&gt;
Define rules that include the component and how to fetch data of the each page in a router.&lt;/p&gt;
&lt;p&gt;&lt;a rel="noopener noreferrer" href="https://github.com/kelp404/capybara-router_capybara.jpg"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fgithub.com%2Fkelp404%2Fcapybara-router_capybara.jpg" height="400px"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Installation&lt;/h2&gt;
&lt;/div&gt;
&lt;div class="highlight highlight-source-shell notranslate position-relative overflow-auto js-code-highlight"&gt;
&lt;pre&gt;npm install capybara-router --save&lt;/pre&gt;

&lt;/div&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Live demo&lt;/h2&gt;
&lt;/div&gt;
&lt;p&gt;&lt;a href="https://kelp404.github.io/capybara-router/" rel="nofollow noopener noreferrer"&gt;https://kelp404.github.io/capybara-router/&lt;/a&gt;&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Example&lt;/h2&gt;

&lt;/div&gt;
&lt;p&gt;&lt;a href="https://github.com/kelp404/capybara-router/example" rel="noopener noreferrer"&gt;/example&lt;/a&gt;&lt;/p&gt;
&lt;div class="highlight highlight-source-js notranslate position-relative overflow-auto js-code-highlight"&gt;
&lt;pre&gt;&lt;span class="pl-k"&gt;const&lt;/span&gt; &lt;span class="pl-v"&gt;React&lt;/span&gt; &lt;span class="pl-c1"&gt;=&lt;/span&gt; &lt;span class="pl-en"&gt;require&lt;/span&gt;&lt;span class="pl-kos"&gt;(&lt;/span&gt;&lt;span class="pl-s"&gt;'react'&lt;/span&gt;&lt;span class="pl-kos"&gt;)&lt;/span&gt;&lt;span class="pl-kos"&gt;;&lt;/span&gt;
&lt;span class="pl-k"&gt;const&lt;/span&gt; &lt;span class="pl-v"&gt;ReactDOM&lt;/span&gt; &lt;span class="pl-c1"&gt;=&lt;/span&gt; &lt;span class="pl-en"&gt;require&lt;/span&gt;&lt;span class="pl-kos"&gt;(&lt;/span&gt;&lt;span class="pl-s"&gt;'react-dom'&lt;/span&gt;&lt;span class="pl-kos"&gt;)&lt;/span&gt;&lt;span class="pl-kos"&gt;;&lt;/span&gt;
&lt;span class="pl-k"&gt;const&lt;/span&gt; &lt;span class="pl-kos"&gt;{&lt;/span&gt;Router&lt;span class="pl-kos"&gt;,&lt;/span&gt; RouterView&lt;span class="pl-kos"&gt;}&lt;/span&gt; &lt;span class="pl-c1"&gt;=&lt;/span&gt; &lt;span class="pl-en"&gt;require&lt;/span&gt;&lt;span class="pl-kos"&gt;(&lt;/span&gt;&lt;span class="pl-s"&gt;'capybara-router'&lt;/span&gt;&lt;span class="pl-kos"&gt;)&lt;/span&gt;&lt;span class="pl-kos"&gt;;&lt;/span&gt;
&lt;span class="pl-k"&gt;const&lt;/span&gt; &lt;span class="pl-s1"&gt;history&lt;/span&gt; &lt;span class="pl-c1"&gt;=&lt;/span&gt; &lt;span class="pl-en"&gt;require&lt;/span&gt;&lt;span class="pl-kos"&gt;(&lt;/span&gt;&lt;span class="pl-s"&gt;'history'&lt;/span&gt;&lt;span class="pl-kos"&gt;)&lt;/span&gt;&lt;span class="pl-kos"&gt;;&lt;/span&gt;
&lt;span class="pl-k"&gt;const&lt;/span&gt; &lt;span class="pl-s1"&gt;axios&lt;/span&gt; &lt;span class="pl-c1"&gt;=&lt;/span&gt; &lt;span class="pl-en"&gt;require&lt;/span&gt;&lt;span class="pl-kos"&gt;(&lt;/span&gt;&lt;span class="pl-s"&gt;'axios'&lt;/span&gt;&lt;span class="pl-kos"&gt;)&lt;/span&gt;&lt;span class="pl-kos"&gt;;&lt;/span&gt;
&lt;span class="pl-k"&gt;const&lt;/span&gt; &lt;span class="pl-v"&gt;ErrorPage&lt;/span&gt; &lt;span class="pl-c1"&gt;=&lt;/span&gt; &lt;span class="pl-s1"&gt;props&lt;/span&gt; &lt;span class="pl-c1"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="pl-kos"&gt;{&lt;/span&gt;
  &lt;span class="pl-k"&gt;return&lt;/span&gt; &lt;span class="pl-c1"&gt;&amp;lt;&lt;/span&gt;&lt;span class="pl-ent"&gt;h2&lt;/span&gt; &lt;span class="pl-c1"&gt;className&lt;/span&gt;&lt;span class="pl-c1"&gt;=&lt;/span&gt;&lt;span class="pl-s"&gt;"text-center"&lt;/span&gt;&lt;span class="pl-c1"&gt;&amp;gt;&lt;/span&gt;&lt;span class="pl-kos"&gt;{&lt;/span&gt;&lt;span class="pl-s"&gt;`&lt;span class="pl-s1"&gt;&lt;span class="pl-kos"&gt;${&lt;/span&gt;&lt;span class="pl-s1"&gt;props&lt;/span&gt;&lt;span class="pl-kos"&gt;.&lt;/span&gt;&lt;span class="pl-c1"&gt;error&lt;/span&gt;&lt;span class="pl-kos"&gt;}&lt;/span&gt;&lt;/span&gt;`&lt;/span&gt;&lt;span class="pl-kos"&gt;}&lt;/span&gt;&lt;span class="pl-c1"&gt;&amp;lt;&lt;/span&gt;&lt;span class="pl-c1"&gt;/&lt;/span&gt;&lt;span class="pl-ent"&gt;h2&lt;/span&gt;&lt;span class="pl-c1"&gt;&amp;gt;&lt;/span&gt;&lt;span class="pl-kos"&gt;;&lt;/span&gt;
&lt;span class="pl-kos"&gt;}&lt;/span&gt;&lt;span class="pl-kos"&gt;;&lt;/span&gt;
&lt;span class="pl-k"&gt;const&lt;/span&gt; &lt;span class="pl-v"&gt;Home&lt;/span&gt; &lt;span class="pl-c1"&gt;=&lt;/span&gt; &lt;span class="pl-s1"&gt;props&lt;/span&gt; &lt;span class="pl-c1"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="pl-kos"&gt;{&lt;/span&gt;
  &lt;span class="pl-smi"&gt;console&lt;/span&gt;&lt;span class="pl-kos"&gt;.&lt;/span&gt;&lt;span class="pl-en"&gt;log&lt;/span&gt;&lt;span class="pl-kos"&gt;(&lt;/span&gt;&lt;span class="pl-s1"&gt;props&lt;/span&gt;&lt;span class="pl-kos"&gt;.&lt;/span&gt;&lt;span class="pl-c1"&gt;data&lt;/span&gt;&lt;span class="pl-kos"&gt;)&lt;/span&gt;&lt;span class="pl-kos"&gt;;&lt;/span&gt;
  &lt;span class="pl-k"&gt;return&lt;/span&gt; &lt;span class="pl-c1"&gt;&amp;lt;&lt;/span&gt;&lt;span class="pl-ent"&gt;h2&lt;/span&gt;&lt;span class="pl-c1"&gt;&amp;gt;&lt;/span&gt;Home&lt;span class="pl-c1"&gt;&amp;lt;&lt;/span&gt;&lt;span class="pl-c1"&gt;/&lt;/span&gt;&lt;span class="pl-ent"&gt;h2&lt;/span&gt;&lt;span class="pl-c1"&gt;&amp;gt;&lt;/span&gt;&lt;span class="pl-kos"&gt;;&lt;/span&gt;
&lt;span class="pl-kos"&gt;}&lt;/span&gt;&lt;span class="pl-kos"&gt;;&lt;/span&gt;&lt;/pre&gt;…
&lt;/div&gt;
&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/kelp404/capybara-router" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;


&lt;h3&gt;
  
  
  Live demo of SPA with capybara router.
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href="https://kelp404.github.io/capybara-router/" rel="noopener noreferrer"&gt;https://kelp404.github.io/capybara-router/&lt;/a&gt;&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Simple example code of building SPA with capybara router.
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;React&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;require&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;react&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;ReactDOM&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;require&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;react-dom&lt;/span&gt;&lt;span class="dl"&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;Router&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;RouterView&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;require&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;capybara-router&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;history&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;require&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;history&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;axios&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;require&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;axios&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;ErrorPage&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;props&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;h2&lt;/span&gt; &lt;span class="nx"&gt;className&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;text-center&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="s2"&gt;`&lt;/span&gt;&lt;span class="p"&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;props&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;error&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&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;/h2&amp;gt;&lt;/span&gt;&lt;span class="err"&gt;;
&lt;/span&gt;&lt;span class="p"&gt;};&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;Home&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;props&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;h2&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;&lt;span class="nx"&gt;Home&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="sr"&gt;/h2&amp;gt;&lt;/span&gt;&lt;span class="err"&gt;;
&lt;/span&gt;&lt;span class="p"&gt;};&lt;/span&gt;

&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;router&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;Router&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
  &lt;span class="na"&gt;history&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;history&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;createBrowserHistory&lt;/span&gt;&lt;span class="p"&gt;(),&lt;/span&gt;
  &lt;span class="na"&gt;routes&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="na"&gt;name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;web&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="na"&gt;uri&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;/&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="na"&gt;onEnter&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;props&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="nb"&gt;document&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;title&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Home&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="na"&gt;resolve&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="na"&gt;data&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;params&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
          &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nf"&gt;axios&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
            &lt;span class="na"&gt;method&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;get&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
            &lt;span class="na"&gt;url&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;`/data/&lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;params&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;id&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;.json`&lt;/span&gt;
          &lt;span class="p"&gt;}).&lt;/span&gt;&lt;span class="nf"&gt;then&lt;/span&gt;&lt;span class="p"&gt;((&lt;/span&gt;&lt;span class="nx"&gt;response&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;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;response&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;data&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;span class="na"&gt;component&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;Home&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
  &lt;span class="p"&gt;],&lt;/span&gt;
  &lt;span class="na"&gt;errorComponent&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;ErrorPage&lt;/span&gt;
&lt;span class="p"&gt;});&lt;/span&gt;
&lt;span class="nx"&gt;router&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;start&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;

&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;element&lt;/span&gt; &lt;span class="o"&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="nx"&gt;RouterView&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;p&lt;/span&gt; &lt;span class="nx"&gt;className&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;text-center text-muted h3&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt; &lt;span class="nx"&gt;style&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="na"&gt;padding&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;20px 0&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;gt;&lt;/span&gt;
      &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;i&lt;/span&gt; &lt;span class="nx"&gt;className&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;fa fa-spinner fa-pulse fa-fw&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&amp;lt;&lt;/span&gt;&lt;span class="sr"&gt;/i&amp;gt; Loading..&lt;/span&gt;&lt;span class="err"&gt;.
&lt;/span&gt;    &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="sr"&gt;/p&lt;/span&gt;&lt;span class="err"&gt;&amp;gt;
&lt;/span&gt;  &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="sr"&gt;/RouterView&lt;/span&gt;&lt;span class="err"&gt;&amp;gt;
&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="nx"&gt;ReactDOM&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;render&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
  &lt;span class="nx"&gt;element&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="nb"&gt;document&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;getElementById&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;root&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;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://github.com/kelp404/capybara-router/tree/master/example" rel="noopener noreferrer"&gt;more details example&lt;/a&gt;&lt;/p&gt;

</description>
      <category>react</category>
      <category>redux</category>
      <category>javascript</category>
      <category>webdev</category>
    </item>
  </channel>
</rss>
