Install package.json dependencies. # install npm i # uninstall. NodeJs Cheat Sheet gvanto / February 12, 2018 NodeJs is a very powerful web development language, built upon the V8 engine, NodeJs is renowned for it’s speed and offers the added benefit of giving developers one language to code on both front – and backends with! Node & V8 background. Node.js cheatsheet EventEmitter. EventEmitter is a Node native class containing a set of methods to operate on the events. Node comes with a full support for setting up a HTTP server. With a few lines of code you can build a simple web. Each file in your Node application. Website – Cheat Sheet; Plugin – Overview Menu Toggle. Plugins; Animation – Cheat Sheet → Animation; SEO → SEO; NodeJS – Cheat Sheet → NodeJS; Design – Cheat Sheet → Design; Ideas Menu Toggle. Plans; Writing; Project Management → Project Manager Page; Menu Toggle. SprUng; Cheat Sheets All; AWS EC2; Coding.
- Setup (Node, NVM, and NPM)
- Module System
Node.js (Node) is an open source runtime environment backed by a huge developer community. It is often used to prototype web services and backends. Using Node, developers can reusefront-end skills and libraries for the backend. This post is a cheatsheet of common Node tools, commands, concepts, and techniques.
Node Version Manager (NVM)
Node evolves quickly and sometimes new releases break backward compatibility. Thus, you may need to maintain and switch between different versions. The Node Version Manager (NVM) comes to the rescue.Like Ruby’s rvm and Python’s pyenv,NVM allows us to work with multiple Node environments. You can install it from here.
The following commands list all available versions:
Here is how to install new Node versions:
When installing a new Node version, you may want to migrate existingglobal Node packages. This will ensure they’re compatible wit the new version.To do so, use the --reinstall-packages-from=node
option:
Switching to another installed version goes like this:
The Node Package Manager (NPM)
NPM is Node’s default package manager and is similar to Ruby’sBundler and Python’s PIP.It comes preinstalled with Node. To create a new project in a folder:
This will create a package.json
file which contains all project dependecies and metadata. It can also include a scripts
section which predefines command aliases. Here is an example of a package.json
file:
Given this sample, we can run the test
command alias as follows:
You can modify the package.json
file manually, or add new dependencies via the npm install
command with the --save
flag:
We can also install a library as a “dev” dependency with the --save-dev
flag.This is useful for tools which we won’t need in production – e.g. testing libraries. Such dependencies are defined in thedevDependencies
section of the packages.json
.
All modules are stored in the ./node_modules
folder and it shouldbe in your .gitignore
. You can reinstall all modules with: npm install
.
NPM alllows the installation of global packages. They are not placed in ./node_modules
and are shared across all Node environments. In general, you should avoid global packages except for global utilitieslike debuggers, compilers, and performance monitoring tools. The -g
flag denotesthat a package is installed globally:
Run, Debug, and Reload
A Node interpreter (REPL) can be started with the node
command.This opens up a REPL for running Node commands interactively. To quit we need to type .exit
:
Node Js Express Cheat Sheet Pdf
Within a Node project folder, you can execute a Node script, which is a JavaScript file.To debug, use the debug
parameter, which starts the script in debug mode. Then you can step through thecode via the continue (c
), step over/next(n
), and step into (s
)commands. The repl
command allows you to check the values ofvariables and expressions in the respective context. Breakpointsare put directly in the code as debugger
statements:
Node does not automatically refresh/reload upon code changesand needs to be restarted. Hence, it is convenient to use the nodemon
tool which automatically reloads the Node environment. First you need toinstall it globally:
Then you can use it in place of the node
command:
Node does not have logical modular constructs like packages or namespaces. Modules are either files in the project folder, or external NPM packages.The latest version of Node does not natively support the ES6 import
andexport
functionalities. To use them, you need to set-up Babel compilation. Furthermore, most existing JavaScript code usespre-ES6 syntax. Thus, we will overview both ways of working with modules.
Pre-ES6 modules
Before ES6, modules could export a single variable called module.exports
. Client modules would use the require
function to load its value:
For example, we could define a module in a file ./friends.js
:
Now lets import/include friends.js
and a 3rd party module/package moment
:
ES6 modules
In ES6, a module can export multiple elements with the export
command.A module can optionally have a default export, which is automaticallyimported when you include the module:
External modules are loaded via the import
command which has several variations.Assuming the previous example is in a file called importExample.js
, we could work with it as follows:
Application configuration is often provided in the form of environment variables.Examples of such configuration are: environment identifier (e.g. dev/staging/prod) and databaseconnection url. In Node, environment variables can be accessed through the proces.env
object. For example:
If Node is running a script (i.e. not in REPL mode), you can access the special variables__dirname
and __filename
which denote the paths to the currently executing script/moduleand its directory. This comes handy when accessing resources from relative folders.
The latest versions of Node support ES6 almost fully. However, some features (e.g. ES6-style import/export) are not yet supported. If we want to use them,we’ll have to compile our code to an earlier JavaScript version with Babel.
C# Cheat Sheet Pdf
We need to install it as a dev dependency:
Babel uses presets, which define what code transformations will be applied.Let’s install a basic ES6 preset:
Babel loads the preset from its config file .babelrc
. Hence, we should specify it there as:
In the most typical use case, Babel would take a source folder with ES6 code and generatethe compiled output in another folder. If all our code is in the src/
sub-folder, we can compile to the build/
folder as follows:
We can then run the newly generated code in build/
as normal Node code by using thenode
or nodemon
commands. Babel can monitor for changes, and compileautomatically with the --watch
option:
The babel-node
command combines compilation and execution in one step. Given a file srct/test.js
you can compile and run as:
So how do we run this with nodemon
? Here it is:
Fargo driver. It is convenient to define command aliases in package.json
.Assuming a file src/test.js
exists, we can use:
And then we can invoke them with:
NOTE: We could have installed Babel globally, like we did with nodemon.In this case, we would have all babel utilities on the Path, and we would nothave to use relative paths (i.e. ./node_modules/.bin
). Both approaches arepossible.
Many developers prefer statically typed languages like Scala, Java, and C++.While there are compilers from such languages to JavaScript (e.g. TypeScript, GWT, and Scala.js), incorporating type safety into existing JavaScriptcode bases is far from trivial.
Enter Flow! It is a static type checker for JavaScript. Youcan incrementally add Flow type annotations to your JavaScript code instead of rewriting it all in another language.
First, lets install Flow globally:
This will add the flow
command to your terminal environment. Then we need to initialiseFlow within the node project directory:
This will create a .flowconfig
file with Flow settings.
JavaScript syntax does not support type annotations and adding them would result in syntax errors. One workaround is to add the types as comments which Flow will interpret:
Note the //@flow
comment at the beginning of the file. It tells Flow to process the file –otherwise it will ignore it. To analyse the code for type violations, just run flow
fromthe project’s folder. This should report all type errors.
Defining type information in comments is not very convenient. We can use Babel to remove the type annotations for us. Given the Babel setup from the previous secion, we also need to install a plugin for Flow:
And then the .babelrc
file must be configured to use it:
Now we can use types in the code:
We can also enable Flow to type check how we use 3rd party libraries. Fitbit usb devices driver. There is a centralrepository of type definitions for many popular libraries. It can be accessed via theflow-typed
module:
This will enable Flow to dynamically pull library type definitions.
Finally, don’t forget to install a Flow plugin for your favorite editor/IDE to get typehints as you code.
Promises are available in JavaScript and are not specific to Node.However, they are quite important for many Node libraries for async operations, and thus we’ll review them quickly. A promise allows us to work succinctly with async operations without nested boilerplate callbacks.
A promise is an instance of class Promise
. It is a wrapper of a higher order functionwhich takes two callback functions as parameters called resolve
and reject
. The functioncalls them when the encapsulated operation succeeds or fails respectively. Thefollowing example shows a promise which succeeds if a random number is less than 0.5:
We can “chain” actions after a promise with the then
method, which is also a higher order function.It takes two parameters – a function which is called “on success” and one for failure.Alternatively, we can provide only the “on success” function, and then chain a call to the catch
method:
Often, we need to run multiple async operations in a sequence. For example, we cancall a web service, and if successfull make an SQL query, and if successfull …In other words, we need to chain promises. We can easily achieve this by returninga promise from our success-handling function:
Resource
Related
Basic
Global Objects
console
Timers
Util
Module
Modules
Addons
Node Js Cheat Sheet Pdf
Buffer/Stream
Buffer
Stream
TTY
Process/Events
Process
Events
Domain
Domain
Crypto
TSL(SSL)
StringDecoder
File
File System
Net
net
UDP / Datagram Sockets
DNS
Text
Path
Query String
punnycode
Readline
HTTP
http
Class: http.Server
Class: http.ServerRequest
Class: http.ServerResponse
Class: http.Agent
Class: http.ClientRequest
http.ClientResponse
HTTPS
URL
Code
Executing JS
Child Process
Assert
System
Zlib
os
Debugger
Cluster
3rd Party
Third Party Modules
- Module Installer: npm
- HTTP Middleware: Connect
- Web Framework: Express
- Web Sockets: Socket.IO
- HTML Parsing: HTML5
- mDNS/Zeroconf/Bonjour/li>
- Serialization: msgpack
- Scraping: Apricot
- Debugger: ndb is a CLI debuggerinspector is a web based tool.
- Testing/TDD/BDD: vows,mocha,mjsunit.runner