SlideShare a Scribd company logo
Kickstart NodeJS
Yashprit Singh
@yashprit
Agenda
1. Middleware Concept
2. Connect Middleware with Example
3. Express Middleware.
4. Express Philosophy.
5. Express Cool Features.
What is Middleware in NodeJS ?
The middleware is called as a chain of functions, with order based on middleware
definition order(time) with matching routes (if applicable).
e.g. req and res objects are travelling through chain so you can
reuse/improve/modify data in them along the chain.
/* This is only for demonstration purpose*/
function(req, res, next) {
req.name = “samething”;
next(/* err and/or output */)
}
Middleware cont.
This is sometime also called as Pipelines. Pipelines are everywhere, under
various forms, uses and purposes. Generically, a Pipeline is a series of processing
units connected together, where the output of one unit is the input for the next one.
(In Node.js, this often means a series of functions in the form.)
If your middleware should return a response, just do so. If it shouldn't, it's implied
that some later middleware should return a response. If you need to pass along
data to that later part of the process, you should attach it to an appropriate part of
the request object req.
P.S. Don’t confuse here about pipe(), thats belongs to another hero streams, streams are better
suited to process flowing data

Recommended for you

Spring Framework - AOP
Spring Framework - AOPSpring Framework - AOP
Spring Framework - AOP

This document discusses Aspect Oriented Programming (AOP) using the Spring Framework. It defines AOP as a programming paradigm that extends OOP by enabling modularization of crosscutting concerns. It then discusses how AOP addresses common crosscutting concerns like logging, validation, caching, and transactions through aspects, pointcuts, and advice. It also compares Spring AOP and AspectJ, and shows how to implement AOP in Spring using annotations or XML.

aopspring frameworkaspect
Spring Framework
Spring Framework  Spring Framework
Spring Framework

The document discusses Spring Boot, a framework from the Spring Team that aims to ease the bootstrapping and development of new Spring applications. Spring Boot allows applications to start quickly with very little Spring configuration. It provides some sensible defaults to help developers get started quickly on new projects.

spring frameworkspring bootspring mvc
Nest.js Introduction
Nest.js IntroductionNest.js Introduction
Nest.js Introduction

Nest.js is a Node.js framework that uses an architecture-oriented approach to build scalable and loosely coupled applications. It is inspired by Angular and uses modules, dependency injection, and other features to build progressive web apps. Nest.js allows developers to split code into reusable units and easily integrate with databases and other technologies through a clean architecture.

nestnodejs
Middleware cont.
For example,
1. The bundled bodyParser middleware is responsible for populating req.
rawBody and req.body based on the contents of the request body.
2. The bundled basicAuth middleware populates req.remoteUser based on the
HTTP authentication.
Middleware Cont.
Two general use cases for middleware :-
● Generic :- it will apply to every single request. Each middleware have to call
next() inside, if it wants to proceed to next middleware.
● Specific :- When you use app.get('/path', function(...) this actual function is
middleware as well, just inline defined
The chain order is based on definition order. So it is important to define
middleware in sync manner or order-reliable async manner. Otherwise different
order of middleware can break logic.
Middleware : Connect
● Node.js itself offers an HTTP module, whose createServer method returns an
object that you can use to respond to HTTP requests.
● That object inherits the http.Server prototype.
Connect Middleware
From the README:
Connect is an extensible HTTP server framework for node, providing high
performance "plugins" known as middleware.
More specifically, connect wraps the Server, ServerRequest, and
ServerResponse objects of node.js' standard httpmodule, giving them a few nice
extra features, one of which is allowing the Server object to use a stack of
middleware.

Recommended for you

What Is Express JS?
What Is Express JS?What Is Express JS?
What Is Express JS?

This Express Js tutorial will walk you through what express js is, what we can do with it, features of express js and companies that are hiring express js developers. Express Js is a Node Js framework which helps to write the API’s very efficiently. It’s a awesome framework of node js which is helping Backend development so much and it provides wide set of features to develop both web and mobile applications it is used to build single page, multipage and hybrid web applications.

express js tutorialwhat is express js?express js api
Workshop 4: NodeJS. Express Framework & MongoDB.
Workshop 4: NodeJS. Express Framework & MongoDB.Workshop 4: NodeJS. Express Framework & MongoDB.
Workshop 4: NodeJS. Express Framework & MongoDB.

This document provides an introduction to Node.js, Express, and MongoDB. Node.js is a JavaScript runtime built on Chrome's V8 engine that allows JavaScript to be run on the server-side. Express is a web application framework for Node.js that provides routing capabilities and middleware support. MongoDB is a non-relational database that stores data in flexible, JSON-like documents, rather than using rigid tables. The document discusses the pros and cons of each technology and provides examples of basic usage and configuration.

express frameworkmongodbframework
ES6 presentation
ES6 presentationES6 presentation
ES6 presentation

The document discusses key features of ECMAScript 6 (ES6), including: - Default parameters, template literals, multi-line strings, spread operator, and enhanced object literals which add concise syntaxes. - Arrow functions which provide a shorter syntax for writing anonymous functions. - Block-scoped constructs like let and const that add block scoping to variables and constants. - Classes which provide a cleaner way to define constructor functions and objects. - Hoisting differences between function declarations and class declarations. - Using ES6 today by compiling it to ES5 using a tool like Babel.

engineeringjavascriptcode
Connect Middleware Framework
● Connect has 18 bundled middleware and a rich selection of 3rd-party
middleware..
● That's why Connect describes itself as a "middleware framework," and is
often analogized to Ruby's Rack.
Example : Creating Simple Middleware
function uselessMiddleware(req, res, next) {
next()
}
A middleware can also signal an error by passing it as the first argument to next:
// A middleware that simply interrupts every request
function worseThanUselessMiddleware(req, res, next) {
next("Hey are you busy?")
}
When a middleware returns an error like this, all subsequent middleware will be
skipped until connect can find an error handler.
Adding middleware stack for server
To add a middleware to the stack of middleware for a server, we use it like so:
connect = require('connect')
stephen = connect.createServer()
stephen.use(worseThanUselessMiddleware)
Finally, you can also specify a path prefix when adding a middleware, and the
middleware will only be asked to handle requests that match the prefix:
connect = require('connect')
bob = connect.createServer()
bob.use('/attention', worseThanUselessMiddleware)
URL based authentication policy
function authenticateUrls(urls /* basicAuth args*/) {
basicAuthArgs = Array.slice.call(arguments, 1)
basicAuth = require('connect').basicAuth.apply(basicAuthArgs)
function authenticate(req, res, next) {
// Warning! assumes that urls is amenable to iteration
for (var pattern in urls) {
if (req.path.match(pattern)) {
basicAuth(req, res, next)
return
}
}
next()
}
return authenticate
}

Recommended for you

Xke spring boot
Xke spring bootXke spring boot
Xke spring boot

Spring Boot is a framework for developing Java applications that reduces configuration and provides production-ready features. It allows developing Spring applications with minimal configuration by automatically configuring Spring and third-party libraries. Spring Boot provides starter dependencies to simplify build configuration and modules for autoconfiguration, CLI, monitoring, and more.

spring boot presentationspring bootspring
REST APIs with Spring
REST APIs with SpringREST APIs with Spring
REST APIs with Spring

This talk introduces Spring's REST stack - Spring MVC, Spring HATEOAS, Spring Data REST, Spring Security OAuth and Spring Social - while refining an API to move higher up the Richardson maturity model

datarepositoryrest
Nestjs MasterClass Slides
Nestjs MasterClass SlidesNestjs MasterClass Slides
Nestjs MasterClass Slides

Slides from the NestJS MasterClass. We learned how to build JavaScript server-side applications with NestJS - A progressive NodeJS framework built with TypeScript. You can find the code on GitHub: https://github.com/nirkaufman/task-manager

javascriptnodejsnestjs
Role base authorization
function authorizeUrls(urls, roles) {
function authorize(req, res, next) {
for (var pattern in urls) {
if (req.path.match(pattern)) {
for (var role in urls[pattern]) {
if (users[req.remoteUser].indexOf(role) < 0) {
next(new Error("unauthorized"))
return
}
}
}
}
next()
}
return authorize
}
Error handling
email = require('node_mailer')
function emailErrorNotifier(generic_opts, escalate) {
function notifyViaEmail(err, req, res, next) {
if (err) {
var opts = {
subject: "ERROR: " + err.constructor.name,
body: err.stack,
}
opts.__proto__ = generic_opts
email.send(opts, escalate)
}
next()
}
}
Putting it all together
private_urls = {
'^/attention': ['coworker', 'girlfriend'],
'^/bank_balance': ['me'],
}
roles = {
stephen: ['me'],
erin: ['girlfriend'],
judd: ['coworker'],
bob: ['coworker'],
}
passwords = {
me: 'doofus',
erin: 'greatest',
judd: 'daboss',
bob: 'anachronistic discomBOBulation',
}
function authCallback(name, password) {
return passwords[name] === password
}
stephen = require('connect').createServer()
stephen.use(authenticateUrls(private_urls,
authCallback))
stephen.use(authorizeUrls(private_urls, roles))
stephen.use('/attention',
worseThanUselessMiddleware)
stephen.use(emailErrorNotifier({to:
'stephen@betsmartmedia.com'}))
stephen.use('/bank_balance', function (req, res,
next) {
res.end("Don't be Seb-ish")
})
stephen.use('/', function (req, res, next) {
res.end("I'm out of coffee")
})
List of common uses connect middlewares
● logger request logger with custom format
support
● csrf Cross-site request forgery protection
● compress Gzip compression middleware
● basicAuth basic http authentication
● bodyParser extensible request body parser
● json application/json parser
● multipart multipart/form-data parser
● timeout request timeouts
● cookieParser cookie parser
● session session management support with
bundled MemoryStore
● cookieSession cookie-based session support
● methodOverride faux HTTP method support
● favicon efficient favicon server (with default
icon)
● query automatic querystring parser, populating
req.query
● errorHandler flexible error handler

Recommended for you

Introduction Node.js
Introduction Node.jsIntroduction Node.js
Introduction Node.js

This document provides an introduction to Node.js. It discusses why JavaScript can be strange, but explains that JavaScript is relevant as the language of the web. It then discusses what Node.js is and its event-driven, non-blocking architecture. Popular Node.js applications like HTTP servers, REST APIs, and web sockets are mentioned. Examples are provided of building a simple web app with Express and Jade, a REST API with Restify, and using web sockets with Socket.io. The document also discusses using Mongoose with MongoDB for data modeling.

mongodbnode.jsrestify
Reactjs
ReactjsReactjs
Reactjs

The document provides an overview of React including its introduction, prerequisites, installation, fundamentals, components, life cycle, routing, hooks, Redux, projects, testing, comparison to Angular, and tips for React developers. It discusses key React concepts such as JSX, props, state, events, DOM, and virtual DOM.

reactnpxnpm
Spring Boot in Action
Spring Boot in Action Spring Boot in Action
Spring Boot in Action

This document discusses Spring Boot and how it provides automatic configuration for common web application functionalities like JPA, security, and Spring MVC. It also covers how Spring Boot uses starter dependencies to select libraries automatically and provides tools like the CLI and Spring Initializr. The document then demonstrates creating a basic Spring Boot application and discusses testing Spring Boot applications using techniques like mocking Spring MVC and integrating tests.

itspringjava
Middleware: Express
Express does to Connect what Connect does to the http module: It offers a
createServer method that extends Connect's Server prototype. So all of the
functionality of Connect is there,plus view rendering and a handy DSL for
describing routes. Ruby's Sinatra is a good analogy.
Philosophy behind ExpressJS
This is probably one of the most popular frameworks in the Node.js community of
coders right now. The core philosophy behind ExpressJS is to offer an application
framework for single or multi-page web apps, using views and template engine.
The Express.js framework also includes a multitude of utilities to work with HTTP
and building APIs. The pluggable middleware in the framework provides a great
way to add elements, such as passportjs, as you need them.
Cool feature 1: routing
Routing is a way to map different
requests to specific handlers.
var express = require("express");
var http = require("http");
var app = express();
app.all("*", function(request, response, next) {
response.writeHead(200, { "Content-Type":
"text/plain" });
next();
});
app.get("/", function(request, response) {
response.end("Welcome to the homepage!");
});
app.get("/about", function(request, response) {
response.end("Welcome to the about page!");
});
app.get("*", function(request, response) {
response.end("404!");
});
http.createServer(app).listen(1337);
Cool feature 2: request handling
Express augments the request and response objects that you're passed in every
request handler.
response.redirect("/hello/anime");
response.redirect("http://www.myanimelist.net");
response.redirect(301, "http://www.anime.org"); // HTTP status code 301
This isn't in vanilla Node and it's also absent from Connect, but Express adds this
stuff. It adds things like sendFile which lets you just send a whole file:
response.sendFile("/path/to/anime.mp4");
The request gets a number of cool properties, like request.ip to get the IP address
and request.files to get uploaded files.

Recommended for you

ReactJS presentation
ReactJS presentationReactJS presentation
ReactJS presentation

Plain React detects changes by re-rendering your whole UI into a virtual DOM and then comparing it to the old version. Whatever changed, gets patched to the real DOM.

reactjavascript
Spring Boot & Actuators
Spring Boot & ActuatorsSpring Boot & Actuators
Spring Boot & Actuators

JOHN HUMPHREYS VP OF ENGINEERING INFRASTRUCTURE SYSTEMS, NOMURA Spring Boot is a modern and extensible development framework that aims (and succeeds!) to take as much pain as possible out of developing with Java. With just a few Maven dependencies, new or existing programs become runnable, init.d-compliant uber-JARs or uber-WARs with embedded web-servers and virtually zero-configuration, code or otherwise. As an added freebie, Spring Boot Actuator will provide your programs with amazing configuration-free production monitoring facilities that let you have RESTFUL endpoints serving live stack-traces, heap and GC statistics, database statuses, spring-bean definitions, and password-masked configuration file audits.

Spring boot introduction
Spring boot introductionSpring boot introduction
Spring boot introduction

Rasheed Amir presents on Spring Boot. He discusses how Spring Boot aims to help developers build production-grade Spring applications quickly with minimal configuration. It provides default functionality for tasks like embedding servers and externalizing configuration. Spring Boot favors convention over configuration and aims to get developers started quickly with a single focus. It also exposes auto-configuration for common Spring and related technologies so that applications can take advantage of them without needing to explicitly configure them.

spring bootjavaspring
Cool feature 3: views
More features? Oh, Express, I'm blushing.
Express can handle views. It's not too bad. Here's what the setup looks like:
// Start Express
var express = require("express");
var app = express();
// Set the view directory to /views
app.set("views", __dirname + "/views");
// Let's use the Jade templating language
app.set("view engine", "jade");
The first block is the same as always. Then we say "our views are in a folder
called 'views'".
Bonus cool feature: everything from
Connect and Node
I want to remind you that Express is built on top of Connect which is built on top of
Node. This means that all Connect middleware works with Express. This is useful!
For example:
var express = require("express");
var app = express();
app.use(express.logger()); // Inherited from Connect
app.get("/", function(req, res) {
res.send("anime");
});
app.listen(1337);
Folder Structure : My Preference
/public
/images (there are several images exported from Photoshop)
/javascripts
/stylesheets
/style.css
/style.less (imports home.less and inner.less)
/routes
/index.js
/app
/views
/index.ejs (home page)
/inner.ejs (template for every other page of the site)
/controller
/model
/app.js
/package.json
Q-A
Thank You
@yashprit

Recommended for you

Node js
Node jsNode js
Node js

This document provides an overview of Node.js, including: - Node.js is an open source, cross-platform JavaScript runtime environment built on Chrome's V8 engine. It has a large developer community. - Several major companies like Yahoo, Netflix, and LinkedIn use Node.js and have seen significant improvements in performance and scalability compared to other platforms. - Node.js uses an event-driven, non-blocking I/O model that can handle thousands of concurrent connections with minimal resources. This makes it well-suited for I/O-intensive applications. - Common Node.js tools and frameworks discussed include NPM, Express, Mongoose, and Socket.io. Examples are

Nodejs functions & modules
Nodejs functions & modulesNodejs functions & modules
Nodejs functions & modules

This document discusses Node.js functions, modules, and exporting modules. It covers defining functions, parameters, and return values. It also covers the different types of modules in Node.js including core modules, local modules, and third party modules. Finally, it discusses how to export variables, functions, objects, and classes from modules using module.exports.

node js
RESTful API In Node Js using Express
RESTful API In Node Js using Express RESTful API In Node Js using Express
RESTful API In Node Js using Express

This document discusses creating REST APIs with Express, Node.js, and MySQL. It provides an overview of Express and its advantages. It then demonstrates how to set up a Node.js and MySQL environment, create an Express server, and implement API routes to GET, POST, DELETE, and PUT data from a MySQL database table. Code examples are provided to retrieve all todos, a single todo by ID, search todos by keyword, add a new todo, delete a todo, and update an existing todo.

express frameworkexpress node js apiexpress with mysql
MVC in Express
var express = require('express');
,app = express()
,fs = require('fs')
// database connection
var mongoose = require('mongoose');
mongoose.connect('mongodb://localhost/mydb');
// some environment variables
app.set('port', process.env.PORT || 3000);
app.set('views', __dirname + '/views');
app.set('view engine', 'ejs');
app.use(app.router);
app.use(express.static(path.join(__dirname,
'public')));
// dynamically include routes (Controller)
fs.readdirSync('./controllers').forEach(function
(file) {
if(file.substr(-3) == '.js') {
route = require('./controllers/' + file);
route.controller(app);
}
});
http.createServer(app).listen(app.get('port'),
function(){
console.log('Express server listening on port ' +
app.get('port'));
});
NodeJS HTTP Abstraction
Express wonderfull middleware
Philosophy behind ExpressJS
MVC in NodeJS
http://evanhahn.com/understanding-express/
NodeJS HTTP Abstraction
http://stackoverflow.com/questions/5284340/what-is-node-js-connect-express-and-
middleware
http://expressjs.com/guide.html
https://github.com/senchalabs/connect
http://stackoverflow.com/questions/17750308/middleware-design-pattern-in-node-
js-connect
http://expressjs.com/2x/guide.html#middleware
http://stackoverflow.com/questions/6893876/nodejs-and-connect-next-functionality
http://www.mariocasciaro.me/the-strange-world-of-node-js-design-patterns
http://philsversion.com/2011/08/24/lessons-learnt-from-my-first-node-js-project/
http://stella.laurenzo.org/2011/03/bulletproof-node-js-coding/
http://code.tutsplus.com/tutorials/meet-the-connect-framework--net-31220
http://stephensugden.com/middleware_guide/
http://howtonode.org/connect-it

Recommended for you

Webservices in SalesForce (part 1)
Webservices in SalesForce (part 1)Webservices in SalesForce (part 1)
Webservices in SalesForce (part 1)

The document provides an overview of web services in Salesforce, specifically covering SOAP and REST web services. It defines SOAP and REST, compares the two approaches, and provides guidance on when to use each. It also covers how to create and consume SOAP web services in Salesforce, including exposing a SOAP web service publicly and making callouts to external web services. Security considerations for callouts like authentication and encryption are also briefly discussed.

salesforcesoapmindfiresolutions
Divide and Conquer – Microservices with Node.js
Divide and Conquer – Microservices with Node.jsDivide and Conquer – Microservices with Node.js
Divide and Conquer – Microservices with Node.js

This document discusses microservices using Node.js and JavaScript. It covers building an HTTP microservice with Express including routing, structure, database integration, logging and testing. It also discusses building command-based microservices with Seneca including patterns, plugins, and queueing. Finally, it discusses containerization with Docker, API gateways, testing, process management with PM2, and some considerations around when microservices may not be the best solution.

microservicesnode.js
sveltekit-en.pdf
sveltekit-en.pdfsveltekit-en.pdf
sveltekit-en.pdf

SvelteKit builds on standard web APIs to provide functionality out of the box. These include the Fetch API for network requests, FormData for handling form submissions, stream APIs for chunked responses, URL APIs for working with URLs, and the Web Crypto API via the crypto global. SvelteKit exposes these APIs in places like hooks, server routes, and load functions to integrate seamlessly with the web platform. Using web standards means existing web skills transfer to SvelteKit and time spent with SvelteKit enhances general web development abilities.

More Related Content

What's hot

Basic Concept of Node.js & NPM
Basic Concept of Node.js & NPMBasic Concept of Node.js & NPM
Basic Concept of Node.js & NPM
Bhargav Anadkat
 
Node JS Crash Course
Node JS Crash CourseNode JS Crash Course
Node JS Crash Course
Haim Michael
 
Node js for beginners
Node js for beginnersNode js for beginners
Node js for beginners
Arjun Sreekumar
 
Spring Framework - AOP
Spring Framework - AOPSpring Framework - AOP
Spring Framework - AOP
Dzmitry Naskou
 
Spring Framework
Spring Framework  Spring Framework
Spring Framework
tola99
 
Nest.js Introduction
Nest.js IntroductionNest.js Introduction
Nest.js Introduction
Takuya Tejima
 
What Is Express JS?
What Is Express JS?What Is Express JS?
What Is Express JS?
Simplilearn
 
Workshop 4: NodeJS. Express Framework & MongoDB.
Workshop 4: NodeJS. Express Framework & MongoDB.Workshop 4: NodeJS. Express Framework & MongoDB.
Workshop 4: NodeJS. Express Framework & MongoDB.
Visual Engineering
 
ES6 presentation
ES6 presentationES6 presentation
ES6 presentation
ritika1
 
Xke spring boot
Xke spring bootXke spring boot
Xke spring boot
sourabh aggarwal
 
REST APIs with Spring
REST APIs with SpringREST APIs with Spring
REST APIs with Spring
Joshua Long
 
Nestjs MasterClass Slides
Nestjs MasterClass SlidesNestjs MasterClass Slides
Nestjs MasterClass Slides
Nir Kaufman
 
Introduction Node.js
Introduction Node.jsIntroduction Node.js
Introduction Node.js
Erik van Appeldoorn
 
Reactjs
ReactjsReactjs
Spring Boot in Action
Spring Boot in Action Spring Boot in Action
Spring Boot in Action
Alex Movila
 
ReactJS presentation
ReactJS presentationReactJS presentation
ReactJS presentation
Thanh Tuong
 
Spring Boot & Actuators
Spring Boot & ActuatorsSpring Boot & Actuators
Spring Boot & Actuators
VMware Tanzu
 
Spring boot introduction
Spring boot introductionSpring boot introduction
Spring boot introduction
Rasheed Waraich
 
Node js
Node jsNode js
Nodejs functions & modules
Nodejs functions & modulesNodejs functions & modules
Nodejs functions & modules
monikadeshmane
 

What's hot (20)

Basic Concept of Node.js & NPM
Basic Concept of Node.js & NPMBasic Concept of Node.js & NPM
Basic Concept of Node.js & NPM
 
Node JS Crash Course
Node JS Crash CourseNode JS Crash Course
Node JS Crash Course
 
Node js for beginners
Node js for beginnersNode js for beginners
Node js for beginners
 
Spring Framework - AOP
Spring Framework - AOPSpring Framework - AOP
Spring Framework - AOP
 
Spring Framework
Spring Framework  Spring Framework
Spring Framework
 
Nest.js Introduction
Nest.js IntroductionNest.js Introduction
Nest.js Introduction
 
What Is Express JS?
What Is Express JS?What Is Express JS?
What Is Express JS?
 
Workshop 4: NodeJS. Express Framework & MongoDB.
Workshop 4: NodeJS. Express Framework & MongoDB.Workshop 4: NodeJS. Express Framework & MongoDB.
Workshop 4: NodeJS. Express Framework & MongoDB.
 
ES6 presentation
ES6 presentationES6 presentation
ES6 presentation
 
Xke spring boot
Xke spring bootXke spring boot
Xke spring boot
 
REST APIs with Spring
REST APIs with SpringREST APIs with Spring
REST APIs with Spring
 
Nestjs MasterClass Slides
Nestjs MasterClass SlidesNestjs MasterClass Slides
Nestjs MasterClass Slides
 
Introduction Node.js
Introduction Node.jsIntroduction Node.js
Introduction Node.js
 
Reactjs
ReactjsReactjs
Reactjs
 
Spring Boot in Action
Spring Boot in Action Spring Boot in Action
Spring Boot in Action
 
ReactJS presentation
ReactJS presentationReactJS presentation
ReactJS presentation
 
Spring Boot & Actuators
Spring Boot & ActuatorsSpring Boot & Actuators
Spring Boot & Actuators
 
Spring boot introduction
Spring boot introductionSpring boot introduction
Spring boot introduction
 
Node js
Node jsNode js
Node js
 
Nodejs functions & modules
Nodejs functions & modulesNodejs functions & modules
Nodejs functions & modules
 

Similar to Express node js

RESTful API In Node Js using Express
RESTful API In Node Js using Express RESTful API In Node Js using Express
RESTful API In Node Js using Express
Jeetendra singh
 
Webservices in SalesForce (part 1)
Webservices in SalesForce (part 1)Webservices in SalesForce (part 1)
Webservices in SalesForce (part 1)
Mindfire Solutions
 
Divide and Conquer – Microservices with Node.js
Divide and Conquer – Microservices with Node.jsDivide and Conquer – Microservices with Node.js
Divide and Conquer – Microservices with Node.js
Sebastian Springer
 
sveltekit-en.pdf
sveltekit-en.pdfsveltekit-en.pdf
sveltekit-en.pdf
ssuser65180a
 
Node.js Express Framework
Node.js Express FrameworkNode.js Express Framework
Node.js Express Framework
TheCreativedev Blog
 
Nt1310 Unit 3 Language Analysis
Nt1310 Unit 3 Language AnalysisNt1310 Unit 3 Language Analysis
Nt1310 Unit 3 Language Analysis
Nicole Gomez
 
ExpressJS and REST API.pptx
ExpressJS and REST API.pptxExpressJS and REST API.pptx
ExpressJS and REST API.pptx
Govardhan Bhavani
 
JavaEE6 my way
JavaEE6 my wayJavaEE6 my way
JavaEE6 my way
Nicola Pedot
 
Build Web Apps using Node.js
Build Web Apps using Node.jsBuild Web Apps using Node.js
Build Web Apps using Node.js
davidchubbs
 
nodejs_at_a_glance.ppt
nodejs_at_a_glance.pptnodejs_at_a_glance.ppt
nodejs_at_a_glance.ppt
WalaSidhom1
 
Bt0083 server side programing
Bt0083 server side programing Bt0083 server side programing
Bt0083 server side programing
Techglyphs
 
Server side programming bt0083
Server side programming bt0083Server side programming bt0083
Server side programming bt0083
Divyam Pateriya
 
NodeJS @ ACS
NodeJS @ ACSNodeJS @ ACS
NodeJS @ ACS
Mauro Parra-Miranda
 
Java servlet technology
Java servlet technologyJava servlet technology
Java servlet technology
Minal Maniar
 
Beginning MEAN Stack
Beginning MEAN StackBeginning MEAN Stack
Beginning MEAN Stack
Rob Davarnia
 
.NET Core, ASP.NET Core Course, Session 18
 .NET Core, ASP.NET Core Course, Session 18 .NET Core, ASP.NET Core Course, Session 18
.NET Core, ASP.NET Core Course, Session 18
aminmesbahi
 
ExpressJS-Introduction.pdf
ExpressJS-Introduction.pdfExpressJS-Introduction.pdf
ExpressJS-Introduction.pdf
Bareen Shaikh
 
Introduction to Node.JS
Introduction to Node.JSIntroduction to Node.JS
Introduction to Node.JS
Collaboration Technologies
 
An Overview of Node.js
An Overview of Node.jsAn Overview of Node.js
An Overview of Node.js
Ayush Mishra
 
OpenDMS - the first 2 weeks
OpenDMS - the first 2 weeksOpenDMS - the first 2 weeks
OpenDMS - the first 2 weeks
JPC Hanson
 

Similar to Express node js (20)

RESTful API In Node Js using Express
RESTful API In Node Js using Express RESTful API In Node Js using Express
RESTful API In Node Js using Express
 
Webservices in SalesForce (part 1)
Webservices in SalesForce (part 1)Webservices in SalesForce (part 1)
Webservices in SalesForce (part 1)
 
Divide and Conquer – Microservices with Node.js
Divide and Conquer – Microservices with Node.jsDivide and Conquer – Microservices with Node.js
Divide and Conquer – Microservices with Node.js
 
sveltekit-en.pdf
sveltekit-en.pdfsveltekit-en.pdf
sveltekit-en.pdf
 
Node.js Express Framework
Node.js Express FrameworkNode.js Express Framework
Node.js Express Framework
 
Nt1310 Unit 3 Language Analysis
Nt1310 Unit 3 Language AnalysisNt1310 Unit 3 Language Analysis
Nt1310 Unit 3 Language Analysis
 
ExpressJS and REST API.pptx
ExpressJS and REST API.pptxExpressJS and REST API.pptx
ExpressJS and REST API.pptx
 
JavaEE6 my way
JavaEE6 my wayJavaEE6 my way
JavaEE6 my way
 
Build Web Apps using Node.js
Build Web Apps using Node.jsBuild Web Apps using Node.js
Build Web Apps using Node.js
 
nodejs_at_a_glance.ppt
nodejs_at_a_glance.pptnodejs_at_a_glance.ppt
nodejs_at_a_glance.ppt
 
Bt0083 server side programing
Bt0083 server side programing Bt0083 server side programing
Bt0083 server side programing
 
Server side programming bt0083
Server side programming bt0083Server side programming bt0083
Server side programming bt0083
 
NodeJS @ ACS
NodeJS @ ACSNodeJS @ ACS
NodeJS @ ACS
 
Java servlet technology
Java servlet technologyJava servlet technology
Java servlet technology
 
Beginning MEAN Stack
Beginning MEAN StackBeginning MEAN Stack
Beginning MEAN Stack
 
.NET Core, ASP.NET Core Course, Session 18
 .NET Core, ASP.NET Core Course, Session 18 .NET Core, ASP.NET Core Course, Session 18
.NET Core, ASP.NET Core Course, Session 18
 
ExpressJS-Introduction.pdf
ExpressJS-Introduction.pdfExpressJS-Introduction.pdf
ExpressJS-Introduction.pdf
 
Introduction to Node.JS
Introduction to Node.JSIntroduction to Node.JS
Introduction to Node.JS
 
An Overview of Node.js
An Overview of Node.jsAn Overview of Node.js
An Overview of Node.js
 
OpenDMS - the first 2 weeks
OpenDMS - the first 2 weeksOpenDMS - the first 2 weeks
OpenDMS - the first 2 weeks
 

Recently uploaded

論文紹介:A Systematic Survey of Prompt Engineering on Vision-Language Foundation ...
論文紹介:A Systematic Survey of Prompt Engineering on Vision-Language Foundation ...論文紹介:A Systematic Survey of Prompt Engineering on Vision-Language Foundation ...
論文紹介:A Systematic Survey of Prompt Engineering on Vision-Language Foundation ...
Toru Tamaki
 
Cookies program to display the information though cookie creation
Cookies program to display the information though cookie creationCookies program to display the information though cookie creation
Cookies program to display the information though cookie creation
shanthidl1
 
Fluttercon 2024: Showing that you care about security - OpenSSF Scorecards fo...
Fluttercon 2024: Showing that you care about security - OpenSSF Scorecards fo...Fluttercon 2024: Showing that you care about security - OpenSSF Scorecards fo...
Fluttercon 2024: Showing that you care about security - OpenSSF Scorecards fo...
Chris Swan
 
Advanced Techniques for Cyber Security Analysis and Anomaly Detection
Advanced Techniques for Cyber Security Analysis and Anomaly DetectionAdvanced Techniques for Cyber Security Analysis and Anomaly Detection
Advanced Techniques for Cyber Security Analysis and Anomaly Detection
Bert Blevins
 
Understanding Insider Security Threats: Types, Examples, Effects, and Mitigat...
Understanding Insider Security Threats: Types, Examples, Effects, and Mitigat...Understanding Insider Security Threats: Types, Examples, Effects, and Mitigat...
Understanding Insider Security Threats: Types, Examples, Effects, and Mitigat...
Bert Blevins
 
Best Programming Language for Civil Engineers
Best Programming Language for Civil EngineersBest Programming Language for Civil Engineers
Best Programming Language for Civil Engineers
Awais Yaseen
 
What's New in Copilot for Microsoft365 May 2024.pptx
What's New in Copilot for Microsoft365 May 2024.pptxWhat's New in Copilot for Microsoft365 May 2024.pptx
What's New in Copilot for Microsoft365 May 2024.pptx
Stephanie Beckett
 
The Increasing Use of the National Research Platform by the CSU Campuses
The Increasing Use of the National Research Platform by the CSU CampusesThe Increasing Use of the National Research Platform by the CSU Campuses
The Increasing Use of the National Research Platform by the CSU Campuses
Larry Smarr
 
find out more about the role of autonomous vehicles in facing global challenges
find out more about the role of autonomous vehicles in facing global challengesfind out more about the role of autonomous vehicles in facing global challenges
find out more about the role of autonomous vehicles in facing global challenges
huseindihon
 
Research Directions for Cross Reality Interfaces
Research Directions for Cross Reality InterfacesResearch Directions for Cross Reality Interfaces
Research Directions for Cross Reality Interfaces
Mark Billinghurst
 
Active Inference is a veryyyyyyyyyyyyyyyyyyyyyyyy
Active Inference is a veryyyyyyyyyyyyyyyyyyyyyyyyActive Inference is a veryyyyyyyyyyyyyyyyyyyyyyyy
Active Inference is a veryyyyyyyyyyyyyyyyyyyyyyyy
RaminGhanbari2
 
BT & Neo4j: Knowledge Graphs for Critical Enterprise Systems.pptx.pdf
BT & Neo4j: Knowledge Graphs for Critical Enterprise Systems.pptx.pdfBT & Neo4j: Knowledge Graphs for Critical Enterprise Systems.pptx.pdf
BT & Neo4j: Knowledge Graphs for Critical Enterprise Systems.pptx.pdf
Neo4j
 
20240702 Présentation Plateforme GenAI.pdf
20240702 Présentation Plateforme GenAI.pdf20240702 Présentation Plateforme GenAI.pdf
20240702 Présentation Plateforme GenAI.pdf
Sally Laouacheria
 
How Social Media Hackers Help You to See Your Wife's Message.pdf
How Social Media Hackers Help You to See Your Wife's Message.pdfHow Social Media Hackers Help You to See Your Wife's Message.pdf
How Social Media Hackers Help You to See Your Wife's Message.pdf
HackersList
 
Paradigm Shifts in User Modeling: A Journey from Historical Foundations to Em...
Paradigm Shifts in User Modeling: A Journey from Historical Foundations to Em...Paradigm Shifts in User Modeling: A Journey from Historical Foundations to Em...
Paradigm Shifts in User Modeling: A Journey from Historical Foundations to Em...
Erasmo Purificato
 
INDIAN AIR FORCE FIGHTER PLANES LIST.pdf
INDIAN AIR FORCE FIGHTER PLANES LIST.pdfINDIAN AIR FORCE FIGHTER PLANES LIST.pdf
INDIAN AIR FORCE FIGHTER PLANES LIST.pdf
jackson110191
 
WPRiders Company Presentation Slide Deck
WPRiders Company Presentation Slide DeckWPRiders Company Presentation Slide Deck
WPRiders Company Presentation Slide Deck
Lidia A.
 
Quantum Communications Q&A with Gemini LLM
Quantum Communications Q&A with Gemini LLMQuantum Communications Q&A with Gemini LLM
Quantum Communications Q&A with Gemini LLM
Vijayananda Mohire
 
Choose our Linux Web Hosting for a seamless and successful online presence
Choose our Linux Web Hosting for a seamless and successful online presenceChoose our Linux Web Hosting for a seamless and successful online presence
Choose our Linux Web Hosting for a seamless and successful online presence
rajancomputerfbd
 
RPA In Healthcare Benefits, Use Case, Trend And Challenges 2024.pptx
RPA In Healthcare Benefits, Use Case, Trend And Challenges 2024.pptxRPA In Healthcare Benefits, Use Case, Trend And Challenges 2024.pptx
RPA In Healthcare Benefits, Use Case, Trend And Challenges 2024.pptx
SynapseIndia
 

Recently uploaded (20)

論文紹介:A Systematic Survey of Prompt Engineering on Vision-Language Foundation ...
論文紹介:A Systematic Survey of Prompt Engineering on Vision-Language Foundation ...論文紹介:A Systematic Survey of Prompt Engineering on Vision-Language Foundation ...
論文紹介:A Systematic Survey of Prompt Engineering on Vision-Language Foundation ...
 
Cookies program to display the information though cookie creation
Cookies program to display the information though cookie creationCookies program to display the information though cookie creation
Cookies program to display the information though cookie creation
 
Fluttercon 2024: Showing that you care about security - OpenSSF Scorecards fo...
Fluttercon 2024: Showing that you care about security - OpenSSF Scorecards fo...Fluttercon 2024: Showing that you care about security - OpenSSF Scorecards fo...
Fluttercon 2024: Showing that you care about security - OpenSSF Scorecards fo...
 
Advanced Techniques for Cyber Security Analysis and Anomaly Detection
Advanced Techniques for Cyber Security Analysis and Anomaly DetectionAdvanced Techniques for Cyber Security Analysis and Anomaly Detection
Advanced Techniques for Cyber Security Analysis and Anomaly Detection
 
Understanding Insider Security Threats: Types, Examples, Effects, and Mitigat...
Understanding Insider Security Threats: Types, Examples, Effects, and Mitigat...Understanding Insider Security Threats: Types, Examples, Effects, and Mitigat...
Understanding Insider Security Threats: Types, Examples, Effects, and Mitigat...
 
Best Programming Language for Civil Engineers
Best Programming Language for Civil EngineersBest Programming Language for Civil Engineers
Best Programming Language for Civil Engineers
 
What's New in Copilot for Microsoft365 May 2024.pptx
What's New in Copilot for Microsoft365 May 2024.pptxWhat's New in Copilot for Microsoft365 May 2024.pptx
What's New in Copilot for Microsoft365 May 2024.pptx
 
The Increasing Use of the National Research Platform by the CSU Campuses
The Increasing Use of the National Research Platform by the CSU CampusesThe Increasing Use of the National Research Platform by the CSU Campuses
The Increasing Use of the National Research Platform by the CSU Campuses
 
find out more about the role of autonomous vehicles in facing global challenges
find out more about the role of autonomous vehicles in facing global challengesfind out more about the role of autonomous vehicles in facing global challenges
find out more about the role of autonomous vehicles in facing global challenges
 
Research Directions for Cross Reality Interfaces
Research Directions for Cross Reality InterfacesResearch Directions for Cross Reality Interfaces
Research Directions for Cross Reality Interfaces
 
Active Inference is a veryyyyyyyyyyyyyyyyyyyyyyyy
Active Inference is a veryyyyyyyyyyyyyyyyyyyyyyyyActive Inference is a veryyyyyyyyyyyyyyyyyyyyyyyy
Active Inference is a veryyyyyyyyyyyyyyyyyyyyyyyy
 
BT & Neo4j: Knowledge Graphs for Critical Enterprise Systems.pptx.pdf
BT & Neo4j: Knowledge Graphs for Critical Enterprise Systems.pptx.pdfBT & Neo4j: Knowledge Graphs for Critical Enterprise Systems.pptx.pdf
BT & Neo4j: Knowledge Graphs for Critical Enterprise Systems.pptx.pdf
 
20240702 Présentation Plateforme GenAI.pdf
20240702 Présentation Plateforme GenAI.pdf20240702 Présentation Plateforme GenAI.pdf
20240702 Présentation Plateforme GenAI.pdf
 
How Social Media Hackers Help You to See Your Wife's Message.pdf
How Social Media Hackers Help You to See Your Wife's Message.pdfHow Social Media Hackers Help You to See Your Wife's Message.pdf
How Social Media Hackers Help You to See Your Wife's Message.pdf
 
Paradigm Shifts in User Modeling: A Journey from Historical Foundations to Em...
Paradigm Shifts in User Modeling: A Journey from Historical Foundations to Em...Paradigm Shifts in User Modeling: A Journey from Historical Foundations to Em...
Paradigm Shifts in User Modeling: A Journey from Historical Foundations to Em...
 
INDIAN AIR FORCE FIGHTER PLANES LIST.pdf
INDIAN AIR FORCE FIGHTER PLANES LIST.pdfINDIAN AIR FORCE FIGHTER PLANES LIST.pdf
INDIAN AIR FORCE FIGHTER PLANES LIST.pdf
 
WPRiders Company Presentation Slide Deck
WPRiders Company Presentation Slide DeckWPRiders Company Presentation Slide Deck
WPRiders Company Presentation Slide Deck
 
Quantum Communications Q&A with Gemini LLM
Quantum Communications Q&A with Gemini LLMQuantum Communications Q&A with Gemini LLM
Quantum Communications Q&A with Gemini LLM
 
Choose our Linux Web Hosting for a seamless and successful online presence
Choose our Linux Web Hosting for a seamless and successful online presenceChoose our Linux Web Hosting for a seamless and successful online presence
Choose our Linux Web Hosting for a seamless and successful online presence
 
RPA In Healthcare Benefits, Use Case, Trend And Challenges 2024.pptx
RPA In Healthcare Benefits, Use Case, Trend And Challenges 2024.pptxRPA In Healthcare Benefits, Use Case, Trend And Challenges 2024.pptx
RPA In Healthcare Benefits, Use Case, Trend And Challenges 2024.pptx
 

Express node js

  • 2. Agenda 1. Middleware Concept 2. Connect Middleware with Example 3. Express Middleware. 4. Express Philosophy. 5. Express Cool Features.
  • 3. What is Middleware in NodeJS ? The middleware is called as a chain of functions, with order based on middleware definition order(time) with matching routes (if applicable). e.g. req and res objects are travelling through chain so you can reuse/improve/modify data in them along the chain. /* This is only for demonstration purpose*/ function(req, res, next) { req.name = “samething”; next(/* err and/or output */) }
  • 4. Middleware cont. This is sometime also called as Pipelines. Pipelines are everywhere, under various forms, uses and purposes. Generically, a Pipeline is a series of processing units connected together, where the output of one unit is the input for the next one. (In Node.js, this often means a series of functions in the form.) If your middleware should return a response, just do so. If it shouldn't, it's implied that some later middleware should return a response. If you need to pass along data to that later part of the process, you should attach it to an appropriate part of the request object req. P.S. Don’t confuse here about pipe(), thats belongs to another hero streams, streams are better suited to process flowing data
  • 5. Middleware cont. For example, 1. The bundled bodyParser middleware is responsible for populating req. rawBody and req.body based on the contents of the request body. 2. The bundled basicAuth middleware populates req.remoteUser based on the HTTP authentication.
  • 6. Middleware Cont. Two general use cases for middleware :- ● Generic :- it will apply to every single request. Each middleware have to call next() inside, if it wants to proceed to next middleware. ● Specific :- When you use app.get('/path', function(...) this actual function is middleware as well, just inline defined The chain order is based on definition order. So it is important to define middleware in sync manner or order-reliable async manner. Otherwise different order of middleware can break logic.
  • 7. Middleware : Connect ● Node.js itself offers an HTTP module, whose createServer method returns an object that you can use to respond to HTTP requests. ● That object inherits the http.Server prototype.
  • 8. Connect Middleware From the README: Connect is an extensible HTTP server framework for node, providing high performance "plugins" known as middleware. More specifically, connect wraps the Server, ServerRequest, and ServerResponse objects of node.js' standard httpmodule, giving them a few nice extra features, one of which is allowing the Server object to use a stack of middleware.
  • 9. Connect Middleware Framework ● Connect has 18 bundled middleware and a rich selection of 3rd-party middleware.. ● That's why Connect describes itself as a "middleware framework," and is often analogized to Ruby's Rack.
  • 10. Example : Creating Simple Middleware function uselessMiddleware(req, res, next) { next() } A middleware can also signal an error by passing it as the first argument to next: // A middleware that simply interrupts every request function worseThanUselessMiddleware(req, res, next) { next("Hey are you busy?") } When a middleware returns an error like this, all subsequent middleware will be skipped until connect can find an error handler.
  • 11. Adding middleware stack for server To add a middleware to the stack of middleware for a server, we use it like so: connect = require('connect') stephen = connect.createServer() stephen.use(worseThanUselessMiddleware) Finally, you can also specify a path prefix when adding a middleware, and the middleware will only be asked to handle requests that match the prefix: connect = require('connect') bob = connect.createServer() bob.use('/attention', worseThanUselessMiddleware)
  • 12. URL based authentication policy function authenticateUrls(urls /* basicAuth args*/) { basicAuthArgs = Array.slice.call(arguments, 1) basicAuth = require('connect').basicAuth.apply(basicAuthArgs) function authenticate(req, res, next) { // Warning! assumes that urls is amenable to iteration for (var pattern in urls) { if (req.path.match(pattern)) { basicAuth(req, res, next) return } } next() } return authenticate }
  • 13. Role base authorization function authorizeUrls(urls, roles) { function authorize(req, res, next) { for (var pattern in urls) { if (req.path.match(pattern)) { for (var role in urls[pattern]) { if (users[req.remoteUser].indexOf(role) < 0) { next(new Error("unauthorized")) return } } } } next() } return authorize }
  • 14. Error handling email = require('node_mailer') function emailErrorNotifier(generic_opts, escalate) { function notifyViaEmail(err, req, res, next) { if (err) { var opts = { subject: "ERROR: " + err.constructor.name, body: err.stack, } opts.__proto__ = generic_opts email.send(opts, escalate) } next() } }
  • 15. Putting it all together private_urls = { '^/attention': ['coworker', 'girlfriend'], '^/bank_balance': ['me'], } roles = { stephen: ['me'], erin: ['girlfriend'], judd: ['coworker'], bob: ['coworker'], } passwords = { me: 'doofus', erin: 'greatest', judd: 'daboss', bob: 'anachronistic discomBOBulation', } function authCallback(name, password) { return passwords[name] === password } stephen = require('connect').createServer() stephen.use(authenticateUrls(private_urls, authCallback)) stephen.use(authorizeUrls(private_urls, roles)) stephen.use('/attention', worseThanUselessMiddleware) stephen.use(emailErrorNotifier({to: 'stephen@betsmartmedia.com'})) stephen.use('/bank_balance', function (req, res, next) { res.end("Don't be Seb-ish") }) stephen.use('/', function (req, res, next) { res.end("I'm out of coffee") })
  • 16. List of common uses connect middlewares ● logger request logger with custom format support ● csrf Cross-site request forgery protection ● compress Gzip compression middleware ● basicAuth basic http authentication ● bodyParser extensible request body parser ● json application/json parser ● multipart multipart/form-data parser ● timeout request timeouts ● cookieParser cookie parser ● session session management support with bundled MemoryStore ● cookieSession cookie-based session support ● methodOverride faux HTTP method support ● favicon efficient favicon server (with default icon) ● query automatic querystring parser, populating req.query ● errorHandler flexible error handler
  • 17. Middleware: Express Express does to Connect what Connect does to the http module: It offers a createServer method that extends Connect's Server prototype. So all of the functionality of Connect is there,plus view rendering and a handy DSL for describing routes. Ruby's Sinatra is a good analogy.
  • 18. Philosophy behind ExpressJS This is probably one of the most popular frameworks in the Node.js community of coders right now. The core philosophy behind ExpressJS is to offer an application framework for single or multi-page web apps, using views and template engine. The Express.js framework also includes a multitude of utilities to work with HTTP and building APIs. The pluggable middleware in the framework provides a great way to add elements, such as passportjs, as you need them.
  • 19. Cool feature 1: routing Routing is a way to map different requests to specific handlers. var express = require("express"); var http = require("http"); var app = express(); app.all("*", function(request, response, next) { response.writeHead(200, { "Content-Type": "text/plain" }); next(); }); app.get("/", function(request, response) { response.end("Welcome to the homepage!"); }); app.get("/about", function(request, response) { response.end("Welcome to the about page!"); }); app.get("*", function(request, response) { response.end("404!"); }); http.createServer(app).listen(1337);
  • 20. Cool feature 2: request handling Express augments the request and response objects that you're passed in every request handler. response.redirect("/hello/anime"); response.redirect("http://www.myanimelist.net"); response.redirect(301, "http://www.anime.org"); // HTTP status code 301 This isn't in vanilla Node and it's also absent from Connect, but Express adds this stuff. It adds things like sendFile which lets you just send a whole file: response.sendFile("/path/to/anime.mp4"); The request gets a number of cool properties, like request.ip to get the IP address and request.files to get uploaded files.
  • 21. Cool feature 3: views More features? Oh, Express, I'm blushing. Express can handle views. It's not too bad. Here's what the setup looks like: // Start Express var express = require("express"); var app = express(); // Set the view directory to /views app.set("views", __dirname + "/views"); // Let's use the Jade templating language app.set("view engine", "jade"); The first block is the same as always. Then we say "our views are in a folder called 'views'".
  • 22. Bonus cool feature: everything from Connect and Node I want to remind you that Express is built on top of Connect which is built on top of Node. This means that all Connect middleware works with Express. This is useful! For example: var express = require("express"); var app = express(); app.use(express.logger()); // Inherited from Connect app.get("/", function(req, res) { res.send("anime"); }); app.listen(1337);
  • 23. Folder Structure : My Preference /public /images (there are several images exported from Photoshop) /javascripts /stylesheets /style.css /style.less (imports home.less and inner.less) /routes /index.js /app /views /index.ejs (home page) /inner.ejs (template for every other page of the site) /controller /model /app.js /package.json
  • 25. MVC in Express var express = require('express'); ,app = express() ,fs = require('fs') // database connection var mongoose = require('mongoose'); mongoose.connect('mongodb://localhost/mydb'); // some environment variables app.set('port', process.env.PORT || 3000); app.set('views', __dirname + '/views'); app.set('view engine', 'ejs'); app.use(app.router); app.use(express.static(path.join(__dirname, 'public'))); // dynamically include routes (Controller) fs.readdirSync('./controllers').forEach(function (file) { if(file.substr(-3) == '.js') { route = require('./controllers/' + file); route.controller(app); } }); http.createServer(app).listen(app.get('port'), function(){ console.log('Express server listening on port ' + app.get('port')); });
  • 26. NodeJS HTTP Abstraction Express wonderfull middleware Philosophy behind ExpressJS MVC in NodeJS http://evanhahn.com/understanding-express/