-
Notifications
You must be signed in to change notification settings - Fork 21
/
Node.js Certification Study Guide by Hey Node.html
26 lines (23 loc) · 85 KB
/
Node.js Certification Study Guide by Hey Node.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
<!DOCTYPE html>
<!-- saved from url=(0127)https://webcache.googleusercontent.com/search?q=cache:zl4gUG2IUgwJ:https://www.nodecertification.com/+&cd=1&hl=es&ct=clnk&gl=es -->
<html lang="en" class=""><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><!--<base href="https://www.nodecertification.com/">--><base href="."><style>body{margin-left:0;margin-right:0;margin-top:0}#bN015htcoyT__google-cache-hdr{background:#f5f5f5;font:13px arial,sans-serif;text-align:left;color:#202020;border:0;margin:0;border-bottom:1px solid #cecece;line-height:16px;padding:16px 28px 24px 28px}#bN015htcoyT__google-cache-hdr *{display:inline;font:inherit;text-align:inherit;color:inherit;line-height:inherit;background:none;border:0;margin:0;padding:0;letter-spacing:0}#bN015htcoyT__google-cache-hdr a{text-decoration:none;color:#1a0dab}#bN015htcoyT__google-cache-hdr a:hover{text-decoration:underline}#bN015htcoyT__google-cache-hdr a:visited{color:#609}#bN015htcoyT__google-cache-hdr div{display:block;margin-top:4px}#bN015htcoyT__google-cache-hdr b{font-weight:bold;display:inline-block;direction:ltr}</style></head><body><div id="bN015htcoyT__google-cache-hdr"><div><span>Esta es la versión en caché de <a href="https://www.nodecertification.com/">https://www.nodecertification.com/</a> de Google.</span> <span>Se trata de una captura de pantalla de la página tal como esta se mostraba el 16 Mar 2020 13:02:27 GMT.</span> <span>Es posible que la <a href="https://www.nodecertification.com/">página</a> haya sufrido modificaciones durante este tiempo.</span> <a href="http://support.google.com/websearch/bin/answer.py?hl=es&p=cached&answer=1687222"><span>Más información</span>.</a></div><div><span style="display:inline-block;margin-top:8px;margin-right:104px;white-space:nowrap"><span style="margin-right:28px"><span style="font-weight:bold">Versión completa</span></span><span style="margin-right:28px"><a href="http://webcache.googleusercontent.com/search?q=cache:zl4gUG2IUgwJ:https://www.nodecertification.com/&hl=es&gl=es&strip=1&vwsrc=0"><span>Versión de solo texto</span></a></span><span style="margin-right:28px"><a href="http://webcache.googleusercontent.com/search?q=cache:zl4gUG2IUgwJ:https://www.nodecertification.com/&hl=es&gl=es&strip=0&vwsrc=1"><span>Ver origen</span></a></span></span></div><span style="display:inline-block;margin-top:8px;color:#717171"><span>Sugerencia: para encontrar rápidamente tu término de búsqueda en esta página, pulsa <b>Ctrl+F</b> o <b>⌘-F</b> (Mac) y utiliza la barra de búsqueda.</span></span></div><div style="position:relative;"><meta http-equiv="x-ua-compatible" content="ie=edge"><meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"><style data-href="/styles.005b2eef80105312b585.css">@font-face{font-family:BW Surco;font-style:normal;font-display:swap;font-weight:400;src:local("BW Surco"),url(/static/396740_0_0-6b21ef3abaf0f53813b3ec4e8b0800a8.woff2) format("woff2"),url(/static/396740_0_0-0fcfdb9d191e6cd98daca3aaf4d48da6.woff) format("woff")}</style><meta name="generator" content="Gatsby 2.18.8"><title data-react-helmet="true">Node.js Certification Study Guide by Hey Node</title><meta data-react-helmet="true" name="description" content="Resources to help you prepare for the OpenJS Foundation Node.js Application Developer and Node.js Services Developer certification exams."><meta data-react-helmet="true" property="og:title" content="Node.js Certification Study Guide by Hey Node"><meta data-react-helmet="true" property="og:description" content="Resources to help you prepare for the OpenJS Foundation Node.js Application Developer and Node.js Services Developer certification exams."><meta data-react-helmet="true" property="og:image" content="https://www.nodecertification.com/static/homepage-cover-f679aba205ee88051b5de4a5a19e372f.png"><meta data-react-helmet="true" property="og:type" content="website"><meta data-react-helmet="true" name="twitter:card" content="summary_large_image"><meta data-react-helmet="true" name="twitter:creator" content="@heynode"><meta data-react-helmet="true" name="twitter:title" content="Node.js Certification Study Guide by Hey Node"><meta data-react-helmet="true" name="twitter:description" content="Resources to help you prepare for the OpenJS Foundation Node.js Application Developer and Node.js Services Developer certification exams."><meta data-react-helmet="true" name="twitter:image" content="https://www.nodecertification.com/static/homepage-cover-f679aba205ee88051b5de4a5a19e372f.png"><meta data-react-helmet="true" name="twitter:image:alt" content="Text says go further with heynode.com node.js certification study guide."><script type="text/javascript" async="" src="./Node.js Certification Study Guide by Hey Node_files/analytics.js"></script><script async="" src="./Node.js Certification Study Guide by Hey Node_files/gtm.js"></script><script>window.dataLayer = window.dataLayer || [];</script><script>function gtag(){dataLayer.push(arguments);}
gtag('js', new Date());</script><style>.async-hide { opacity: 0 !important }</style><script>(function(a,s,y,n,c,h,i,d,e){s.className+=' '+y;h.start=1*new Date;
h.end=i=function(){s.className=s.className.replace(RegExp(' ?'+y),'')};
(a[n]=a[n]||[]).hide=h;setTimeout(function(){i();h.end=null},c);h.timeout=c;
})(window,document.documentElement,'async-hide','dataLayer',500,{'GTM-5CHB953':true});</script><script>(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':
new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],
j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src=
'https://www.googletagmanager.com/gtm.js?id='+i+dl+'';f.parentNode.insertBefore(j,f);
})(window,document,'script','dataLayer', 'GTM-5CHB953');</script><link rel="icon" href="https://www.nodecertification.com/icons/icon-48x48.png?v=7e50c251d85fd3f3001589ee905dc113"><link rel="manifest" href="https://www.nodecertification.com/manifest.webmanifest"><meta name="theme-color" content="#663399"><link rel="apple-touch-icon" sizes="48x48" href="https://www.nodecertification.com/icons/icon-48x48.png?v=7e50c251d85fd3f3001589ee905dc113"><link rel="apple-touch-icon" sizes="72x72" href="https://www.nodecertification.com/icons/icon-72x72.png?v=7e50c251d85fd3f3001589ee905dc113"><link rel="apple-touch-icon" sizes="96x96" href="https://www.nodecertification.com/icons/icon-96x96.png?v=7e50c251d85fd3f3001589ee905dc113"><link rel="apple-touch-icon" sizes="144x144" href="https://www.nodecertification.com/icons/icon-144x144.png?v=7e50c251d85fd3f3001589ee905dc113"><link rel="apple-touch-icon" sizes="192x192" href="https://www.nodecertification.com/icons/icon-192x192.png?v=7e50c251d85fd3f3001589ee905dc113"><link rel="apple-touch-icon" sizes="256x256" href="https://www.nodecertification.com/icons/icon-256x256.png?v=7e50c251d85fd3f3001589ee905dc113"><link rel="apple-touch-icon" sizes="384x384" href="https://www.nodecertification.com/icons/icon-384x384.png?v=7e50c251d85fd3f3001589ee905dc113"><link rel="apple-touch-icon" sizes="512x512" href="https://www.nodecertification.com/icons/icon-512x512.png?v=7e50c251d85fd3f3001589ee905dc113"><link as="script" rel="preload" href="https://www.nodecertification.com/component---src-pages-index-jsx-61547c2c3e6c5a4048c5.js"><link as="script" rel="preload" href="https://www.nodecertification.com/commons-032a235d46e80408f9cc.js"><link as="script" rel="preload" href="https://www.nodecertification.com/app-abf37dd90922f7fee0a4.js"><link as="script" rel="preload" href="https://www.nodecertification.com/styles-9ade9d12e2792682a70f.js"><link as="script" rel="preload" href="https://www.nodecertification.com/webpack-runtime-83efacb6ca5f37530c17.js"><link as="fetch" rel="preload" href="https://www.nodecertification.com/page-data/index/page-data.json" crossorigin="anonymous"><script>(function() { try {
var mode = localStorage.getItem('theme-ui-color-mode');
if (!mode) return
document.body.classList.add('theme-ui-' + mode);
} catch (e) {} })();</script><noscript><iframe
src="https://www.googletagmanager.com/ns.html?id=GTM-5CHB953"
height="0"
width="0"
style="display: none; visibility: hidden"
></iframe></noscript><noscript id="gatsby-noscript">This app works best with JavaScript enabled.</noscript><div id="___gatsby"><div style="outline:none" tabindex="-1" role="group" id="gatsby-focus-wrapper"><style data-emotion-css="rhj2ip">body{background-color:var(--theme-ui-colors-background,#F7FAFF);font-family:BW Surco,sans-serif;font-size:18px;line-height:1.5;margin:0;padding:0;}a{color:var(--theme-ui-colors-primary,#4C8BFF);}a:hover{color:var(--theme-ui-colors-secondary,#FE6469);}</style><div><style data-emotion-css="mcxhf0">.css-mcxhf0{background-color:white;box-shadow:0 .0625rem 1.25rem 0 rgba(0,0,0,.03);margin:0 0 2em 0;}</style><header sitetitle="Node.js Certification Study Guide by Hey Node" class="css-mcxhf0"><style data-emotion-css="458mob">.css-458mob{-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:start;-webkit-justify-content:flex-start;-ms-flex-pack:start;justify-content:flex-start;max-width:768px;margin-left:auto;margin-right:auto;padding:0.625em 2em 1.25em;}</style><div class="css-458mob"><style data-emotion-css="a9ptvs">.css-a9ptvs{color:var(--theme-ui-colors-text,#191E28);display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex:1;-ms-flex:1;flex:1;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-pack:start;-webkit-justify-content:flex-start;-ms-flex-pack:start;justify-content:flex-start;padding:1em 1em 0.5em 0;text-align:left;-webkit-text-decoration:none;text-decoration:none;}</style><a href="https://heynode.com/" class="css-a9ptvs"><style data-emotion-css="1dk30lc">.css-1dk30lc{margin-right:1em;}</style><img alt="Hey Node logo" src="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxMTgiIGhlaWdodD0iMjciIHZpZXdCb3g9IjAgMCAxMTggMjciPgogIDxnIGZpbGw9Im5vbmUiIGZpbGwtcnVsZT0iZXZlbm9kZCI+CiAgICA8cGF0aCBmaWxsPSIjNjQ5N0ZFIiBkPSJNMjEuNjg5OTU1OCw3LjY3NjE5MzEgQzE5LjUzMTkxMjIsNy42NzYxOTMxIDE4LjA0MDM3MDEsOS44ODI3NDQ4MyAxOC4wNDAzNzAxLDExLjg0ODE1ODYgTDI1LjA3NzU4NzgsMTEuODQ4MTU4NiBDMjUuMDc3NTg3OCw5LjQxNTM2NTUyIDIzLjgxNjU2NSw3LjY3NjE5MzEgMjEuNjg5OTU1OCw3LjY3NjE5MzEgWiBNMjYuNzgzMjQ4NiwxNi40NjMyOTY2IEMyNy4zMzQwMzQ5LDE2LjQ2MzI5NjYgMjcuNjkxNjU4OCwxNi45MDEzNDgzIDI3LjY5MTY1ODgsMTcuNDYwOSBDMjcuNjkxNjU4OCwxOC40MzUyMjc2IDI1LjUyNzY5MjcsMjAuNjc0MzY1NSAyMi4yMzg5MTk5LDIwLjY3NDM2NTUgQzE3LjI3MjI3NjEsMjAuNjc0MzY1NSAxNS4yOTk2NTAxLDE3LjI0Njc2MjEgMTUuMjk5NjUwMSwxMy4xNzU4MTM4IEMxNS4yOTk2NTAxLDkuMjg3ODEzNzkgMTcuNjc2ODIzOCw1LjcwNzUyMDY5IDIxLjcxNjgzNDYsNS43MDc1MjA2OSBDMjUuMzkzMjk5LDUuNzA3NTIwNjkgMjcuNjAwNTQ0NCw4LjE5NjY0MTM4IDI3LjYwMDU0NDQsMTEuODI4MTQxNCBDMjcuNjAwNTQ0NCwxMi44NDg1NTUyIDI3LjM4MDk1ODgsMTMuNTc3MDg5NyAyNi40NjcwODE4LDEzLjU3NzA4OTcgTDE4LjA0MDM3MDEsMTMuNTc3MDg5NyBDMTguMDQwMzcwMSwxNi42Njk1MjA3IDE5LjY1NDQ2MSwxOC41NTM5MzQ1IDIyLjM4MTA1ODMsMTguNTUzOTM0NSBDMjQuNzY2NDMyMiwxOC41NTM5MzQ1IDI1LjkwMjYyODMsMTYuNDYzMjk2NiAyNi43ODMyNDg2LDE2LjQ2MzI5NjYgWiBNMTA1LjUyNTM3Myw3LjY3NjE5MzEgQzEwMy4zNjczMjksNy42NzYxOTMxIDEwMS44NzU3ODcsOS44ODI3NDQ4MyAxMDEuODc1Nzg3LDExLjg0ODE1ODYgTDEwOC45MTMwMDUsMTEuODQ4MTU4NiBDMTA4LjkxMzAwNSw5LjQxNTM2NTUyIDEwNy42NTE5ODIsNy42NzYxOTMxIDEwNS41MjUzNzMsNy42NzYxOTMxIFogTTExMC42MTgyMSwxNi40NjMyOTY2IEMxMTEuMTY5NDUyLDE2LjQ2MzI5NjYgMTExLjUyNzA3NiwxNi45MDEzNDgzIDExMS41MjcwNzYsMTcuNDYwOSBDMTExLjUyNzA3NiwxOC40MzUyMjc2IDEwOS4zNjMxMSwyMC42NzQzNjU1IDEwNi4wNzQzMzcsMjAuNjc0MzY1NSBDMTAxLjEwNzY5MywyMC42NzQzNjU1IDk5LjEzNTA2NywxNy4yNDY3NjIxIDk5LjEzNTA2NywxMy4xNzU4MTM4IEM5OS4xMzUwNjcsOS4yODc4MTM3OSAxMDEuNTEyMjQxLDUuNzA3NTIwNjkgMTA1LjU1MjI1MSw1LjcwNzUyMDY5IEMxMDkuMjI4NzE2LDUuNzA3NTIwNjkgMTExLjQzNTUwNiw4LjE5NjY0MTM4IDExMS40MzU1MDYsMTEuODI4MTQxNCBDMTExLjQzNTUwNiwxMi44NDg1NTUyIDExMS4yMTYzNzYsMTMuNTc3MDg5NyAxMTAuMzAyMDQzLDEzLjU3NzA4OTcgTDEwMS44NzU3ODcsMTMuNTc3MDg5NyBDMTAxLjg3NTc4NywxNi42Njk1MjA3IDEwMy40ODk4NzgsMTguNTUzOTM0NSAxMDYuMjE2NDc1LDE4LjU1MzkzNDUgQzEwOC42MDE4NDksMTguNTUzOTM0NSAxMDkuNzM4MDQ1LDE2LjQ2MzI5NjYgMTEwLjYxODIxLDE2LjQ2MzI5NjYgWiBNNDAuNzY0MzM3Myw1LjcwNzc1MzQ1IEM0Mi4wMDMwMzcsNS43MDc3NTM0NSA0Mi4yNTI2OTA0LDYuMjc5NDA4NjIgNDEuODM1ODQyMiw3LjM2MjIwMTcyIEM0MS4xNDA2Mzk2LDkuMTY3MDEyMDcgMzYuNzkzMTE3OSwyMC4xMTY5MDg2IDM2LjM1ODA0NjgsMjEuMTgwNjE1NSBDMzUuMjk3MDIwMSwyMy43NzQ5NDMxIDM0LjM0OTQzMDcsMjYuNTU2NDA4NiAzMC42Mzc0MzE2LDI2LjU1NjQwODYgQzI4Ljg0Nzk0NTYsMjYuNTU2NDA4NiAyNy45Njc3ODA5LDI2LjA3NjkyNTkgMjcuOTY3NzgwOSwyNS4yMDczMzk3IEMyNy45Njc3ODA5LDI0LjQ1Nzg1NjkgMjguNDAxMDI5NywyNC4wODMxMTU1IDI4Ljk2NTQ4MzEsMjQuMDgzMTE1NSBDMjkuNDc4OTEyNSwyNC4wODMxMTU1IDI5LjY0MDE4NSwyNC4yNzgxNjcyIDMwLjc0MDM5MDksMjQuMjc4MTY3MiBDMzIuNjc3NDgyMiwyNC4yNzgxNjcyIDMzLjI5NzA1OTgsMjEuOTkzNDA4NiAzNC4xNDY3MDEzLDE5Ljk2Nzk0MzEgQzMzLjQ2Njk4ODEsMTguMjk5NTI5MyAyOS40MTAxMjEyLDguMzQwMjUzNDUgMjguOTc4MjM5MSw3LjI4NDkyNTg2IEMyOC41NTI3MzUxLDYuMjQ1ODkxMzggMjkuMTY1NDc5MSw1LjcwNzc1MzQ1IDMwLjI0MTA4NDIsNS43MDc3NTM0NSBDMzEuMTAxMjAzNyw1LjcwNzc1MzQ1IDMxLjQ2OTMwNTgsNi4xNjc2ODQ0OCAzMS42ODkzNDY5LDYuNzYyNjE1NTIgQzMxLjg4NzA2NTEsNy4yOTcwMjkzMSAzNC4zOTA4ODc3LDE0LjAwOTc4NzkgMzUuNTQ4NDk1NywxNy4xMTMzOTE0IEwzNS41NTM1MDcsMTcuMTAzMTUgQzM1LjU1MzUwNywxNy4xMDMxNSAzOS40MTk0ODkzLDYuODEyODkxMzggMzkuNTU1NzA1Myw2LjQ1MzUxMjA3IEMzOS42OTE5MjEzLDYuMDkzNjY3MjQgMzkuOTE0Njk1OSw1LjcwNzc1MzQ1IDQwLjc2NDMzNzMsNS43MDc3NTM0NSBaIE03NC4zMjU4MTEsMTguNjA5MDUxNyBDNzcuMDM5NjUyMiwxOC42MDkwNTE3IDc4LjcxODQzNDMsMTYuMTE5IDc4LjcxODQzNDMsMTMuMTg5MDM0NSBDNzguNzE4NDM0MywxMC4yNTk1MzQ1IDc3LjAzOTY1MjIsNy43Njk5NDgyOCA3NC4zMjU4MTEsNy43Njk5NDgyOCBDNzEuNjEyNDI1Myw3Ljc2OTk0ODI4IDY5LjkzMzE4NzcsMTAuMjU5NTM0NSA2OS45MzMxODc3LDEzLjE4OTAzNDUgQzY5LjkzMzE4NzcsMTYuMTE5IDcxLjYxMjQyNTMsMTguNjA5MDUxNyA3NC4zMjU4MTEsMTguNjA5MDUxNyBaIE03NC4zMjU4MTEsNS43MDc3MDY5IEM3OC42NjQ2NzY5LDUuNzA3NzA2OSA4MS4zNTA3MjgyLDguOTE4Mzc5MzEgODEuMzUwNzI4MiwxMy4xODkwMzQ1IEM4MS4zNTA3MjgyLDE3LjQ2MDE1NTIgNzguNjY0Njc2OSwyMC42NzEyOTMxIDc0LjMyNTgxMSwyMC42NzEyOTMxIEM2OS45ODY5NDUxLDIwLjY3MTI5MzEgNjcuMzAxMzQ5NCwxNy40NjAxNTUyIDY3LjMwMTM0OTQsMTMuMTg5MDM0NSBDNjcuMzAxMzQ5NCw4LjkxODM3OTMxIDY5Ljk4Njk0NTEsNS43MDc3MDY5IDc0LjMyNTgxMSw1LjcwNzcwNjkgWiBNMTMuNjY3MTU0MSwxOC4zNDk0NzkzIEMxNC4xNzE5Mjc3LDE4LjM0OTQ3OTMgMTQuNTU1NTE5MiwxOC43NDE5MTAzIDE0LjU1NTUxOTIsMTkuNDIyNDk2NiBDMTQuNTU1NTE5MiwyMC4xMjc3NTUyIDE0LjA1MDI5LDIwLjY3NDI3MjQgMTIuOTE2MzcxOCwyMC42NzQyNzI0IEMxMC45NjM3OTExLDIwLjY3NDI3MjQgMTAuMDk1OTI2OCwxOS43ODMyNzI0IDEwLjA5NTkyNjgsMTguMjU0NTEzOCBDMTAuMDk1OTI2OCwxOC4yNTQ1MTM4IDEwLjEwNDU4MjYsMTEuMTU3MjM3OSAxMC4xMDQ1ODI2LDEwLjA2NjUzMSBDMTAuMTA0NTgyNiw4Ljk3NjI4OTY2IDkuMjgwNDUzMjMsNy44MzExMTcyNCA3LjYwNDQwNDU2LDcuODMxMTE3MjQgQzUuOTcyNTQ2MzYsNy44MzExMTcyNCAzLjgzODE5MjQ1LDkuMjUzMjcyNDEgMy4zOTk0NzY4MSw5LjY5NjQ0NDgzIEwzLjM5OTQ3NjgxLDE5LjYwMTcyMDcgQzMuMzk5NDc2ODEsMjAuMjk3MjAzNCAyLjgwNDUwMDAzLDIwLjY3NDI3MjQgMi4wNzA1NzM4NSwyMC42NzQyNzI0IEMxLjMzNjY0NzY3LDIwLjY3NDI3MjQgMC43NDE2NzA4OTgsMjAuMjk3MjAzNCAwLjc0MTY3MDg5OCwxOS42MDE3MjA3IEwwLjc0MTY3MDg5OCwzLjE3ODI3MjQxIEMwLjc0MTY3MDg5OCwxLjgxOTg5MzEgMi4zMDkyNjM4OWUtMTQsMS44MDk2NTE3MiAyLjMwOTI2Mzg5ZS0xNCwxLjAwNzU2NTUyIEMyLjMwOTI2Mzg5ZS0xNCwwLjQ1MTI3MjQxNCAwLjQ2NTU5NDM4NCwwLjAwMDE4NjIwNjg5NyAxLjI3MzMyMzE5LDAuMDAwMTg2MjA2ODk3IEMyLjcxNzQ4NTgxLDAuMDAwMTg2MjA2ODk3IDMuMzg4NTQzMDgsMS4wMzY0Mjc1OSAzLjM5ODU2NTY2LDIuMDg0MzA2OSBMMy4zOTk0NzY4MSwyLjA4NDMwNjkgTDMuMzk5NDc2ODEsNy44Mzc2MzQ0OCBDMy4zOTk0NzY4MSw3LjgzNzYzNDQ4IDUuNDYxMzk0NzksNS43MDc4OTMxIDguNDM1MzY3NTMsNS43MDc4OTMxIEMxMS41NTY5NDU1LDUuNzA3ODkzMSAxMi43NjIzODg1LDcuOTAxODc1ODYgMTIuNzYyMzg4NSwxMC4wNzU4NDE0IEwxMi43NjIzODg1LDE3LjQ0MjE4NjIgQzEyLjc2MjM4ODUsMTguMTM5MDY1NSAxMy4xNDkxNjksMTguMzQ5NDc5MyAxMy42NjcxNTQxLDE4LjM0OTQ3OTMgWiBNNjUuNTIzNjE3MSwxOC4zNDk0NzkzIEM2Ni4wMjgzOTA2LDE4LjM0OTQ3OTMgNjYuNDExOTgyMSwxOC43NDE5MTAzIDY2LjQxMTk4MjEsMTkuNDIyNDk2NiBDNjYuNDExOTgyMSwyMC4xMjc3NTUyIDY1LjkwNjc1MjksMjAuNjc0MjcyNCA2NC43NzI4MzQ3LDIwLjY3NDI3MjQgQzYyLjgyMDI1NCwyMC42NzQyNzI0IDYxLjk1MjM4OTcsMTkuNzgzMjcyNCA2MS45NTIzODk3LDE4LjI1NDUxMzggQzYxLjk1MjM4OTcsMTguMjU0NTEzOCA2MS45NjEwNDU1LDExLjE1NzIzNzkgNjEuOTYxMDQ1NSwxMC4wNjY1MzEgQzYxLjk2MTA0NTUsOC45NzYyODk2NiA2MS4xMzY5MTYyLDcuODMxMTE3MjQgNTkuNDYwODY3NSw3LjgzMTExNzI0IEM1Ny41ODU3MzM5LDcuODMxMTE3MjQgNTUuNjk0NjU1NCw5LjQwMjcwMzQ1IDU1LjI1NTkzOTcsOS44NDU4NzU4NiBMNTUuMjU1OTM5NywxOS42MDE3MjA3IEM1NS4yNTU5Mzk3LDIwLjI5NzIwMzQgNTQuNjYwOTYyOSwyMC42NzQyNzI0IDUzLjkyNzAzNjgsMjAuNjc0MjcyNCBDNTMuMTkzMTEwNiwyMC42NzQyNzI0IDUyLjU5ODEzMzgsMjAuMjk3MjAzNCA1Mi41OTgxMzM4LDE5LjYwMTcyMDcgTDUyLjU5ODEzMzgsOC44ODU1MTM3OSBDNTIuNTk4MTMzOCw3LjUyNzEzNDQ4IDUxLjg1NjQ2MjksNy41MTY0Mjc1OSA1MS44NTY0NjI5LDYuNzE0ODA2OSBDNTEuODU2NDYyOSw2LjE1ODUxMzc5IDUyLjMyMjA1NzMsNS43MDc4OTMxIDUzLjEyOTMzMDUsNS43MDc4OTMxIEM1NC41ODQ4ODI1LDUuNzA3ODkzMSA1NS4yMDM1NDksNy4wMzM2ODYyMSA1NS4yMDM1NDksNy44OTQ4OTMxIEw1NS4yNDg2NTA2LDcuODk0ODkzMSBDNTUuMjQ4NjUwNiw3Ljg5NDg5MzEgNTcuMzE3ODU3Nyw1LjcwNzg5MzEgNjAuMjkxODMwNSw1LjcwNzg5MzEgQzYzLjQxMzQwODUsNS43MDc4OTMxIDY0LjYxODg1MTUsNy45MDE4NzU4NiA2NC42MTg4NTE1LDEwLjA3NTg0MTQgTDY0LjYxODg1MTUsMTcuNDQyMTg2MiBDNjQuNjE4ODUxNSwxOC4xMzkwNjU1IDY1LjAwNTE3NjMsMTguMzQ5NDc5MyA2NS41MjM2MTcxLDE4LjM0OTQ3OTMgWiBNOTAuMTE5NTc0MywxOC42MDkwNTE3IEM5MS42MDEwOTM4LDE4LjYwOTA1MTcgOTMuMTIxNzkyNSwxNy43MTA2MDM0IDkzLjYwOTcwOTksMTcuMDg0OTQ4MyBMOTMuNjA5NzA5OSw4LjYzODEzNzkzIEM5My42MDk3MDk5LDguNjM4MTM3OTMgOTIuNTIzMTcxMiw3Ljc2OTk0ODI4IDkwLjE3ODM0MzEsNy43Njk5NDgyOCBDODcuNDY0NTAxOSw3Ljc2OTk0ODI4IDg1Ljc4NTI2NDIsMTAuNDA5NDMxIDg1Ljc4NTI2NDIsMTMuMzM5Mzk2NiBDODUuNzg1MjY0MiwxNi41NTU2NTUyIDg3LjUwMzIyNTUsMTguNjA5MDUxNyA5MC4xMTk1NzQzLDE4LjYwOTA1MTcgWiBNOTcuMTgwOTM3MywxOC4zNDkyOTMxIEM5Ny42ODU3MTA5LDE4LjM0OTI5MzEgOTguMDY5MzAyMywxOC43NDE3MjQxIDk4LjA2OTMwMjMsMTkuNDIyMzEwMyBDOTguMDY5MzAyMywyMC4xMjgwMzQ1IDk3LjU2NDA3MzIsMjAuNjc0NTUxNyA5Ni40MzAxNTUsMjAuNjc0NTUxNyBDOTQuNDc3NTc0MiwyMC42NzQ1NTE3IDkzLjc0NDEwMzYsMTkuNDY4ODYyMSA5My43NDQxMDM2LDE5LjAyODAxNzIgQzkzLjc0NDEwMzYsMTkuMDI4MDE3MiA5Mi40MTUyMDA3LDIwLjY3MTI5MzEgODkuNDMzOTM4OCwyMC42NzEyOTMxIEM4NS4zMzg4MDM4LDIwLjY3MTI5MzEgODMuMTUzNDI1OSwxNy40NDAxMzc5IDgzLjE1MzQyNTksMTMuMzk4OTgyOCBDODMuMTUzNDI1OSw5LjEyNzg2MjA3IDg1LjgzOTAyMTcsNS43MDc3MDY5IDkwLjE3ODM0MzEsNS43MDc3MDY5IEM5MS43MTgxNzU4LDUuNzA3NzA2OSA5My4wMDQyNTUsNi4xMTEzMTAzNCA5My42MDk3MDk5LDYuNDcyNTUxNzIgTDkzLjYwOTcwOTksMy4xNzg1NTE3MiBDOTMuNjA5NzA5OSwxLjgyMDE3MjQxIDkyLjg2ODAzOSwxLjgwOTQ2NTUyIDkyLjg2ODAzOSwxLjAwNzM3OTMxIEM5Mi44NjgwMzksMC40NTEwODYyMDcgOTMuMzM0MDg5LDEuNDIxMDg1NDdlLTE0IDk0LjE0MDkwNjcsMS40MjEwODU0N2UtMTQgQzk1LjU4NTUyNDgsMS40MjEwODU0N2UtMTQgOTYuMjU2NTgyMSwxLjAzNjI0MTM4IDk2LjI2NjYwNDcsMi4wODQxMjA2OSBMOTYuMjY3NTE1OCwyLjA4NDEyMDY5IEw5Ni4yNjc1MTU4LDE3LjQ0MiBDOTYuMjY3NTE1OCwxOC4xMzg4NzkzIDk2LjY2MjQ5NjYsMTguMzQ5MjkzMSA5Ny4xODA5MzczLDE4LjM0OTI5MzEgWiIvPgogICAgPHBhdGggZmlsbD0iI0ZFNjQ2OSIgZD0iTTQ5Ljc4NzMyNDgsMS4yNzMxNDMxIEM1MC4xOTc3OTUsMS41NzE1Mzk2NiA1MC4zMTA3NzY4LDIuMTM5MDA1MTcgNTAuMDUzODM0MywyLjU4MTI0NjU1IEM0OC4zNjgyMTg2LDUuNDc3Njk0ODMgNDcuMzU4MjE1OSw5LjE2OTcxMjA3IDQ3LjM1ODIxNTksMTMuMTg4OTg3OSBDNDcuMzU4MjE1OSwxNy4yMTA1OTE0IDQ4LjM2ODIxODYsMjAuOTAyNjA4NiA1MC4wNTI5MjMyLDIzLjc5NjcyOTMgQzUwLjMxMDMyMTIsMjQuMjM4OTcwNyA1MC4xOTc3OTUsMjQuODA3MzY3MiA0OS43ODczMjQ4LDI1LjEwNDgzMjggQzQ5LjM3MzIxLDI1LjQwNTU1NjkgNDguNzk3MzY3MywyNS4zMjkyMTIxIDQ4LjQ4MDc0NDksMjQuOTIzNzQ2NiBDNDYuMDYzOTM2NCwyMS44Mjg1MjI0IDQ0LjU5MTk4MzksMTcuNzA4Njk0OCA0NC41OTE5ODM5LDEzLjE4ODk4NzkgQzQ0LjU5MTk4MzksOC42NjY5NTM0NSA0Ni4wNjM5MzY0LDQuNTQ2MTk0ODMgNDguNDgwNzQ0OSwxLjQ1NDIyOTMxIEM0OC43OTczNjczLDEuMDQ4NzYzNzkgNDkuMzcyNzU0NSwwLjk3MjQxODk2NiA0OS43ODY4NjkyLDEuMjczMTQzMSBMNDkuNzg3MzI0OCwxLjI3MzE0MzEgWiBNMTEzLjgyOTQyMiwxLjQ1NDA4OTY2IEMxMTYuMjQ1Nzc1LDQuNTQ2NTIwNjkgMTE3LjcxODE4Myw4LjY2NjgxMzc5IDExNy43MTgxODMsMTMuMTg4ODQ4MyBDMTE3LjcxODE4MywxNy43MDg1NTUyIDExNi4yNDU3NzUsMjEuODI4ODQ4MyAxMTMuODI4OTY3LDI0LjkyMzYwNjkgQzExMy41MTIzNDQsMjUuMzI5MDcyNCAxMTIuOTM2OTU3LDI1LjQwNTQxNzIgMTEyLjUyMjg0MiwyNS4xMDUxNTg2IEMxMTIuMTExOTE3LDI0LjgwNzIyNzYgMTExLjk5ODkzNSwyNC4yMzg4MzEgMTEyLjI1Njc4OCwyMy43OTY1ODk3IEMxMTMuOTQxOTQ5LDIwLjkwMjQ2OSAxMTQuOTUxNDk2LDE3LjIxMDkxNzIgMTE0Ljk1MTQ5NiwxMy4xODg4NDgzIEMxMTQuOTUxNDk2LDkuMTY5NTcyNDEgMTEzLjk0MTk0OSw1LjQ3ODAyMDY5IDExMi4yNTYzMzMsMi41ODExMDY5IEMxMTEuOTk4OTM1LDIuMTM5MzMxMDMgMTEyLjExMTkxNywxLjU3MTQgMTEyLjUyMjM4NywxLjI3MzAwMzQ1IEwxMTIuNTIzMjk4LDEuMjczMDAzNDUgQzExMi45MzY5NTcsMC45NzI3NDQ4MjggMTEzLjUxMjM0NCwxLjA0ODYyNDE0IDExMy44Mjk0MjIsMS40NTQwODk2NiBaIi8+CiAgPC9nPgo8L3N2Zz4K" class="css-1dk30lc"><span>Expert Node.js training anytime, anywhere.</span></a><style data-emotion-css="1vr82c2">.css-1vr82c2{display:block;-webkit-flex:0 0 auto;-ms-flex:0 0 auto;flex:0 0 auto;margin:0 0 0 0.5em;height:25px;width:25px;max-width:25px;}.css-1vr82c2 svg{fill:#8c8f94;height:100%;width:100%;-webkit-transition:fill .4s cubic-bezier(.55,.085,0,.99);transition:fill .4s cubic-bezier(.55,.085,0,.99);}.css-1vr82c2:hover svg{fill:var(--theme-ui-colors-primary,#4C8BFF);}</style><a href="https://twitter.com/heynode" title="Follow @heynode on Twitter" class="css-1vr82c2"><svg viewBox="-293 387.2 23.2 18.8"><path d="M-269.8 389.4c-.9.4-1.8.6-2.7.7 1-.6 1.7-1.5 2.1-2.6-.9.5-1.9.9-3 1.2-1-.9-2.2-1.5-3.6-1.5-2.6 0-4.8 2.1-4.8 4.8 0 .4 0 .7.1 1.1-3.8-.3-7.3-2.2-9.7-5-.4.7-.6 1.5-.6 2.4 0 1.6.8 3.1 2.1 4-.8-.1-1.5-.3-2.2-.7v.1c0 2.3 1.6 4.2 3.8 4.7-.4.1-.8.2-1.3.2-.3 0-.6 0-.9-.1.7 1.8 2.5 3.2 4.5 3.2-1.6 1.3-3.7 2-5.9 2-.4 0-.8 0-1.1-.1 2.1 1.3 4.6 2.1 7.3 2.1 8.7 0 13.5-7.2 13.5-13.5v-.6c.9-.6 1.7-1.4 2.4-2.4z"></path></svg></a></div></header><main><style data-emotion-css="ejs8mf">.css-ejs8mf{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;max-width:768px;margin-left:auto;margin-right:auto;padding-left:16px;padding-right:16px;}</style><div class="css-ejs8mf"><style data-emotion-css="gg7yqs">.css-gg7yqs{color:var(--theme-ui-colors-text,#191E28);font-size:2.6em;margin-bottom:1em;text-align:center;-webkit-text-decoration:none;text-decoration:none;}</style><h1 class="css-gg7yqs">Node.js Certification Study Guide<br>by<style data-emotion-css="10mr1ww">.css-10mr1ww{color:var(--theme-ui-colors-text,#191E28);display:inline-block;font-size:1.8em;line-height:0;margin-bottom:-0.5em;padding:0 0 0 0.25em;text-align:left;-webkit-text-decoration:none;text-decoration:none;}</style><a href="https://heynode.com/" class="css-10mr1ww"><style data-emotion-css="1t6buh9">.css-1t6buh9{margin-bottom:-12px;width:100%;height:48px;}</style><img alt="Hey Node logo" src="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxMTgiIGhlaWdodD0iMjciIHZpZXdCb3g9IjAgMCAxMTggMjciPgogIDxnIGZpbGw9Im5vbmUiIGZpbGwtcnVsZT0iZXZlbm9kZCI+CiAgICA8cGF0aCBmaWxsPSIjNjQ5N0ZFIiBkPSJNMjEuNjg5OTU1OCw3LjY3NjE5MzEgQzE5LjUzMTkxMjIsNy42NzYxOTMxIDE4LjA0MDM3MDEsOS44ODI3NDQ4MyAxOC4wNDAzNzAxLDExLjg0ODE1ODYgTDI1LjA3NzU4NzgsMTEuODQ4MTU4NiBDMjUuMDc3NTg3OCw5LjQxNTM2NTUyIDIzLjgxNjU2NSw3LjY3NjE5MzEgMjEuNjg5OTU1OCw3LjY3NjE5MzEgWiBNMjYuNzgzMjQ4NiwxNi40NjMyOTY2IEMyNy4zMzQwMzQ5LDE2LjQ2MzI5NjYgMjcuNjkxNjU4OCwxNi45MDEzNDgzIDI3LjY5MTY1ODgsMTcuNDYwOSBDMjcuNjkxNjU4OCwxOC40MzUyMjc2IDI1LjUyNzY5MjcsMjAuNjc0MzY1NSAyMi4yMzg5MTk5LDIwLjY3NDM2NTUgQzE3LjI3MjI3NjEsMjAuNjc0MzY1NSAxNS4yOTk2NTAxLDE3LjI0Njc2MjEgMTUuMjk5NjUwMSwxMy4xNzU4MTM4IEMxNS4yOTk2NTAxLDkuMjg3ODEzNzkgMTcuNjc2ODIzOCw1LjcwNzUyMDY5IDIxLjcxNjgzNDYsNS43MDc1MjA2OSBDMjUuMzkzMjk5LDUuNzA3NTIwNjkgMjcuNjAwNTQ0NCw4LjE5NjY0MTM4IDI3LjYwMDU0NDQsMTEuODI4MTQxNCBDMjcuNjAwNTQ0NCwxMi44NDg1NTUyIDI3LjM4MDk1ODgsMTMuNTc3MDg5NyAyNi40NjcwODE4LDEzLjU3NzA4OTcgTDE4LjA0MDM3MDEsMTMuNTc3MDg5NyBDMTguMDQwMzcwMSwxNi42Njk1MjA3IDE5LjY1NDQ2MSwxOC41NTM5MzQ1IDIyLjM4MTA1ODMsMTguNTUzOTM0NSBDMjQuNzY2NDMyMiwxOC41NTM5MzQ1IDI1LjkwMjYyODMsMTYuNDYzMjk2NiAyNi43ODMyNDg2LDE2LjQ2MzI5NjYgWiBNMTA1LjUyNTM3Myw3LjY3NjE5MzEgQzEwMy4zNjczMjksNy42NzYxOTMxIDEwMS44NzU3ODcsOS44ODI3NDQ4MyAxMDEuODc1Nzg3LDExLjg0ODE1ODYgTDEwOC45MTMwMDUsMTEuODQ4MTU4NiBDMTA4LjkxMzAwNSw5LjQxNTM2NTUyIDEwNy42NTE5ODIsNy42NzYxOTMxIDEwNS41MjUzNzMsNy42NzYxOTMxIFogTTExMC42MTgyMSwxNi40NjMyOTY2IEMxMTEuMTY5NDUyLDE2LjQ2MzI5NjYgMTExLjUyNzA3NiwxNi45MDEzNDgzIDExMS41MjcwNzYsMTcuNDYwOSBDMTExLjUyNzA3NiwxOC40MzUyMjc2IDEwOS4zNjMxMSwyMC42NzQzNjU1IDEwNi4wNzQzMzcsMjAuNjc0MzY1NSBDMTAxLjEwNzY5MywyMC42NzQzNjU1IDk5LjEzNTA2NywxNy4yNDY3NjIxIDk5LjEzNTA2NywxMy4xNzU4MTM4IEM5OS4xMzUwNjcsOS4yODc4MTM3OSAxMDEuNTEyMjQxLDUuNzA3NTIwNjkgMTA1LjU1MjI1MSw1LjcwNzUyMDY5IEMxMDkuMjI4NzE2LDUuNzA3NTIwNjkgMTExLjQzNTUwNiw4LjE5NjY0MTM4IDExMS40MzU1MDYsMTEuODI4MTQxNCBDMTExLjQzNTUwNiwxMi44NDg1NTUyIDExMS4yMTYzNzYsMTMuNTc3MDg5NyAxMTAuMzAyMDQzLDEzLjU3NzA4OTcgTDEwMS44NzU3ODcsMTMuNTc3MDg5NyBDMTAxLjg3NTc4NywxNi42Njk1MjA3IDEwMy40ODk4NzgsMTguNTUzOTM0NSAxMDYuMjE2NDc1LDE4LjU1MzkzNDUgQzEwOC42MDE4NDksMTguNTUzOTM0NSAxMDkuNzM4MDQ1LDE2LjQ2MzI5NjYgMTEwLjYxODIxLDE2LjQ2MzI5NjYgWiBNNDAuNzY0MzM3Myw1LjcwNzc1MzQ1IEM0Mi4wMDMwMzcsNS43MDc3NTM0NSA0Mi4yNTI2OTA0LDYuMjc5NDA4NjIgNDEuODM1ODQyMiw3LjM2MjIwMTcyIEM0MS4xNDA2Mzk2LDkuMTY3MDEyMDcgMzYuNzkzMTE3OSwyMC4xMTY5MDg2IDM2LjM1ODA0NjgsMjEuMTgwNjE1NSBDMzUuMjk3MDIwMSwyMy43NzQ5NDMxIDM0LjM0OTQzMDcsMjYuNTU2NDA4NiAzMC42Mzc0MzE2LDI2LjU1NjQwODYgQzI4Ljg0Nzk0NTYsMjYuNTU2NDA4NiAyNy45Njc3ODA5LDI2LjA3NjkyNTkgMjcuOTY3NzgwOSwyNS4yMDczMzk3IEMyNy45Njc3ODA5LDI0LjQ1Nzg1NjkgMjguNDAxMDI5NywyNC4wODMxMTU1IDI4Ljk2NTQ4MzEsMjQuMDgzMTE1NSBDMjkuNDc4OTEyNSwyNC4wODMxMTU1IDI5LjY0MDE4NSwyNC4yNzgxNjcyIDMwLjc0MDM5MDksMjQuMjc4MTY3MiBDMzIuNjc3NDgyMiwyNC4yNzgxNjcyIDMzLjI5NzA1OTgsMjEuOTkzNDA4NiAzNC4xNDY3MDEzLDE5Ljk2Nzk0MzEgQzMzLjQ2Njk4ODEsMTguMjk5NTI5MyAyOS40MTAxMjEyLDguMzQwMjUzNDUgMjguOTc4MjM5MSw3LjI4NDkyNTg2IEMyOC41NTI3MzUxLDYuMjQ1ODkxMzggMjkuMTY1NDc5MSw1LjcwNzc1MzQ1IDMwLjI0MTA4NDIsNS43MDc3NTM0NSBDMzEuMTAxMjAzNyw1LjcwNzc1MzQ1IDMxLjQ2OTMwNTgsNi4xNjc2ODQ0OCAzMS42ODkzNDY5LDYuNzYyNjE1NTIgQzMxLjg4NzA2NTEsNy4yOTcwMjkzMSAzNC4zOTA4ODc3LDE0LjAwOTc4NzkgMzUuNTQ4NDk1NywxNy4xMTMzOTE0IEwzNS41NTM1MDcsMTcuMTAzMTUgQzM1LjU1MzUwNywxNy4xMDMxNSAzOS40MTk0ODkzLDYuODEyODkxMzggMzkuNTU1NzA1Myw2LjQ1MzUxMjA3IEMzOS42OTE5MjEzLDYuMDkzNjY3MjQgMzkuOTE0Njk1OSw1LjcwNzc1MzQ1IDQwLjc2NDMzNzMsNS43MDc3NTM0NSBaIE03NC4zMjU4MTEsMTguNjA5MDUxNyBDNzcuMDM5NjUyMiwxOC42MDkwNTE3IDc4LjcxODQzNDMsMTYuMTE5IDc4LjcxODQzNDMsMTMuMTg5MDM0NSBDNzguNzE4NDM0MywxMC4yNTk1MzQ1IDc3LjAzOTY1MjIsNy43Njk5NDgyOCA3NC4zMjU4MTEsNy43Njk5NDgyOCBDNzEuNjEyNDI1Myw3Ljc2OTk0ODI4IDY5LjkzMzE4NzcsMTAuMjU5NTM0NSA2OS45MzMxODc3LDEzLjE4OTAzNDUgQzY5LjkzMzE4NzcsMTYuMTE5IDcxLjYxMjQyNTMsMTguNjA5MDUxNyA3NC4zMjU4MTEsMTguNjA5MDUxNyBaIE03NC4zMjU4MTEsNS43MDc3MDY5IEM3OC42NjQ2NzY5LDUuNzA3NzA2OSA4MS4zNTA3MjgyLDguOTE4Mzc5MzEgODEuMzUwNzI4MiwxMy4xODkwMzQ1IEM4MS4zNTA3MjgyLDE3LjQ2MDE1NTIgNzguNjY0Njc2OSwyMC42NzEyOTMxIDc0LjMyNTgxMSwyMC42NzEyOTMxIEM2OS45ODY5NDUxLDIwLjY3MTI5MzEgNjcuMzAxMzQ5NCwxNy40NjAxNTUyIDY3LjMwMTM0OTQsMTMuMTg5MDM0NSBDNjcuMzAxMzQ5NCw4LjkxODM3OTMxIDY5Ljk4Njk0NTEsNS43MDc3MDY5IDc0LjMyNTgxMSw1LjcwNzcwNjkgWiBNMTMuNjY3MTU0MSwxOC4zNDk0NzkzIEMxNC4xNzE5Mjc3LDE4LjM0OTQ3OTMgMTQuNTU1NTE5MiwxOC43NDE5MTAzIDE0LjU1NTUxOTIsMTkuNDIyNDk2NiBDMTQuNTU1NTE5MiwyMC4xMjc3NTUyIDE0LjA1MDI5LDIwLjY3NDI3MjQgMTIuOTE2MzcxOCwyMC42NzQyNzI0IEMxMC45NjM3OTExLDIwLjY3NDI3MjQgMTAuMDk1OTI2OCwxOS43ODMyNzI0IDEwLjA5NTkyNjgsMTguMjU0NTEzOCBDMTAuMDk1OTI2OCwxOC4yNTQ1MTM4IDEwLjEwNDU4MjYsMTEuMTU3MjM3OSAxMC4xMDQ1ODI2LDEwLjA2NjUzMSBDMTAuMTA0NTgyNiw4Ljk3NjI4OTY2IDkuMjgwNDUzMjMsNy44MzExMTcyNCA3LjYwNDQwNDU2LDcuODMxMTE3MjQgQzUuOTcyNTQ2MzYsNy44MzExMTcyNCAzLjgzODE5MjQ1LDkuMjUzMjcyNDEgMy4zOTk0NzY4MSw5LjY5NjQ0NDgzIEwzLjM5OTQ3NjgxLDE5LjYwMTcyMDcgQzMuMzk5NDc2ODEsMjAuMjk3MjAzNCAyLjgwNDUwMDAzLDIwLjY3NDI3MjQgMi4wNzA1NzM4NSwyMC42NzQyNzI0IEMxLjMzNjY0NzY3LDIwLjY3NDI3MjQgMC43NDE2NzA4OTgsMjAuMjk3MjAzNCAwLjc0MTY3MDg5OCwxOS42MDE3MjA3IEwwLjc0MTY3MDg5OCwzLjE3ODI3MjQxIEMwLjc0MTY3MDg5OCwxLjgxOTg5MzEgMi4zMDkyNjM4OWUtMTQsMS44MDk2NTE3MiAyLjMwOTI2Mzg5ZS0xNCwxLjAwNzU2NTUyIEMyLjMwOTI2Mzg5ZS0xNCwwLjQ1MTI3MjQxNCAwLjQ2NTU5NDM4NCwwLjAwMDE4NjIwNjg5NyAxLjI3MzMyMzE5LDAuMDAwMTg2MjA2ODk3IEMyLjcxNzQ4NTgxLDAuMDAwMTg2MjA2ODk3IDMuMzg4NTQzMDgsMS4wMzY0Mjc1OSAzLjM5ODU2NTY2LDIuMDg0MzA2OSBMMy4zOTk0NzY4MSwyLjA4NDMwNjkgTDMuMzk5NDc2ODEsNy44Mzc2MzQ0OCBDMy4zOTk0NzY4MSw3LjgzNzYzNDQ4IDUuNDYxMzk0NzksNS43MDc4OTMxIDguNDM1MzY3NTMsNS43MDc4OTMxIEMxMS41NTY5NDU1LDUuNzA3ODkzMSAxMi43NjIzODg1LDcuOTAxODc1ODYgMTIuNzYyMzg4NSwxMC4wNzU4NDE0IEwxMi43NjIzODg1LDE3LjQ0MjE4NjIgQzEyLjc2MjM4ODUsMTguMTM5MDY1NSAxMy4xNDkxNjksMTguMzQ5NDc5MyAxMy42NjcxNTQxLDE4LjM0OTQ3OTMgWiBNNjUuNTIzNjE3MSwxOC4zNDk0NzkzIEM2Ni4wMjgzOTA2LDE4LjM0OTQ3OTMgNjYuNDExOTgyMSwxOC43NDE5MTAzIDY2LjQxMTk4MjEsMTkuNDIyNDk2NiBDNjYuNDExOTgyMSwyMC4xMjc3NTUyIDY1LjkwNjc1MjksMjAuNjc0MjcyNCA2NC43NzI4MzQ3LDIwLjY3NDI3MjQgQzYyLjgyMDI1NCwyMC42NzQyNzI0IDYxLjk1MjM4OTcsMTkuNzgzMjcyNCA2MS45NTIzODk3LDE4LjI1NDUxMzggQzYxLjk1MjM4OTcsMTguMjU0NTEzOCA2MS45NjEwNDU1LDExLjE1NzIzNzkgNjEuOTYxMDQ1NSwxMC4wNjY1MzEgQzYxLjk2MTA0NTUsOC45NzYyODk2NiA2MS4xMzY5MTYyLDcuODMxMTE3MjQgNTkuNDYwODY3NSw3LjgzMTExNzI0IEM1Ny41ODU3MzM5LDcuODMxMTE3MjQgNTUuNjk0NjU1NCw5LjQwMjcwMzQ1IDU1LjI1NTkzOTcsOS44NDU4NzU4NiBMNTUuMjU1OTM5NywxOS42MDE3MjA3IEM1NS4yNTU5Mzk3LDIwLjI5NzIwMzQgNTQuNjYwOTYyOSwyMC42NzQyNzI0IDUzLjkyNzAzNjgsMjAuNjc0MjcyNCBDNTMuMTkzMTEwNiwyMC42NzQyNzI0IDUyLjU5ODEzMzgsMjAuMjk3MjAzNCA1Mi41OTgxMzM4LDE5LjYwMTcyMDcgTDUyLjU5ODEzMzgsOC44ODU1MTM3OSBDNTIuNTk4MTMzOCw3LjUyNzEzNDQ4IDUxLjg1NjQ2MjksNy41MTY0Mjc1OSA1MS44NTY0NjI5LDYuNzE0ODA2OSBDNTEuODU2NDYyOSw2LjE1ODUxMzc5IDUyLjMyMjA1NzMsNS43MDc4OTMxIDUzLjEyOTMzMDUsNS43MDc4OTMxIEM1NC41ODQ4ODI1LDUuNzA3ODkzMSA1NS4yMDM1NDksNy4wMzM2ODYyMSA1NS4yMDM1NDksNy44OTQ4OTMxIEw1NS4yNDg2NTA2LDcuODk0ODkzMSBDNTUuMjQ4NjUwNiw3Ljg5NDg5MzEgNTcuMzE3ODU3Nyw1LjcwNzg5MzEgNjAuMjkxODMwNSw1LjcwNzg5MzEgQzYzLjQxMzQwODUsNS43MDc4OTMxIDY0LjYxODg1MTUsNy45MDE4NzU4NiA2NC42MTg4NTE1LDEwLjA3NTg0MTQgTDY0LjYxODg1MTUsMTcuNDQyMTg2MiBDNjQuNjE4ODUxNSwxOC4xMzkwNjU1IDY1LjAwNTE3NjMsMTguMzQ5NDc5MyA2NS41MjM2MTcxLDE4LjM0OTQ3OTMgWiBNOTAuMTE5NTc0MywxOC42MDkwNTE3IEM5MS42MDEwOTM4LDE4LjYwOTA1MTcgOTMuMTIxNzkyNSwxNy43MTA2MDM0IDkzLjYwOTcwOTksMTcuMDg0OTQ4MyBMOTMuNjA5NzA5OSw4LjYzODEzNzkzIEM5My42MDk3MDk5LDguNjM4MTM3OTMgOTIuNTIzMTcxMiw3Ljc2OTk0ODI4IDkwLjE3ODM0MzEsNy43Njk5NDgyOCBDODcuNDY0NTAxOSw3Ljc2OTk0ODI4IDg1Ljc4NTI2NDIsMTAuNDA5NDMxIDg1Ljc4NTI2NDIsMTMuMzM5Mzk2NiBDODUuNzg1MjY0MiwxNi41NTU2NTUyIDg3LjUwMzIyNTUsMTguNjA5MDUxNyA5MC4xMTk1NzQzLDE4LjYwOTA1MTcgWiBNOTcuMTgwOTM3MywxOC4zNDkyOTMxIEM5Ny42ODU3MTA5LDE4LjM0OTI5MzEgOTguMDY5MzAyMywxOC43NDE3MjQxIDk4LjA2OTMwMjMsMTkuNDIyMzEwMyBDOTguMDY5MzAyMywyMC4xMjgwMzQ1IDk3LjU2NDA3MzIsMjAuNjc0NTUxNyA5Ni40MzAxNTUsMjAuNjc0NTUxNyBDOTQuNDc3NTc0MiwyMC42NzQ1NTE3IDkzLjc0NDEwMzYsMTkuNDY4ODYyMSA5My43NDQxMDM2LDE5LjAyODAxNzIgQzkzLjc0NDEwMzYsMTkuMDI4MDE3MiA5Mi40MTUyMDA3LDIwLjY3MTI5MzEgODkuNDMzOTM4OCwyMC42NzEyOTMxIEM4NS4zMzg4MDM4LDIwLjY3MTI5MzEgODMuMTUzNDI1OSwxNy40NDAxMzc5IDgzLjE1MzQyNTksMTMuMzk4OTgyOCBDODMuMTUzNDI1OSw5LjEyNzg2MjA3IDg1LjgzOTAyMTcsNS43MDc3MDY5IDkwLjE3ODM0MzEsNS43MDc3MDY5IEM5MS43MTgxNzU4LDUuNzA3NzA2OSA5My4wMDQyNTUsNi4xMTEzMTAzNCA5My42MDk3MDk5LDYuNDcyNTUxNzIgTDkzLjYwOTcwOTksMy4xNzg1NTE3MiBDOTMuNjA5NzA5OSwxLjgyMDE3MjQxIDkyLjg2ODAzOSwxLjgwOTQ2NTUyIDkyLjg2ODAzOSwxLjAwNzM3OTMxIEM5Mi44NjgwMzksMC40NTEwODYyMDcgOTMuMzM0MDg5LDEuNDIxMDg1NDdlLTE0IDk0LjE0MDkwNjcsMS40MjEwODU0N2UtMTQgQzk1LjU4NTUyNDgsMS40MjEwODU0N2UtMTQgOTYuMjU2NTgyMSwxLjAzNjI0MTM4IDk2LjI2NjYwNDcsMi4wODQxMjA2OSBMOTYuMjY3NTE1OCwyLjA4NDEyMDY5IEw5Ni4yNjc1MTU4LDE3LjQ0MiBDOTYuMjY3NTE1OCwxOC4xMzg4NzkzIDk2LjY2MjQ5NjYsMTguMzQ5MjkzMSA5Ny4xODA5MzczLDE4LjM0OTI5MzEgWiIvPgogICAgPHBhdGggZmlsbD0iI0ZFNjQ2OSIgZD0iTTQ5Ljc4NzMyNDgsMS4yNzMxNDMxIEM1MC4xOTc3OTUsMS41NzE1Mzk2NiA1MC4zMTA3NzY4LDIuMTM5MDA1MTcgNTAuMDUzODM0MywyLjU4MTI0NjU1IEM0OC4zNjgyMTg2LDUuNDc3Njk0ODMgNDcuMzU4MjE1OSw5LjE2OTcxMjA3IDQ3LjM1ODIxNTksMTMuMTg4OTg3OSBDNDcuMzU4MjE1OSwxNy4yMTA1OTE0IDQ4LjM2ODIxODYsMjAuOTAyNjA4NiA1MC4wNTI5MjMyLDIzLjc5NjcyOTMgQzUwLjMxMDMyMTIsMjQuMjM4OTcwNyA1MC4xOTc3OTUsMjQuODA3MzY3MiA0OS43ODczMjQ4LDI1LjEwNDgzMjggQzQ5LjM3MzIxLDI1LjQwNTU1NjkgNDguNzk3MzY3MywyNS4zMjkyMTIxIDQ4LjQ4MDc0NDksMjQuOTIzNzQ2NiBDNDYuMDYzOTM2NCwyMS44Mjg1MjI0IDQ0LjU5MTk4MzksMTcuNzA4Njk0OCA0NC41OTE5ODM5LDEzLjE4ODk4NzkgQzQ0LjU5MTk4MzksOC42NjY5NTM0NSA0Ni4wNjM5MzY0LDQuNTQ2MTk0ODMgNDguNDgwNzQ0OSwxLjQ1NDIyOTMxIEM0OC43OTczNjczLDEuMDQ4NzYzNzkgNDkuMzcyNzU0NSwwLjk3MjQxODk2NiA0OS43ODY4NjkyLDEuMjczMTQzMSBMNDkuNzg3MzI0OCwxLjI3MzE0MzEgWiBNMTEzLjgyOTQyMiwxLjQ1NDA4OTY2IEMxMTYuMjQ1Nzc1LDQuNTQ2NTIwNjkgMTE3LjcxODE4Myw4LjY2NjgxMzc5IDExNy43MTgxODMsMTMuMTg4ODQ4MyBDMTE3LjcxODE4MywxNy43MDg1NTUyIDExNi4yNDU3NzUsMjEuODI4ODQ4MyAxMTMuODI4OTY3LDI0LjkyMzYwNjkgQzExMy41MTIzNDQsMjUuMzI5MDcyNCAxMTIuOTM2OTU3LDI1LjQwNTQxNzIgMTEyLjUyMjg0MiwyNS4xMDUxNTg2IEMxMTIuMTExOTE3LDI0LjgwNzIyNzYgMTExLjk5ODkzNSwyNC4yMzg4MzEgMTEyLjI1Njc4OCwyMy43OTY1ODk3IEMxMTMuOTQxOTQ5LDIwLjkwMjQ2OSAxMTQuOTUxNDk2LDE3LjIxMDkxNzIgMTE0Ljk1MTQ5NiwxMy4xODg4NDgzIEMxMTQuOTUxNDk2LDkuMTY5NTcyNDEgMTEzLjk0MTk0OSw1LjQ3ODAyMDY5IDExMi4yNTYzMzMsMi41ODExMDY5IEMxMTEuOTk4OTM1LDIuMTM5MzMxMDMgMTEyLjExMTkxNywxLjU3MTQgMTEyLjUyMjM4NywxLjI3MzAwMzQ1IEwxMTIuNTIzMjk4LDEuMjczMDAzNDUgQzExMi45MzY5NTcsMC45NzI3NDQ4MjggMTEzLjUxMjM0NCwxLjA0ODYyNDE0IDExMy44Mjk0MjIsMS40NTQwODk2NiBaIi8+CiAgPC9nPgo8L3N2Zz4K" class="css-1t6buh9"></a></h1><style data-emotion-css="1cezcjk">.css-1cezcjk{font-size:1.2em;margin-bottom:1em;}</style><style data-emotion-css="1bphdml">.css-1bphdml{margin-bottom:64px;margin-top:16px;font-size:1.2em;margin-bottom:1em;}</style><section class="css-1bphdml"><p>The <abbr title="OpenJS Node.js Application Developer">JSNAD</abbr> <!-- -->and <abbr title="OpenJS Node.js Services Developer">JSNSD</abbr> exams are two new tools created by the OpenJS Foundation that developers can use to demonstrate their Node.js skills, or pinpoint where they need to level up.</p><p>Knowing where to find great learning resources for each exam topic can be hard. Below is a list of tips, articles, tutorials, and videos we think can help.</p></section><style data-emotion-css="lqzae9">.css-lqzae9{margin-bottom:64px;margin-top:16px;}</style><section id="toc" class="css-lqzae9"><h2>Preface</h2><style data-emotion-css="n6mtod">.css-n6mtod{list-style:none;font-size:18px;max-width:480px;margin:0 0 2em 0;padding:0;}.css-n6mtod li{padding-top:0;padding-bottom:0;}.css-n6mtod li > *{border-radius:50px;color:var(--theme-ui-colors-text,#191E28);display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-box-pack:start;-webkit-justify-content:flex-start;-ms-flex-pack:start;justify-content:flex-start;padding-top:8px;padding-bottom:8px;margin-top:0;margin-bottom:0;margin-left:-999em;padding-left:999em;padding-right:2em;-webkit-text-decoration:none;text-decoration:none;-webkit-transition:all 100ms ease-out;transition:all 100ms ease-out;}.css-n6mtod li > *:hover:not(.header){background-color:#fe6469;color:white;-webkit-text-decoration:underline;text-decoration:underline;}.css-n6mtod li > *:hover:not(.header) .prefix,.css-n6mtod li > *:hover:not(.header) .suffix{color:white;}.css-n6mtod li .content{-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1;margin-right:2em;}.css-n6mtod li .prefix{color:#c6c7c9;min-width:36px;padding-right:32px;}.css-n6mtod li .suffix{color:var(--theme-ui-colors-primary,#4C8BFF);}.css-n6mtod li .header{font-weight:bold;}.css-n6mtod li .header .content,.css-n6mtod li .header .suffix{border-bottom:2px solid #c6c7c9;color:var(--theme-ui-colors-text,#191E28);}</style><ol class="css-n6mtod"><li><a href="https://www.nodecertification.com/#000-Certification%20overview"><span class="prefix">000</span><span class="content">Certification overview & environment</span></a></li></ol><h2>Node.js Application Developer Certification (JSNAD)</h2><ol class="css-n6mtod"><li><div class="header"><span class="prefix"></span><span class="content">Content/Skills covered</span><span class="suffix">Weight</span></div></li><li><a href="https://www.nodecertification.com/#001-Buffers%20&%20Streams"><span class="prefix">001</span><span class="content">Buffers & Streams</span><span class="suffix">11%</span></a></li><li><a href="https://www.nodecertification.com/#002-Control%20flow"><span class="prefix">002</span><span class="content">Control flow</span><span class="suffix">12%</span></a></li><li><a href="https://www.nodecertification.com/#003-Child%20processes"><span class="prefix">003</span><span class="content">Child processes</span><span class="suffix">8%</span></a></li><li><a href="https://www.nodecertification.com/#004-Debugging%20Node.js"><span class="prefix">004</span><span class="content">Debugging Node.js</span><span class="suffix">6%</span></a></li><li><a href="https://www.nodecertification.com/#005-Error%20handling"><span class="prefix">005</span><span class="content">Error handling</span><span class="suffix">8%</span></a></li><li><a href="https://www.nodecertification.com/#006-Node.js%20CLI"><span class="prefix">006</span><span class="content">Node.js CLI</span><span class="suffix">4%</span></a></li><li><a href="https://www.nodecertification.com/#007-Events"><span class="prefix">007</span><span class="content">Events</span><span class="suffix">11%</span></a></li><li><a href="https://www.nodecertification.com/#008-File%20system"><span class="prefix">008</span><span class="content">File system</span><span class="suffix">8%</span></a></li><li><a href="https://www.nodecertification.com/#009-JavaScript%20prerequisites"><span class="prefix">009</span><span class="content">JavaScript prerequisites</span><span class="suffix">7%</span></a></li><li><a href="https://www.nodecertification.com/#010-Module%20system"><span class="prefix">010</span><span class="content">Module system</span><span class="suffix">7%</span></a></li><li><a href="https://www.nodecertification.com/#011-Process/Operating%20system"><span class="prefix">011</span><span class="content">Process/Operating system</span><span class="suffix">6%</span></a></li><li><a href="https://www.nodecertification.com/#012-Package.json"><span class="prefix">012</span><span class="content">Package.json</span><span class="suffix">6%</span></a></li><li><a href="https://www.nodecertification.com/#013-Unit%20testing"><span class="prefix">013</span><span class="content">Unit testing</span><span class="suffix">6%</span></a></li></ol><h2>Node.js Services Developer Certification (JSNSD)</h2><ol class="css-n6mtod"><li><div class="header"><span class="prefix"></span><span class="content">Content/Skills covered</span><span class="suffix">Weight</span></div></li><li><a href="https://www.nodecertification.com/#001-Servers%20and%20Services"><span class="prefix">001</span><span class="content">Servers and Services</span><span class="suffix">70%</span></a></li><li><a href="https://www.nodecertification.com/#002-Security"><span class="prefix">002</span><span class="content">Security</span><span class="suffix">30%</span></a></li></ol></section></div><style data-emotion-css="8ec2kr">.css-8ec2kr{-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;background-color:var(--theme-ui-colors-primary,#4C8BFF);border-bottom:4px solid #a6c5ff;border-top:4px solid #a6c5ff;color:white;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;text-align:left;}@media screen and (min-width:959px){.css-8ec2kr{-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;}}</style><style data-emotion-css="sj8482">.css-sj8482{padding:2em 1em;text-align:center;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;background-color:var(--theme-ui-colors-primary,#4C8BFF);border-bottom:4px solid #a6c5ff;border-top:4px solid #a6c5ff;color:white;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;text-align:left;}@media screen and (min-width:959px){.css-sj8482{-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;}}</style><div class="css-sj8482"><style data-emotion-css="bf5ndz">.css-bf5ndz{font-size:1.4em;max-width:680px;}</style><p class="css-bf5ndz">Wrestling huge data files? Get instant access to our <style data-emotion-css="qno5r5">.css-qno5r5{color:white;background:linear-gradient(to bottom,#fff 0%,#fff 100%);background-position:0 100%;background-repeat:repeat-x;background-size:1px 1px;-webkit-text-decoration:none;text-decoration:none;-webkit-transition:background-size .2s;transition:background-size .2s;}.css-qno5r5:hover{background-size:4px 100%;color:var(--theme-ui-colors-primary,#4C8BFF);}</style><a href="https://heynode.com/" class="css-qno5r5">Node.js Data Brokering course</a> and unlock Node’s potential.</p><style data-emotion-css="acojtv">.css-acojtv{background-size:0px 0px;border:1px solid white;border-radius:6px;color:white;display:inline-block;font-size:1.4em;margin:1em;min-width:250px;padding:0 0.5em;text-align:center;-webkit-transition:all .2s ease-out;transition:all .2s ease-out;}.css-acojtv:after{content:"→";padding:0 0.5em;}.css-acojtv:hover:after{padding:0 0 0 1em;}</style><style data-emotion-css="frqg2d">.css-frqg2d{color:white;background:linear-gradient(to bottom,#fff 0%,#fff 100%);background-position:0 100%;background-repeat:repeat-x;background-size:1px 1px;-webkit-text-decoration:none;text-decoration:none;-webkit-transition:background-size .2s;transition:background-size .2s;background-size:0px 0px;border:1px solid white;border-radius:6px;color:white;display:inline-block;font-size:1.4em;margin:1em;min-width:250px;padding:0 0.5em;text-align:center;-webkit-transition:all .2s ease-out;transition:all .2s ease-out;}.css-frqg2d:hover{background-size:4px 100%;color:var(--theme-ui-colors-primary,#4C8BFF);}.css-frqg2d:after{content:"→";padding:0 0.5em;}.css-frqg2d:hover:after{padding:0 0 0 1em;}</style><a href="https://heynode.com/" class="css-frqg2d">Learn more</a></div><style data-emotion-css="ejs8mf">.css-ejs8mf{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;max-width:768px;margin-left:auto;margin-right:auto;padding-left:16px;padding-right:16px;}</style><div class="css-ejs8mf"><style data-emotion-css="lqzae9">.css-lqzae9{margin-bottom:64px;margin-top:16px;}</style><section class="css-lqzae9"><style data-emotion-css="1xy3ebc">.css-1xy3ebc{border-bottom:1px solid #8c8f94;font-size:36px;font-weight:normal;padding-bottom:16px;margin-bottom:8px;}</style><h2 class="section-header css-1xy3ebc"><style data-emotion-css="1p38q07">.css-1p38q07{color:#c6c7c9;font-weight:bold;margin-left:0;padding-right:8px;-webkit-text-decoration:none;text-decoration:none;}@media screen and (min-width:959px){.css-1p38q07{margin-left:-96px;padding-right:32px;}}</style><a id="000-Certification overview" href="https://www.nodecertification.com/#000-Certification%20overview" class="css-1p38q07">000</a>Certification overview</h2><p>There are 2 certification exams. If you’re only going to take one, we recommend focusing on the JSNAD exam first.</p><p><strong><a href="https://training.linuxfoundation.org/certification/jsnad/">OpenJS Node Application Developer (JSNAD)</a></strong></p><ul><li>Demonstrate competence developing Node.js applications of any kind</li><li>Focus on Node.js core APIs and common types of applications Node.js is used to build</li><li>Format: ~ 25 questions, 5-10 minutes each</li><li>Exam content is outlined in more detail than the JSNSD</li></ul><p><strong><a href="https://training.linuxfoundation.org/certification/jsnsd/">OpenJS Node Services Developer (JSNSD)</a></strong></p><ul><li>Demonstrate competence developing RESTful Node.js servers and services with an emphasis on security.</li><li>Format: ~ 4-5 questions, 15-30 minutes each</li></ul><h3>What to expect:</h3><ul><li>Target audience: Upper intermediate level Node.js developers</li><li>Both exams currently target Node.js version 10.16 LTS. We suggest learning the latest version and then checking for discrepancies between that version and the 10.16 LTS.</li><li>Exam content will change as Node evolves, and will be different for each taker.</li><li>The two-hour exam sessions will be closely monitored by a proctor via webcam, audio, and remote screen viewing.</li><li>Use any ecosystem libraries, and most online resources except Stack Exchange, Stack Overflow, or related sites encouraging copy/paste solutions.</li><li>Exam focus: practical outcomes and problem solving. You’re scored based on whether you successfully solve the problem, not the specifics of how you solved it.</li><li>Use core Node APIs, or any library of your choice.</li><li>One free exam retake, and rolling promotions on the exam cost.</li><li>For more info, see the <a href="https://training.linuxfoundation.org/wp-content/uploads/2019/09/JSNAD-Important-Tips-v1.0.pdf">exam tips PDF from the OpenJS Foundation</a>.</li></ul><h3>The exam environment</h3><p>Both exams are administered online and require using a Remote Desktop Linux environment. You’ll be required to write code using either Visual Studio Code or Vim. You’ll also be able to use Postman, Chrome, and the terminal. In some cases, partial code may be provided to save time. In other contexts, you’ll write an entire program.</p></section><style data-emotion-css="m6ul9v">.css-m6ul9v{color:var(--theme-ui-colors-secondary,#FE6469);text-transform:uppercase;}</style><h2 class="css-m6ul9v">Node.js Application Developer Certification (JSNAD)</h2><section class="css-lqzae9"><h2 class="section-header css-1xy3ebc"><a id="001-Buffers & Streams" href="https://www.nodecertification.com/#001-Buffers%20&%20Streams" class="css-1p38q07">001</a>Buffers & Streams</h2><p>Key competencies include; Node.js Buffer API’s, incremental processing, transforming data, and connecting streams.</p><style data-emotion-css="1clnku3">.css-1clnku3{margin:0 0 0 18px;padding:0;}</style><ol class="css-1clnku3"><style data-emotion-css="49kyys">.css-49kyys{border-bottom:1px dotted #d1d2d4;margin:0;padding:0.5em 0;}</style><li class="css-49kyys"><style data-emotion-css="155zjon">.css-155zjon{-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-pack:start;-webkit-justify-content:flex-start;-ms-flex-pack:start;justify-content:flex-start;-webkit-align-content:center;-ms-flex-line-pack:center;align-content:center;-webkit-text-decoration:none;text-decoration:none;}.css-155zjon:hover .source{color:var(--theme-ui-colors-text,#191E28);}</style><a href="https://heynode.com/tutorial/what-stream" class="css-155zjon"><style data-emotion-css="1hcskui">.css-1hcskui{-webkit-flex:1 1 auto;-ms-flex:1 1 auto;flex:1 1 auto;-webkit-order:1;-ms-flex-order:1;order:1;width:100%;}@media screen and (min-width:959px){.css-1hcskui{-webkit-order:0;-ms-flex-order:0;order:0;width:auto;}}</style><span class="css-1hcskui">What Is a Stream?</span><style data-emotion-css="twrbyd">.css-twrbyd{color:#8c8f94;display:block;float:right;font-size:0.8em;-webkit-order:3;-ms-flex-order:3;order:3;-webkit-text-decoration:none;text-decoration:none;}@media screen and (min-width:959px){.css-twrbyd{-webkit-order:0;-ms-flex-order:0;order:0;}}</style><span class="source css-twrbyd">heynode.com</span></a></li><li class="css-49kyys"><a href="https://www.freecodecamp.org/news/node-js-streams-everything-you-need-to-know-c9141306be93/" class="css-155zjon"><span class="css-1hcskui">Node.js Streams: Everything you need to know</span><span class="source css-twrbyd">freecodecamp.org</span></a></li><li class="css-49kyys"><a href="https://www.packtpub.com/web-development/node-cookbook-third-edition" class="css-155zjon"><style data-emotion-css="1vi6faz">.css-1vi6faz{-webkit-align-self:center;-ms-flex-item-align:center;align-self:center;font-size:0.7em;margin-right:6px;-webkit-order:2;-ms-flex-order:2;order:2;padding:2px 6px;-webkit-text-decoration:none;text-decoration:none;color:white;background:#79a8ff;border-left:6px solid var(--theme-ui-colors-primary,#4C8BFF);}@media screen and (min-width:959px){.css-1vi6faz{-webkit-order:0;-ms-flex-order:0;order:0;}}</style><span class="css-1vi6faz">book</span><span class="css-1hcskui">Node Cookbook, 3rd Edition - Chapter 4 - Using Streams</span><span class="source css-twrbyd">packtpub.com</span></a></li><li class="css-49kyys"><a href="https://github.com/dmitriz/stream-handbook" class="css-155zjon"><span class="css-1hcskui">stream-handbook</span><span class="source css-twrbyd">github.com</span></a></li><li class="css-49kyys"><a href="https://github.com/workshopper/stream-adventure" class="css-155zjon"><style data-emotion-css="63vhio">.css-63vhio{-webkit-align-self:center;-ms-flex-item-align:center;align-self:center;font-size:0.7em;margin-right:6px;-webkit-order:2;-ms-flex-order:2;order:2;padding:2px 6px;-webkit-text-decoration:none;text-decoration:none;background:#f7da03;border-left:6px solid rgba(0,0,0,0.25);color:var(--theme-ui-colors-text,#191E28);}@media screen and (min-width:959px){.css-63vhio{-webkit-order:0;-ms-flex-order:0;order:0;}}</style><span class="css-63vhio">nodeschool</span><span class="css-1hcskui">stream-adventure</span><span class="source css-twrbyd">github.com</span></a></li><li class="css-49kyys"><a href="https://nodejs.org/dist/latest-v12.x/docs/api/stream.html" class="css-155zjon"><style data-emotion-css="5dzlcs">.css-5dzlcs{-webkit-align-self:center;-ms-flex-item-align:center;align-self:center;font-size:0.6em;margin-right:6px;-webkit-order:2;-ms-flex-order:2;order:2;padding:2px 6px;-webkit-text-decoration:none;text-decoration:none;color:white;background:#53565e;border-left:6px solid var(--theme-ui-colors-text,#191E28);font-family:Menlo,monospace;}@media screen and (min-width:959px){.css-5dzlcs{-webkit-order:0;-ms-flex-order:0;order:0;}}.css-5dzlcs::before{content:"<";color:var(--theme-ui-colors-secondary,#FE6469);}.css-5dzlcs::after{content:"/>";color:var(--theme-ui-colors-secondary,#FE6469);}</style><span class="css-5dzlcs">api docs</span><span class="css-1hcskui">Stream documentation</span><span class="source css-twrbyd">nodejs.org</span></a></li><li class="css-49kyys"><a href="https://nodejs.org/dist/latest-v12.x/docs/api/buffer.html" class="css-155zjon"><span class="css-5dzlcs">api docs</span><span class="css-1hcskui">Buffer documentation</span><span class="source css-twrbyd">nodejs.org</span></a></li></ol><style data-emotion-css="qp29m6">.css-qp29m6{color:var(--theme-ui-colors-text,#191E28);display:block;font-size:0.8em;margin-top:1em;text-align:right;}.css-qp29m6:hover{color:var(--theme-ui-colors-secondary,#FE6469);}</style><a href="https://www.nodecertification.com/#toc" class="css-qp29m6">Table of Contents ↑</a></section><section class="css-lqzae9"><h2 class="section-header css-1xy3ebc"><a id="002-Control flow" href="https://www.nodecertification.com/#002-Control%20flow" class="css-1p38q07">002</a>Control flow</h2><p>Key competencies include; Managing asynchronous operations and control flow abstractions.</p><ol class="css-1clnku3"><li class="css-49kyys"><a href="https://heynode.com/tutorial/what-are-promises" class="css-155zjon"><span class="css-1hcskui">What Are Promises?</span><span class="source css-twrbyd">heynode.com, subscription required</span></a></li><li class="css-49kyys"><a href="https://heynode.com/tutorial/use-asyncawait-promises" class="css-155zjon"><span class="css-1hcskui">Use Async/Await with Promises</span><span class="source css-twrbyd">heynode.com, subscription required</span></a></li><li class="css-49kyys"><a href="http://book.mixu.net/node/ch7.html" class="css-155zjon"><span class="css-1hcskui">7. Control Flow</span><span class="source css-twrbyd">book.mixu.net</span></a></li><li class="css-49kyys"><a href="https://www.github.com/workshopper/learnyounode" class="css-155zjon"><span class="css-63vhio">nodeschool</span><span class="css-1hcskui">learnyounode</span><span class="source css-twrbyd">github.com</span></a></li><li class="css-49kyys"><a href="https://github.com/bulkan/async-you" class="css-155zjon"><span class="css-63vhio">nodeschool</span><span class="css-1hcskui">async-you</span><span class="source css-twrbyd">github.com</span></a></li><li class="css-49kyys"><a href="https://github.com/stevekane/promise-it-wont-hurt" class="css-155zjon"><span class="css-63vhio">nodeschool</span><span class="css-1hcskui">promise-it-wont-hurt</span><span class="source css-twrbyd">github.com</span></a></li></ol><a href="https://www.nodecertification.com/#toc" class="css-qp29m6">Table of Contents ↑</a></section><section class="css-lqzae9"><h2 class="section-header css-1xy3ebc"><a id="003-Child processes" href="https://www.nodecertification.com/#003-Child%20processes" class="css-1p38q07">003</a>Child processes</h2><p>Key competencies include; Spawning or executing child processes, and child process configuration.</p><ol class="css-1clnku3"><li class="css-49kyys"><a href="https://www.freecodecamp.org/news/node-js-child-processes-everything-you-need-to-know-e69498fe970a/" class="css-155zjon"><span class="css-1hcskui">Node.js Child Processes: Everything you need to know</span><span class="source css-twrbyd">freecodecamp.org</span></a></li><li class="css-49kyys"><a href="https://flaviocopes.com/how-to-spawn-child-process-node/" class="css-155zjon"><span class="css-1hcskui">How to spawn a child process with Node.js</span><span class="source css-twrbyd">flaviocopes.com</span></a></li><li class="css-49kyys"><a href="https://nodejs.org/docs/latest-v12.x/api/child_process.html" class="css-155zjon"><span class="css-5dzlcs">api docs</span><span class="css-1hcskui">Child_process documentation</span><span class="source css-twrbyd">nodejs.org</span></a></li></ol><a href="https://www.nodecertification.com/#toc" class="css-qp29m6">Table of Contents ↑</a></section><section class="css-lqzae9"><h2 class="section-header css-1xy3ebc"><a id="004-Debugging Node.js" href="https://www.nodecertification.com/#004-Debugging%20Node.js" class="css-1p38q07">004</a>Debugging Node.js</h2><p>Key competencies include; Debugging Node.js, basic performance analysis.</p><ol class="css-1clnku3"><li class="css-49kyys"><a href="https://www.packtpub.com/web-development/node-cookbook-third-edition" class="css-155zjon"><span class="css-1vi6faz">book</span><span class="css-1hcskui">Node Cookbook, 3rd Edition - Chapter 1 - Debugging Processes</span><span class="source css-twrbyd">packtpub.com</span></a></li><li class="css-49kyys"><a href="https://www.packtpub.com/web-development/node-cookbook-third-edition" class="css-155zjon"><span class="css-1vi6faz">book</span><span class="css-1hcskui">Node Cookbook, 3rd Edition - Chapter 9 - Optimizing Performance</span><span class="source css-twrbyd">packtpub.com</span></a></li><li class="css-49kyys"><a href="https://code.visualstudio.com/docs/nodejs/nodejs-debugging" class="css-155zjon"><span class="css-1hcskui">Node.js debugging in VS Code</span><span class="source css-twrbyd">code.visualstudio.com</span></a></li><li class="css-49kyys"><a href="https://www.youtube.com/watch?v=2oFKNL7vYV8" class="css-155zjon"><style data-emotion-css="16lkklm">.css-16lkklm{-webkit-align-self:center;-ms-flex-item-align:center;align-self:center;font-size:0.7em;margin-right:6px;-webkit-order:2;-ms-flex-order:2;order:2;padding:2px 6px;-webkit-text-decoration:none;text-decoration:none;color:white;background:#fe8b8f;border-left:6px solid var(--theme-ui-colors-secondary,#FE6469);}@media screen and (min-width:959px){.css-16lkklm{-webkit-order:0;-ms-flex-order:0;order:0;}}</style><span class="css-16lkklm">video</span><span class="css-1hcskui">Getting started with Node.js debugging in VS Code</span><span class="source css-twrbyd">youtube.com</span></a></li><li class="css-49kyys"><a href="https://nodejs.org/en/docs/guides/debugging-getting-started/" class="css-155zjon"><span class="css-1hcskui">Debugging Guide</span><span class="source css-twrbyd">nodejs.org</span></a></li><li class="css-49kyys"><a href="https://nodejs.org/en/docs/guides/simple-profiling/" class="css-155zjon"><span class="css-1hcskui">Easy profiling for Node.js Applications</span><span class="source css-twrbyd">nodejs.org</span></a></li><li class="css-49kyys"><a href="https://nodejs.org/dist/latest-v12.x/docs/api/console.html" class="css-155zjon"><span class="css-5dzlcs">api docs</span><span class="css-1hcskui">console documentation</span><span class="source css-twrbyd">nodejs.org</span></a></li><li class="css-49kyys"><a href="https://nodejs.org/dist/latest-v12.x/docs/api/debugger.html" class="css-155zjon"><span class="css-5dzlcs">api docs</span><span class="css-1hcskui">debugger documentation</span><span class="source css-twrbyd">nodejs.org</span></a></li><li class="css-49kyys"><a href="https://www.npmjs.com/package/0x" class="css-155zjon"><span class="css-1hcskui">npmjs.com/package/0x</span><span class="source css-twrbyd">npmjs.com</span></a></li><li class="css-49kyys"><a href="https://github.com/othiym23/bug-clinic" class="css-155zjon"><span class="css-63vhio">nodeschool</span><span class="css-1hcskui">bug-clinic</span><span class="source css-twrbyd">github.com</span></a></li></ol><a href="https://www.nodecertification.com/#toc" class="css-qp29m6">Table of Contents ↑</a></section><section class="css-lqzae9"><h2 class="section-header css-1xy3ebc"><a id="005-Error handling" href="https://www.nodecertification.com/#005-Error%20handling" class="css-1p38q07">005</a>Error handling</h2><p>Key competencies include; Common error handling patterns, handling errors in various scenarios.</p><ol class="css-1clnku3"><li class="css-49kyys"><a href="https://www.joyent.com/node-js/production/design/errors" class="css-155zjon"><span class="css-1hcskui">Error Handling in Node.js</span><span class="source css-twrbyd">joyent.com</span></a></li><li class="css-49kyys"><a href="https://levelup.gitconnected.com/the-definite-guide-to-handling-errors-gracefully-in-javascript-58424d9c60e6" class="css-155zjon"><span class="css-1hcskui">Handling Errors in JavaScript: The Definitive Guide</span><span class="source css-twrbyd">levelup.gitconnected.com</span></a></li><li class="css-49kyys"><a href="http://thecodebarbarian.com/unhandled-promise-rejections-in-node.js.html" class="css-155zjon"><span class="css-1hcskui">Unhandled Promise Rejections in Node.js</span><span class="source css-twrbyd">thecodebarbarian.com</span></a></li><li class="css-49kyys"><a href="https://medium.com/dailyjs/how-to-prevent-your-node-js-process-from-crashing-5d40247b8ab2" class="css-155zjon"><span class="css-1hcskui">How to prevent your Node.js process from crashing</span><span class="source css-twrbyd">medium.com</span></a></li><li class="css-49kyys"><a href="https://nodejs.org/dist/latest-v12.x/docs/api/errors.html" class="css-155zjon"><span class="css-5dzlcs">api docs</span><span class="css-1hcskui">Error documentation</span><span class="source css-twrbyd">nodejs.org</span></a></li><li class="css-49kyys"><a href="https://testingjavascript.com/" class="css-155zjon"><span class="css-1hcskui">testingjavascript.com</span><span class="source css-twrbyd">Kent C. Dodds, subscription required</span></a></li></ol><a href="https://www.nodecertification.com/#toc" class="css-qp29m6">Table of Contents ↑</a></section><section class="css-lqzae9"><h2 class="section-header css-1xy3ebc"><a id="006-Node.js CLI" href="https://www.nodecertification.com/#006-Node.js%20CLI" class="css-1p38q07">006</a>Node.js CLI</h2><p>Key competencies include; Understand and use node executable command line flags.</p><ol class="css-1clnku3"><li class="css-49kyys"><div class="css-155zjon"><span class="css-1hcskui">Run `man node` in your CLI to get a complete list of available options.</span><span class="source css-twrbyd"></span></div></li><li class="css-49kyys"><a href="https://blog.risingstack.com/mastering-the-node-js-cli-command-line-options/" class="css-155zjon"><span class="css-1hcskui">Mastering the Node.js CLI & Command Line Options</span><span class="source css-twrbyd">blog.risingstack.com</span></a></li><li class="css-49kyys"><a href="https://nodejs.org/dist/latest-v12.x/docs/api/cli.html" class="css-155zjon"><span class="css-5dzlcs">api docs</span><span class="css-1hcskui">Node.js CLI documentation</span><span class="source css-twrbyd">nodejs.org</span></a></li></ol><a href="https://www.nodecertification.com/#toc" class="css-qp29m6">Table of Contents ↑</a></section><section class="css-lqzae9"><h2 class="section-header css-1xy3ebc"><a id="007-Events" href="https://www.nodecertification.com/#007-Events" class="css-1p38q07">007</a>Events</h2><p>Key competencies include; Understand the event system, build event emitters, consume event emitters.</p><ol class="css-1clnku3"><li class="css-49kyys"><a href="https://www.freecodecamp.org/news/how-to-code-your-own-event-emitter-in-node-js-a-step-by-step-guide-e13b7e7908e1/" class="css-155zjon"><span class="css-1hcskui">How to code your own event emitter in Node.js: a step-by-step guide</span><span class="source css-twrbyd">freecodecamp.org</span></a></li><li class="css-49kyys"><a href="https://blog.logrocket.com/handling-and-dispatching-events-with-node-js/" class="css-155zjon"><span class="css-1hcskui">Handling and dispatching events with Node.js</span><span class="source css-twrbyd">blog.logrocket.com</span></a></li><li class="css-49kyys"><a href="https://nodejs.org/dist/latest-v12.x/docs/api/events.html" class="css-155zjon"><span class="css-5dzlcs">api docs</span><span class="css-1hcskui">Events documentation</span><span class="source css-twrbyd">nodejs.org</span></a></li></ol><a href="https://www.nodecertification.com/#toc" class="css-qp29m6">Table of Contents ↑</a></section><section class="css-lqzae9"><h2 class="section-header css-1xy3ebc"><a id="008-File system" href="https://www.nodecertification.com/#008-File%20system" class="css-1p38q07">008</a>File system</h2><p>Key competencies include; Input/output and watching files and directories.</p><ol class="css-1clnku3"><li class="css-49kyys"><a href="https://heynode.com/tutorial/what-fs-file-system-module" class="css-155zjon"><span class="css-1hcskui">What Is the fs File System Module?</span><span class="source css-twrbyd">heynode.com, subscription required</span></a></li><li class="css-49kyys"><a href="https://heynode.com/tutorial/readwrite-json-files-nodejs" class="css-155zjon"><span class="css-1hcskui">Read/Write JSON Files with Node.js</span><span class="source css-twrbyd">heynode.com</span></a></li><li class="css-49kyys"><a href="https://www.packtpub.com/web-development/node-cookbook-third-edition" class="css-155zjon"><span class="css-1vi6faz">book</span><span class="css-1hcskui">Node Cookbook, 3rd Edition - Chapter 3 - Coordinating IO</span><span class="source css-twrbyd">packtpub.com</span></a></li><li class="css-49kyys"><a href="https://nodejs.org/dist/latest-v12.x/docs/api/fs.html" class="css-155zjon"><span class="css-5dzlcs">api docs</span><span class="css-1hcskui">fs documentation</span><span class="source css-twrbyd">nodejs.org</span></a></li><li class="css-49kyys"><a href="https://www.github.com/workshopper/learnyounode" class="css-155zjon"><span class="css-63vhio">nodeschool</span><span class="css-1hcskui">learnyounode</span><span class="source css-twrbyd">github.com</span></a></li></ol><a href="https://www.nodecertification.com/#toc" class="css-qp29m6">Table of Contents ↑</a></section><section class="css-lqzae9"><h2 class="section-header css-1xy3ebc"><a id="009-JavaScript prerequisites" href="https://www.nodecertification.com/#009-JavaScript%20prerequisites" class="css-1p38q07">009</a>JavaScript prerequisites</h2><p>Key competencies include; Language fundamentals, scoped to core language features introduced since EcmaScript 1 and still heavily used today.</p><ol class="css-1clnku3"><li class="css-49kyys"><a href="https://www.javascriptstuff.com/learn-javascript/" class="css-155zjon"><span class="css-1hcskui">Most Recommended JavaScript Learning Resources</span><span class="source css-twrbyd">javascriptstuff.com</span></a></li><li class="css-49kyys"><a href="https://eloquentjavascript.net/" class="css-155zjon"><span class="css-1hcskui">eloquentjavascript.net</span><span class="source css-twrbyd">eloquentjavascript.net</span></a></li><li class="css-49kyys"><a href="https://github.com/getify/You-Dont-Know-JS" class="css-155zjon"><span class="css-1vi6faz">book</span><span class="css-1hcskui">You Don't Know JS</span><span class="source css-twrbyd">github.com</span></a></li><li class="css-49kyys"><a href="https://github.com/workshopper/scope-chains-closures" class="css-155zjon"><span class="css-63vhio">nodeschool</span><span class="css-1hcskui">scopes-chains-closures</span><span class="source css-twrbyd">github.com</span></a></li></ol><a href="https://www.nodecertification.com/#toc" class="css-qp29m6">Table of Contents ↑</a></section><section class="css-lqzae9"><h2 class="section-header css-1xy3ebc"><a id="010-Module system" href="https://www.nodecertification.com/#010-Module%20system" class="css-1p38q07">010</a>Module system</h2><p>Key competencies include; CommonJS Module System only (ES modules not introduced to Node core until after 10.x).</p><ol class="css-1clnku3"><li class="css-49kyys"><a href="https://heynode.com/tutorial/overview-nodes-module-system" class="css-155zjon"><span class="css-1hcskui">Overview: Node's Module System</span><span class="source css-twrbyd">heynode.com, subscription required</span></a></li><li class="css-49kyys"><a href="https://www.freecodecamp.org/news/requiring-modules-in-node-js-everything-you-need-to-know-e7fbd119be8/" class="css-155zjon"><span class="css-1hcskui">Requiring modules in Node.js: Everything you need to know</span><span class="source css-twrbyd">freecodecamp.org</span></a></li><li class="css-49kyys"><a href="https://www.packtpub.com/web-development/node-cookbook-third-edition" class="css-155zjon"><span class="css-1vi6faz">book</span><span class="css-1hcskui">Node Cookbook, 3rd Edition - Chapter 2- Writing Modules</span><span class="source css-twrbyd">packtpub.com</span></a></li><li class="css-49kyys"><a href="https://nodejs.org/dist/latest-v12.x/docs/api/modules.html" class="css-155zjon"><span class="css-5dzlcs">api docs</span><span class="css-1hcskui">module documentation</span><span class="source css-twrbyd">nodejs.org</span></a></li><li class="css-49kyys"><a href="https://www.github.com/workshopper/learnyounode" class="css-155zjon"><span class="css-63vhio">nodeschool</span><span class="css-1hcskui">learnyounode</span><span class="source css-twrbyd">github.com</span></a></li></ol><a href="https://www.nodecertification.com/#toc" class="css-qp29m6">Table of Contents ↑</a></section><section class="css-lqzae9"><h2 class="section-header css-1xy3ebc"><a id="011-Process/Operating system" href="https://www.nodecertification.com/#011-Process/Operating%20system" class="css-1p38q07">011</a>Process/Operating system</h2><p>Key competencies include; Controlling the process, and getting system data.</p><ol class="css-1clnku3"><li class="css-49kyys"><a href="https://blog.risingstack.com/mastering-the-node-js-core-modules-the-process-module/" class="css-155zjon"><span class="css-1hcskui">Mastering the Node.js Core Modules - The Process Module</span><span class="source css-twrbyd">blog.risingstack.com</span></a></li><li class="css-49kyys"><a href="https://nodejs.dev/the-nodejs-os-module" class="css-155zjon"><span class="css-1hcskui">The Node.js os module</span><span class="source css-twrbyd">nodejs.dev</span></a></li><li class="css-49kyys"><a href="https://www.packtpub.com/web-development/node-cookbook-third-edition" class="css-155zjon"><span class="css-1vi6faz">book</span><span class="css-1hcskui">Node Cookbook, 3rd Edition - Chapter 3 - Coordinating IO</span><span class="source css-twrbyd">packtpub.com</span></a></li><li class="css-49kyys"><a href="https://nodejs.org/dist/latest-v12.x/docs/api/os.html" class="css-155zjon"><span class="css-5dzlcs">api docs</span><span class="css-1hcskui">os documentation</span><span class="source css-twrbyd">nodejs.org</span></a></li><li class="css-49kyys"><a href="https://nodejs.org/dist/latest-v12.x/docs/api/process.html" class="css-155zjon"><span class="css-5dzlcs">api docs</span><span class="css-1hcskui">process documentation</span><span class="source css-twrbyd">nodejs.org</span></a></li></ol><a href="https://www.nodecertification.com/#toc" class="css-qp29m6">Table of Contents ↑</a></section><section class="css-lqzae9"><h2 class="section-header css-1xy3ebc"><a id="012-Package.json" href="https://www.nodecertification.com/#012-Package.json" class="css-1p38q07">012</a>Package.json</h2><p>Key competencies include; Package configuration, and dependency management.</p><ol class="css-1clnku3"><li class="css-49kyys"><a href="https://heynode.com/tutorial/what-packagejson" class="css-155zjon"><span class="css-1hcskui">What Is package.json?</span><span class="source css-twrbyd">heynode.com</span></a></li><li class="css-49kyys"><a href="https://heynode.com/tutorial/create-packagejson-file" class="css-155zjon"><span class="css-1hcskui">Create a package.json File</span><span class="source css-twrbyd">heynode.com</span></a></li><li class="css-49kyys"><a href="https://heynode.com/tutorial/install-npm-packages" class="css-155zjon"><span class="css-1hcskui">Install NPM Packages</span><span class="source css-twrbyd">heynode.com, subscription required</span></a></li><li class="css-49kyys"><a href="https://heynode.com/tutorial/what-semantic-versioning-semver" class="css-155zjon"><span class="css-1hcskui">What Is Semantic Versioning (SemVer)?</span><span class="source css-twrbyd">heynode.com</span></a></li><li class="css-49kyys"><a href="https://heynode.com/tutorial/what-are-npm-scripts" class="css-155zjon"><span class="css-1hcskui">What Are NPM Scripts?</span><span class="source css-twrbyd">heynode.com, subscription required</span></a></li><li class="css-49kyys"><a href="https://www.packtpub.com/web-development/node-cookbook-third-edition" class="css-155zjon"><span class="css-1vi6faz">book</span><span class="css-1hcskui">Node Cookbook, 3rd Edition - Chapter 2- Writing Modules</span><span class="source css-twrbyd">packtpub.com</span></a></li><li class="css-49kyys"><a href="https://github.com/workshopper/how-to-npm" class="css-155zjon"><span class="css-63vhio">nodeschool</span><span class="css-1hcskui">how-to-npm</span><span class="source css-twrbyd">github.com</span></a></li></ol><a href="https://www.nodecertification.com/#toc" class="css-qp29m6">Table of Contents ↑</a></section><section class="css-lqzae9"><h2 class="section-header css-1xy3ebc"><a id="013-Unit testing" href="https://www.nodecertification.com/#013-Unit%20testing" class="css-1p38q07">013</a>Unit testing</h2><p>Key competencies include; Using assertions, testing synchronous code, and testing asynchronous code.
The exam doesn't prescribe a specific framework; We recommend you pick one and learn it.</p><ol class="css-1clnku3"><li class="css-49kyys"><a href="https://github.com/mochajs/mocha" class="css-155zjon"><span class="css-1hcskui">Mocha</span><span class="source css-twrbyd">github.com</span></a></li><li class="css-49kyys"><a href="https://github.com/facebook/jest" class="css-155zjon"><span class="css-1hcskui">Jest</span><span class="source css-twrbyd">github.com</span></a></li><li class="css-49kyys"><a href="https://flaviocopes.com/jest/" class="css-155zjon"><span class="css-1hcskui">Testing JavaScript with Jest</span><span class="source css-twrbyd">flaviocopes.com</span></a></li><li class="css-49kyys"><a href="https://nodejs.org/dist/latest-v12.x/docs/api/assert.html" class="css-155zjon"><span class="css-5dzlcs">api docs</span><span class="css-1hcskui">assert documentation</span><span class="source css-twrbyd">nodejs.org</span></a></li><li class="css-49kyys"><a href="https://testingjavascript.com/" class="css-155zjon"><span class="css-1hcskui">testingjavascript.com</span><span class="source css-twrbyd">Kent C. Dodds, subscription required</span></a></li></ol><a href="https://www.nodecertification.com/#toc" class="css-qp29m6">Table of Contents ↑</a></section><h2 class="css-m6ul9v">Node.js Services Developer Certification (JSNSD)</h2><section class="css-lqzae9"><h2 class="section-header css-1xy3ebc"><a id="001-Servers and Services" href="https://www.nodecertification.com/#001-Servers%20and%20Services" class="css-1p38q07">001</a>Servers and Services</h2><p>Key competencies include; Implementing public facing web servers, creating RESTful services, consuming HTTP services, knowledge of HTTP verbs and status codes, and processing user input.
Resources coming soon ...</p><ol class="css-1clnku3"></ol><a href="https://www.nodecertification.com/#toc" class="css-qp29m6">Table of Contents ↑</a></section><section class="css-lqzae9"><h2 class="section-header css-1xy3ebc"><a id="002-Security" href="https://www.nodecertification.com/#002-Security" class="css-1p38q07">002</a>Security</h2><p>Key competencies include; Protecting against malicious input, and attack mitigation.
Resources coming soon ...</p><ol class="css-1clnku3"></ol><a href="https://www.nodecertification.com/#toc" class="css-qp29m6">Table of Contents ↑</a></section></div><style data-emotion-css="1rpo1du">.css-1rpo1du{background-color:var(--theme-ui-colors-primary,#4C8BFF);display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;margin:2em 0;padding:0;}@media screen and (min-width:959px){.css-1rpo1du{-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;}}</style><style data-emotion-css="1ia6ubm">.css-1ia6ubm{padding:2em 1em;text-align:center;background-color:var(--theme-ui-colors-primary,#4C8BFF);display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;margin:2em 0;padding:0;}@media screen and (min-width:959px){.css-1ia6ubm{-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;}}</style><div class="css-1ia6ubm"><style data-emotion-css="mklsuf">.css-mklsuf{background-color:#d2e2ff;padding:1em;}</style><div class="css-mklsuf"><style data-emotion-css="h837lw">.css-h837lw{max-width:600px;margin-left:auto;margin-right:auto;padding-left:2em;padding-right:2em;}</style><p class="css-h837lw"><strong>Sign up for our mailing list:</strong> <!-- -->No fluff - just useful information on release days for new tutorials and blogs.</p><style data-emotion-css="1somek7">.css-1somek7{border-color:var(--theme-ui-colors-secondary,#FE6469);color:var(--theme-ui-colors-secondary,#FE6469);}.css-1somek7:hover{color:var(--theme-ui-colors-secondary,#FE6469);}</style><style data-emotion-css="yu0ybq">.css-yu0ybq{background-size:0px 0px;border:1px solid white;border-radius:6px;color:white;display:inline-block;font-size:1.4em;margin:1em;min-width:250px;padding:0 0.5em;text-align:center;-webkit-transition:all .2s ease-out;transition:all .2s ease-out;border-color:var(--theme-ui-colors-secondary,#FE6469);color:var(--theme-ui-colors-secondary,#FE6469);}.css-yu0ybq:after{content:"→";padding:0 0.5em;}.css-yu0ybq:hover:after{padding:0 0 0 1em;}.css-yu0ybq:hover{color:var(--theme-ui-colors-secondary,#FE6469);}</style><style data-emotion-css="gxnqqz">.css-gxnqqz{color:white;background:linear-gradient(to bottom,#fff 0%,#fff 100%);background-position:0 100%;background-repeat:repeat-x;background-size:1px 1px;-webkit-text-decoration:none;text-decoration:none;-webkit-transition:background-size .2s;transition:background-size .2s;background-size:0px 0px;border:1px solid white;border-radius:6px;color:white;display:inline-block;font-size:1.4em;margin:1em;min-width:250px;padding:0 0.5em;text-align:center;-webkit-transition:all .2s ease-out;transition:all .2s ease-out;border-color:var(--theme-ui-colors-secondary,#FE6469);color:var(--theme-ui-colors-secondary,#FE6469);}.css-gxnqqz:hover{background-size:4px 100%;color:var(--theme-ui-colors-primary,#4C8BFF);}.css-gxnqqz:after{content:"→";padding:0 0.5em;}.css-gxnqqz:hover:after{padding:0 0 0 1em;}.css-gxnqqz:hover{color:var(--theme-ui-colors-secondary,#FE6469);}</style><a href="https://heynode.com/signup" class="css-gxnqqz">Sign up now</a></div><style data-emotion-css="15kbn0m">.css-15kbn0m{background-color:var(--theme-ui-colors-primary,#4C8BFF);color:white;padding:1em;}.css-15kbn0m a{color:white;}</style><div class="css-15kbn0m"><style data-emotion-css="18lglfx">.css-18lglfx{max-width:600px;margin-left:auto;margin-right:auto;}</style><p class="css-18lglfx">Missing content? Ideas for better tutorials? Email us at <style data-emotion-css="qno5r5">.css-qno5r5{color:white;background:linear-gradient(to bottom,#fff 0%,#fff 100%);background-position:0 100%;background-repeat:repeat-x;background-size:1px 1px;-webkit-text-decoration:none;text-decoration:none;-webkit-transition:background-size .2s;transition:background-size .2s;}.css-qno5r5:hover{background-size:4px 100%;color:var(--theme-ui-colors-primary,#4C8BFF);}</style><a href="mailto:[email protected]" class="css-qno5r5">[email protected]</a>, or tweet at us <a href="https://twitter.com/heynode" class="css-qno5r5">@HeyNode</a>.</p></div></div></main><style data-emotion-css="1tx4hnt">.css-1tx4hnt{background-color:var(--theme-ui-colors-primary,#4C8BFF);border-top:10px solid #d2e2ff;color:white;}.css-1tx4hnt a{color:white;}</style><footer class="css-1tx4hnt"><style data-emotion-css="famvfh">.css-famvfh{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;text-align:left;padding:4em;}@media screen and (min-width:959px){.css-famvfh{-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;}}.css-famvfh > *{margin:1em 0;}@media screen and (min-width:959px){.css-famvfh > *{margin:0 1em;}}</style><style data-emotion-css="1gqcnim">.css-1gqcnim{padding:2em 1em;text-align:center;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;text-align:left;padding:4em;}@media screen and (min-width:959px){.css-1gqcnim{-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;}}.css-1gqcnim > *{margin:1em 0;}@media screen and (min-width:959px){.css-1gqcnim > *{margin:0 1em;}}</style><div class="css-1gqcnim"><style data-emotion-css="6kvxjb">.css-6kvxjb{margin-right:4em;}</style><a href="https://osiolabs.com/" class="css-6kvxjb"><img class="logo" src="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNTciIGhlaWdodD0iMzQiPjxwYXRoIGQ9Ik0xNS42MzYgMTEuNzY5YTEuNDUgMS40NSAwIDAxLS43NTcgMS4yNjRsLTEuNDE0Ljc4N2MtLjQ2OS4yNi0xLjA0Ni4yNi0xLjUxNCAwbC0xLjQxNC0uNzg3YTEuNDUgMS40NSAwIDAxLS43NTctMS4yNjR2LTEuNTc1YzAtLjUyMS4yODktMS4wMDMuNzU3LTEuMjY0bDEuNDE0LS43ODdhMS41NjMgMS41NjMgMCAwMTEuNTE0IDBsMS40MTQuNzg3Yy40NjguMjYxLjc1Ny43NDMuNzU3IDEuMjY0djEuNTc1em00LjA4LTcuMTZjMCAuNDctLjI2LjkwMy0uNjgxIDEuMTM3bC0xLjM3NC43NjZjLS40MjIuMjM0LS45NDEuMjM0LTEuMzYzIDBsLTEuMzc0LS43NjZhMS4zMDYgMS4zMDYgMCAwMS0uNjgxLTEuMTM3di0xLjUzYzAtLjQ3LjI2LS45MDMuNjgtMS4xMzhsMS4zNzUtLjc2NWMuNDIyLS4yMzUuOTQxLS4yMzUgMS4zNjMgMGwxLjM3NC43NjVjLjQyMi4yMzUuNjgxLjY2OC42ODEgMS4xMzh2MS41M3pNNy4wOTEgMTEuNzEyYzAgLjQxNy0uMjMuODAzLS42MDUgMS4wMTFsLTEuMzM1Ljc0NGExLjI1IDEuMjUgMCAwMS0xLjIxIDBsLTEuMzM2LS43NDRBMS4xNiAxLjE2IDAgMDEyIDExLjcxM3YtMS40ODdjMC0uNDE3LjIzLS44MDIuNjA1LTEuMDExbDEuMzM1LS43NDNhMS4yNSAxLjI1IDAgMDExLjIxMSAwbDEuMzM1Ljc0M2MuMzc1LjIwOS42MDUuNTk0LjYwNSAxLjAxMXYxLjQ4NnptMy43LTcuMTQ0YzAgLjM2NS0uMjAyLjcwMi0uNTMuODg0bC0xLjI5NS43MjJhMS4wOTQgMS4wOTQgMCAwMS0xLjA2IDBsLTEuMjk1LS43MjJhMS4wMTYgMS4wMTYgMCAwMS0uNTMtLjg4NFYzLjEyNmMwLS4zNjUuMjAyLS43MDMuNTMtLjg4NWwxLjI5NS0uNzIxYTEuMDk0IDEuMDk0IDAgMDExLjA2IDBsMS4yOTUuNzJjLjMyOC4xODMuNTMuNTIuNTMuODg2djEuNDQyem0tNi42MjcgMTIuM2MwLS43MDMuMzg5LTEuMzUxIDEuMDItMS43MDJsMi4yMzQtMS4yNDFjLjYzLS4zNSAxLjQwNi0uMzUgMi4wMzUuMDAxbDIuMjM3IDEuMjQ1Yy42My4zNSAxLjQwNi4zNSAyLjAzNiAwbDIuMjM2LTEuMjQ0Yy42My0uMzUxIDEuMDE4LTEgMS4wMTgtMS43MDFWOS43MzdjMC0uNzAyLjM4OC0xLjM1IDEuMDE4LTEuN2wyLjIzNi0xLjI0NmMuNjMtLjM1IDEuNDA3LS4zNSAyLjAzNyAwbDYuMjUgMy40NzhhMi40NCAyLjQ0IDAgMDExLjI3NCAyLjEyNlYyMy44M2EyLjQ0IDIuNDQgMCAwMS0xLjI3MyAyLjEyNWwtMTAuMjY5IDUuNzE3YTIuNjI4IDIuNjI4IDAgMDEtMi41NDUgMEw1LjQzNyAyNS45NTRhMi40NCAyLjQ0IDAgMDEtMS4yNzMtMi4xMjZ2LTYuOTZ6bTcwLjMyMSAxMS43MjVINzJhLjQ0NS40NDUgMCAwMS0uNDUyLS40MzdWMTMuNzUyYzAtLjI0MS4yMDMtLjQzNy40NTItLjQzN2gyLjQ4NWMuMjUgMCAuNDUyLjE5Ni40NTIuNDM3djE0LjQwNGEuNDQ0LjQ0NCAwIDAxLS40NTIuNDM3em0uODI0LTE5LjY0YzAgMS4xMDYtLjkyNSAyLjAwMS0yLjA2NiAyLjAwMS0xLjE0MiAwLTIuMDY3LS44OTUtMi4wNjctMiAwLTEuMTA2LjkyNS0yLjAwMSAyLjA2Ny0yLjAwMSAxLjE0MSAwIDIuMDY2Ljg5NSAyLjA2NiAyem0tOS40NTMgMTUuMzMyYzAtMy4wODgtNy43MDUtMi4xMTctNy43MDUtNy4xMzQgMC0yLjc3NyAyLjY5NS00LjIwNSA1LjU2My00LjIwNSAxLjc1NSAwIDMuMDkyLjM3NyAzLjk3My43NC4yMTcuMDkuMzI0LjMyNy4yNDguNTQzbC0uNTczIDEuNjNhLjQ1NS40NTUgMCAwMS0uNjA2LjI2Yy0uNzczLS4zMjctMS45NDEtLjczMy0yLjk3My0uNzMzLTEuMzk1IDAtMi4zNS43MjYtMi4zNSAxLjcwNiAwIDIuNTQzIDcuNjcgMi4xNDEgNy42NyA2LjgyNSAwIDIuNDAxLTEuNzk2IDUuMDU4LTYuMDEyIDUuMDU4LTIuNjggMC00LjI4NS0uNjUtNS4xNi0xLjE0MmEuNDI5LjQyOSAwIDAxLS4xOTgtLjUxM2wuNTk5LTEuNzY0YS40NTcuNDU3IDAgMDEuNjctLjIzM2MuNzA2LjQzIDIuMTMxIDEuMTM2IDMuODgyIDEuMTM2IDIuMTA2IDAgMi45NzItMS4wNTYgMi45NzItMi4xNzR6bTE4Ljk1IDIuMDMzYzIuNDY1IDAgMy40LTEuOTc1IDMuNC01LjM1N3MtLjkzNS01LjM1OC0zLjQtNS4zNThjLTIuNDY0IDAtMy4zOTkgMS45NzYtMy4zOTkgNS4zNTggMCAzLjM4Mi45MzUgNS4zNTcgMy40IDUuMzU3em0wLTEzLjM3MmM0LjQzOCAwIDYuOTMyIDIuOTU1IDYuOTMyIDguMDE1IDAgNS4wNi0yLjQ5NCA4LjAxNS02LjkzMiA4LjAxNS00LjQzNyAwLTYuOTMxLTIuOTU1LTYuOTMxLTguMDE1IDAtNS4wNiAyLjQ5NC04LjAxNSA2LjkzMS04LjAxNXpNNDcuOTQgMjYuMTI2YzIuODMzIDAgNC42MjUtMS45NiA0LjYyNS04LjE2MiAwLTYuMjAyLTEuNzkyLTguMTYyLTQuNjI1LTguMTYyLTIuODMyIDAtNC42MjQgMS45Ni00LjYyNCA4LjE2MiAwIDYuMjAyIDEuNzkyIDguMTYyIDQuNjI0IDguMTYyem0wLTE5LjE3NGM1LjAzNiAwIDguMzggMy43OTYgOC4zOCAxMS4wMTIgMCA3LjIxNi0zLjM0NCAxMS4wMTItOC4zOCAxMS4wMTItNS4wMzUgMC04LjM3OS0zLjc5Ni04LjM3OS0xMS4wMTIgMC03LjIxNiAzLjM0NC0xMS4wMTIgOC4zOC0xMS4wMTJ6bTYyLjg3NCAxOC41MjdjLjI1IDAgLjQ1Mi4xOTUuNDUyLjQzN3YyLjI0YS40NDQuNDQ0IDAgMDEtLjQ1Mi40MzdIMTAwLjA0YS40NDUuNDQ1IDAgMDEtLjQ1Mi0uNDM3VjcuNzczYzAtLjI0Mi4yMDMtLjQzNy40NTItLjQzN2gyLjc4NmMuMjUgMCAuNDUyLjE5NS40NTIuNDM3djE3LjcwNmg3LjUzNnptNDEuOTM4LTEuMTk0YzAtMy4wODgtNy43MDQtMi4xMTctNy43MDQtNy4xMzQgMC0yLjc3NyAyLjY5NS00LjIwNSA1LjU2Mi00LjIwNSAxLjc1NiAwIDMuMDkzLjM3NyAzLjk3NC43NC4yMTcuMDkuMzI0LjMyNy4yNDguNTQzbC0uNTczIDEuNjNhLjQ1NS40NTUgMCAwMS0uNjA3LjI2Yy0uNzcyLS4zMjctMS45NC0uNzMzLTIuOTczLS43MzMtMS4zOTQgMC0yLjM0OS43MjYtMi4zNDkgMS43MDYgMCAyLjU0MyA3LjY3IDIuMTQxIDcuNjcgNi44MjUgMCAyLjQwMS0xLjc5NyA1LjA1OC02LjAxMiA1LjA1OC0yLjY4IDAtNC4yODUtLjY1LTUuMTYtMS4xNDJhLjQzLjQzIDAgMDEtLjE5OS0uNTEzbC42LTEuNzY0YS40NTcuNDU3IDAgMDEuNjctLjIzM2MuNzA2LjQzIDIuMTMgMS4xMzYgMy44ODIgMS4xMzYgMi4xMDYgMCAyLjk3MS0xLjA1NiAyLjk3MS0yLjE3NHptLTMwLjc2NC4yNzZ2LTIuMjc0cy0xLjQyMy0xLjIxMi0zLjIxLTEuMjEyLTIuNzg4IDEuMTM0LTIuNzg4IDIuNjU1YzAgMS41MiAxLjAxNyAyLjcyNiAyLjg3NSAyLjcyNiAxLjg1NyAwIDMuMTIzLTEuODk1IDMuMTIzLTEuODk1em0tMi42MDQtMTEuNjE1YzMuNTQgMCA1Ljk5MiAyLjA4IDUuOTkyIDQuMjA3djExLjAwM2EuNDQ1LjQ0NSAwIDAxLS40NTEuNDM3aC0yLjM0OGEuNDQ2LjQ0NiAwIDAxLS40NS0uMzkzbC0uMTQtMS4zMzJzLTEuNDIyIDIuMTA4LTQuNjA3IDIuMTA4Yy0yLjYgMC00LjkxLTEuODAzLTQuOTEtNC45NTggMC0yLjc0OSAyLjAzMy01LjI0MyA1LjY3Ny01LjI0MyAyLjQxOCAwIDMuODQgMS4yMzkgMy44NCAxLjIzOXYtMS4zMTdjMC0xLjYzLS43NzctMi45NzctMy4xOS0yLjk3Ny0xLjgyMiAwLTMuNzIuNTk2LTQuNTQyLjg4OGEuNDU2LjQ1NiAwIDAxLS41NzgtLjI1OGwtLjY1My0xLjY5M2EuNDMzLjQzMyAwIDAxLjI0LS41NTJjLjg0NC0uMzY1IDMuMDM1LTEuMTU5IDYuMTItMS4xNTl6TTEzNS42ODIgMjYuNGMyLjMwNiAwIDMuMjI4LTIuNzgzIDMuMjI4LTUuODMzIDAtMi43ODYtMS4wNzItNS4xMDQtMy4zMDctNS4xMDQtMS43NjUgMC0zLjE1IDEuNDY1LTMuMzM1IDMuNjV2My41NjRjMCAxLjI0NiAxLjA0NyAzLjcyMyAzLjQxNCAzLjcyM3ptLjYzMi0xMy40NTRjNC40MDIgMCA2LjEyNSAzLjU1NCA2LjEyNSA3LjYyMSAwIDUuMDUtMi41MDYgOC40MDktNS44NTggOC40MDktMi45OCAwLTQuMzEzLTIuMTEzLTQuMzEzLTIuMTEzdi0uMDQ4YS40MjQuNDI0IDAgMDEtLjAxLjA5NGwtLjMwMyAxLjM0YS40NDguNDQ4IDAgMDEtLjQ0MS4zNDRoLTIuMTgyYS40NDQuNDQ0IDAgMDEtLjQ1Mi0uNDM3VjcuODY0YzAtLjE1Ni4wODYtLjMuMjI2LS4zNzhsMS45MjEtMS4wNzZhLjkyNS45MjUgMCAwMS40NTItLjExN2guMzM4Yy4yNSAwIC40NTEuMTk1LjQ1MS40Mzd2OC42MzlzLjkzLTIuNDIzIDQuMDQ2LTIuNDIzeiIgZmlsbD0iI0ZGRiIgZmlsbC1ydWxlPSJldmVub2RkIi8+PC9zdmc+" alt="Osio Labs, Inc."></a><style data-emotion-css="1qj1lf2">.css-1qj1lf2{margin-left:0;margin-right:0;}@media screen and (min-width:959px){.css-1qj1lf2{margin-left:2em;margin-right:2em;}}</style><p class="css-1qj1lf2">Previously Lullabot Education, we're now<!-- --> <a href="https://osiolabs.com/">Osio Labs</a> — Open Source Inside and Out. We're on a mission to empower anyone to build websites using open source tools. We teach the technology and support the open source projects and communities that make it all possible.</p><p>For over 10 years, we've been publishing tutorials, conducting workshops, supporting events, contributing code and documentation, and working in a variety of open source community leadership roles. Our site <a href="https://drupalize.me/">Drupalize.Me</a> is the leading provider of Drupal training services.</p></div><style data-emotion-css="mhq6e">.css-mhq6e{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;text-align:left;padding:4em;}.css-mhq6e > *{margin:1em 0;}@media screen and (min-width:959px){.css-mhq6e > *{margin:0 1em;}}</style><style data-emotion-css="k0h5oe">.css-k0h5oe{padding:2em 1em;text-align:center;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;text-align:left;padding:4em;}.css-k0h5oe > *{margin:1em 0;}@media screen and (min-width:959px){.css-k0h5oe > *{margin:0 1em;}}</style><div class="css-k0h5oe"><div>2020<!-- --> © Osio Labs, Inc.<!-- --> <!-- --> · <!-- --> <a href="https://heynode.com/blog">Blog</a> <!-- --> · <!-- --> <a href="https://osiolabs.com/terms-conditions">Terms of use</a> <!-- --> · <!-- --> <a href="https://osiolabs.com/privacy">Privacy</a></div></div></footer></div></div></div><script id="gatsby-script-loader">/*<![CDATA[*/window.pagePath="/";/*]]>*/</script><script id="gatsby-chunk-mapping">/*<![CDATA[*/window.___chunkMapping={"app":["/app-abf37dd90922f7fee0a4.js"],"component---src-pages-404-js":["/component---src-pages-404-js-714118e475876b51da01.js"],"component---src-pages-index-jsx":["/component---src-pages-index-jsx-61547c2c3e6c5a4048c5.js"]};/*]]>*/</script><script src="https://www.nodecertification.com/webpack-runtime-83efacb6ca5f37530c17.js" async=""></script><script src="https://www.nodecertification.com/styles-9ade9d12e2792682a70f.js" async=""></script><script src="https://www.nodecertification.com/app-abf37dd90922f7fee0a4.js" async=""></script><script src="https://www.nodecertification.com/commons-032a235d46e80408f9cc.js" async=""></script><script src="https://www.nodecertification.com/component---src-pages-index-jsx-61547c2c3e6c5a4048c5.js" async=""></script></div><span id="buffer-extension-hover-button" style="display: none; position: absolute; z-index: 8675309; width: 100px; height: 25px; background-image: url("chrome-extension://noojglkidnpfjbincgijbaiedldjfbhh/data/shared/img/[email protected]"); background-size: 100px 25px; opacity: 0.9; cursor: pointer;"></span></body></html>