{"componentChunkName":"component---src-templates-page-jsx","path":"/javascript/nodejs","result":{"data":{"mdx":{"id":"fa6c334f-eb07-5901-9bcf-7af0f6144521","body":"var _excluded = [\"components\"];\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\n/* @jsxRuntime classic */\n\n/* @jsx mdx */\nvar _frontmatter = {\n  \"title\": \"Node.js\",\n  \"tags\": [\"Node.js\", \"npm\", \"node\", \"bundlers\", \"packages\", \"js\"],\n  \"image\": \"/recommends-javascript-cover.png\",\n  \"icon\": \"🌶\"\n};\nvar layoutProps = {\n  _frontmatter: _frontmatter\n};\nvar MDXLayout = \"wrapper\";\nreturn function MDXContent(_ref) {\n  var components = _ref.components,\n      props = _objectWithoutProperties(_ref, _excluded);\n\n  return mdx(MDXLayout, _extends({}, layoutProps, props, {\n    components: components,\n    mdxType: \"MDXLayout\"\n  }), mdx(\"p\", null, mdx(\"a\", {\n    parentName: \"p\",\n    \"href\": \"https://nodejs.org/en/\"\n  }, \"Node.js\"), \" is an open-source, cross-platform, back-end JavaScript runtime environment that runs on the V8 engine and executes JavaScript code outside a web browser.\\nNode.js lets developers use JavaScript to write command line tools and for server-side scripting\\u2014running scripts server-side to produce dynamic web page content before the page is sent to the user's web browser.\\nConsequently, Node.js represents a \\\"JavaScript everywhere\\\" paradigm, unifying web-application development around a single programming language, rather than different languages for server-side and client-side scripts.\"), mdx(\"p\", null, \"Node.js has an event-driven architecture capable of asynchronous I/O.\\nThese design choices aim to optimize throughput and scalability in web applications with many input/output operations, as well as for real-time Web applications.\", mdx(\"br\", {\n    parentName: \"p\"\n  }), \"\\n\", mdx(\"a\", {\n    parentName: \"p\",\n    \"href\": \"https://en.wikipedia.org/wiki/Node.js\"\n  }, \"Source\")), mdx(\"h2\", {\n    \"id\": \"package-managers\"\n  }, \"Package Managers\"), mdx(\"p\", null, \"When working with Node.js you will probably use the \", mdx(\"a\", {\n    parentName: \"p\",\n    \"href\": \"https://www.npmjs.com/\"\n  }, \"npm\"), \" package manager to install and manage your dependencies,\\nor you will use the \", mdx(\"a\", {\n    parentName: \"p\",\n    \"href\": \"https://yarnpkg.com/\"\n  }, \"yarn\"), \" package manager, which also uses the npm registry.\\nIt is also possible link a package to a github repository and use it as a dependency, but this is not recommended.\"), mdx(\"h2\", {\n    \"id\": \"bundlers\"\n  }, \"Bundlers\"), mdx(\"p\", null, \"When using Node.js you will probably use a bundler to bundle your code and to manage your dependencies.\\nWhy is this a good idea?\\nNode.js comes with a lot of modules and a lot of them won't be used in your application.\\nA bundler will help you to manage your dependencies and to avoid loading the unused ones.\\nThis is a critical step in the development process because you will always try to ship a little code as possible, to reduce the size of your application and therefore the time it takes to load it.\\nSo here is a list of the most popular bundlers:\"), mdx(\"ul\", null, mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"a\", {\n    parentName: \"li\",\n    \"href\": \"https://webpack.js.org/\"\n  }, \"Webpack\")), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"a\", {\n    parentName: \"li\",\n    \"href\": \"https://rollupjs.org/\"\n  }, \"Rollup\")), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"a\", {\n    parentName: \"li\",\n    \"href\": \"https://parceljs.org/\"\n  }, \"Parcel\")), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"a\", {\n    parentName: \"li\",\n    \"href\": \"https://vitejs.dev/\"\n  }, \"Vite.js\")), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"a\", {\n    parentName: \"li\",\n    \"href\": \"https://esbuild.github.io/\"\n  }, \"ESBuild\")), mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"a\", {\n    parentName: \"li\",\n    \"href\": \"http://browserify.org/\"\n  }, \"Browserify\"))), mdx(\"h2\", {\n    \"id\": \"useful-packages\"\n  }, \"Useful Packages\"), mdx(\"p\", null, \"Here are only a few package listed since it is impossible to include every good one.\\nAlso, from here on out every JavaScript Framework I mention in this collection is available on npm or should be used in combination Node.js.\\nHopefully this list will grow over time as more of the community will contribute to the list.\"), mdx(\"h3\", {\n    \"id\": \"express\"\n  }, \"Express\"), mdx(\"ul\", null, mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"a\", {\n    parentName: \"li\",\n    \"href\": \"https://expressjs.com/\"\n  }, \"Express\"), \" is a minimal and flexible Node.js web application framework that provides a robust set of features for web and mobile applications.\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"With a myriad of HTTP utility methods and middleware at your disposal, creating a robust API is quick and easy.\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"Express provides a thin layer of fundamental web application features, without obscuring Node.js features that you know and love.\")), mdx(\"h3\", {\n    \"id\": \"koa\"\n  }, \"Koa\"), mdx(\"ul\", null, mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"a\", {\n    parentName: \"li\",\n    \"href\": \"https://koajs.com/\"\n  }, \"Koa\"), \" is a new web framework designed by the team behind Express, which aims to be a smaller, more expressive, and more robust foundation for web applications and APIs.\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"By leveraging async functions, Koa allows you to ditch callbacks and greatly increase error-handling.\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"Koa does not bundle any middleware within its core, and it provides an elegant suite of methods that make writing servers fast and enjoyable.\")), mdx(\"h3\", {\n    \"id\": \"socketio\"\n  }, \"Socket.io\"), mdx(\"ul\", null, mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"a\", {\n    parentName: \"li\",\n    \"href\": \"https://socket.io/\"\n  }, \"Socket.io\"), \" is a realtime application framework (RTF) that enables real-time bidirectional event-based communication.\")), mdx(\"h3\", {\n    \"id\": \"prettier\"\n  }, \"Prettier\"), mdx(\"ul\", null, mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"a\", {\n    parentName: \"li\",\n    \"href\": \"https://prettier.io/\"\n  }, \"Prettier\"), \" is an opinionated code formatter.\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"It will format your code to be as close to the style guide as possible, without breaking your code.\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"It will also add semicolons to your code, if you don't have them.\")), mdx(\"h3\", {\n    \"id\": \"eslint\"\n  }, \"ESLint\"), mdx(\"ul\", null, mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"a\", {\n    parentName: \"li\",\n    \"href\": \"https://eslint.org/\"\n  }, \"ESLint\"), \" is a pluggable linting utility for JavaScript.\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"It is a Node.js utility that can automatically maintain your code quality.\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"It can be used as a formatter for your editor.\")), mdx(\"h3\", {\n    \"id\": \"lo-dash\"\n  }, \"Lo-Dash\"), mdx(\"ul\", null, mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"a\", {\n    parentName: \"li\",\n    \"href\": \"https://lodash.com/\"\n  }, \"Lo-Dash\"), \" is a utility library for JavaScript.\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"It provides a set of helper functions to make JavaScript easier to work with.\")), mdx(\"h3\", {\n    \"id\": \"underscorejs\"\n  }, \"Underscore.js\"), mdx(\"ul\", null, mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"a\", {\n    parentName: \"li\",\n    \"href\": \"https://underscorejs.org/\"\n  }, \"Underscore\"), \" is a utility-belt library for JavaScript that provides a lot of the functional programming support that you would expect in Prototype.js, but without extending any of the built-in JavaScript objects.\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"It is also the best-known library for functional programming in JavaScript.\")), mdx(\"h3\", {\n    \"id\": \"hapijs\"\n  }, \"Hapi.js\"), mdx(\"ul\", null, mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"a\", {\n    parentName: \"li\",\n    \"href\": \"https://hapijs.com/\"\n  }, \"Hapi.js\"), \" is designed to be a simple and secure, yet powerful, way to build modern web applications and services.\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"Originally developed to handle Walmart\\u2019s Black Friday scale, hapi continues to be the proven choice for enterprise-grade backend needs.\")), mdx(\"h3\", {\n    \"id\": \"momentjs\"\n  }, \"Moment.js\"), mdx(\"ul\", null, mdx(\"li\", {\n    parentName: \"ul\"\n  }, mdx(\"a\", {\n    parentName: \"li\",\n    \"href\": \"https://momentjs.com/\"\n  }, \"Moment.js\"), \" is a JavaScript date library for parsing, validating, manipulating, and formatting dates.\"), mdx(\"li\", {\n    parentName: \"ul\"\n  }, \"It is a very popular library for date manipulation.\")), mdx(\"p\", null, \"and many more coming soon...\", mdx(\"br\", {\n    parentName: \"p\"\n  }), \"\\n\", \"You can find more great package on \", mdx(\"a\", {\n    parentName: \"p\",\n    \"href\": \"https://github.com/sindresorhus/awesome-nodejs\"\n  }, \"Awesome Node.js\")));\n}\n;\nMDXContent.isMDXComponent = true;","excerpt":"Node.js  is an open-source, cross-platform, back-end JavaScript runtime environment that runs on the V8 engine and executes JavaScript code outside a web browser.\nNode.js lets developers use JavaScript to write command line tools and for server-side…","slug":"javascript/nodejs","tableOfContents":{"items":[{"url":"#package-managers","title":"Package Managers"},{"url":"#bundlers","title":"Bundlers"},{"url":"#useful-packages","title":"Useful Packages","items":[{"url":"#express","title":"Express"},{"url":"#koa","title":"Koa"},{"url":"#socketio","title":"Socket.io"},{"url":"#prettier","title":"Prettier"},{"url":"#eslint","title":"ESLint"},{"url":"#lo-dash","title":"Lo-Dash"},{"url":"#underscorejs","title":"Underscore.js"},{"url":"#hapijs","title":"Hapi.js"},{"url":"#momentjs","title":"Moment.js"}]}]},"frontmatter":{"tags":["Node.js","npm","node","bundlers","packages","js"],"title":"Node.js","image":"/recommends-javascript-cover.png","chapter":null,"icon":"🌶"}}},"pageContext":{"slug":"javascript/nodejs"}},"staticQueryHashes":["3593046716"]}