SlideShare a Scribd company logo
1 of 36
Download to read offline
Node Meetup 
Tuesday, December 2, 2014
$ whoiam
{ 
name : “Hengki Sihombing” 
email : “hengki.sihombing@gmail.com”, 
twitter : “hengkiardo”, 
github : “aredo” 
} 
module.export =
Kickstarter Your 
Node.JS Application 
http://blog.efvincent.com/wp-content/uploads/2011/06/Capture.png
require(‘express’) 
require(‘mongoose’) 
require(‘passport’) 
require(‘async’) 
require(‘grunt’) 
require(‘demo’) 
require(‘QA’)
Why Node.JS
Answer by your self 
Why you come to this meetup :)
Express.JS 
Fast, unopinionated, minimalist web framework for Node.js 
expressjs.com 
$ npm install express
MVC Framework base on 
Express.JS 
• KrakenJs http://locomotivejs.org/ 
• Locomotive.JS http://locomotivejs.org/ 
• Sails http://locomotivejs.org/ 
• Sleek.JS http://sleekjs.com/ 
• …… 
http://www.quora.com/Why-should-I-use-Express-when-developing-a-web-app-with-Node-js 
http://evanhahn.com/understanding-express/
Why Express.JS ??? 
• Express is a lightweight framework, meaning it does not make too many 
assumptions but gives you enough to avoid re-inventing the wheel. 
• Express is preferred because it adds dead simple routing and support for 
Connect middleware, allowing many extensions and useful features 
• Like any abstraction, Express hides difficult bits and says "don't worry, you 
don't need to understand this part". It does things for you so that you don't 
have to bother. In other words, it's magic 
• https://www.google.com/#q=why+express.js 
http://www.quora.com/Why-should-I-use-Express-when-developing-a-web-app-with-Node-js 
http://evanhahn.com/understanding-express/
Simple Express App
Why Mongoose ? 
• Because it provides easy-to-use methods for interacting with MongoDB. It 
is ORM, actually. It helps you forget about driver's query documentation, 
and focus on your models. 
• Mongoose provides a straight-forward, schema-based solution to modeling 
your application data and includes built-in type casting, validation, query 
building, business logic hooks and more, out of the box. 
• Mongoose provides various functionalities which makes your life easy such 
as
MongoDB Connection with 
Mongoose
https://github.com/jaredhanson/passport 
• 140+ authentication strategies 
• Easily handle success and failure 
• Supports persistent sessions 
• Dynamic scope and permissions 
• Pick and choose required strategies 
• Implement custom strategies 
• Lightweight code base 
•Easy To Use!!
Sample Twitter Auth with Passport
Sample FB Auth with Passport
Sample Linkedin Auth with Passport
Because Javascript 
ASYNCHRONOUS
Promises 
Promises… Promises… Never break your promises. 
Personally, never make promises. 
https://blog.domenic.me/youre-missing-the-point-of-promises

Not part of the Node 
“until latest stable version” 
Makes integration more difficult. 
Makes swapping code in / out more painful. 
Callbacks 
So good it’s got it’s own website callbackhell.com
async 
https://github.com/caolan/async 
Async is a utility module which provides straight-forward, 
powerful functions for working with 
asynchronous JavaScript. Although originally 
designed for use with Node.js, it can also be 
used directly in the browser. 
$ npm install async — save
another build tools: Gulp, Make, NPM, Ant, Maven 
Why use a task runner 
or 
build system?
Automation
Automation isn’t about being 
lazy. 
It’s about being efficient
Before you get started 
$ npm install -g grunt-cli 
$ npm install —save-dev grunt
package.json to manage dependencies
Grunt Overview
Demo 
https://express4-bootstrap-starter.herokuapp.com/ 
https://github.com/aredo/express4-bootstrap-starter 
$ git clone git@github.com:aredo/express4-bootstrap-starter.git
QA! 
{ 
name : “Hengki Sihombing” 
email : “hengki.sihombing@gmail.com”, 
twitter : “hengkiardo”, 
github : “aredo” 
} 
module.export =

More Related Content

What's hot

Websites for Hackers
Websites for HackersWebsites for Hackers
Websites for HackersChris Antes
 
Rapidly scaffold your frontend with yeoman
Rapidly scaffold your frontend with yeomanRapidly scaffold your frontend with yeoman
Rapidly scaffold your frontend with yeomanSimon Waibl
 
Building fast webapps, fast - Velocity 2010
Building fast webapps, fast - Velocity 2010Building fast webapps, fast - Velocity 2010
Building fast webapps, fast - Velocity 2010marcuswestin
 
Wulin kungfu final
Wulin kungfu finalWulin kungfu final
Wulin kungfu finalJimmy Huang
 
Automated perf optimization - jQuery Conference
Automated perf optimization - jQuery ConferenceAutomated perf optimization - jQuery Conference
Automated perf optimization - jQuery ConferenceMatthew Lancaster
 
Meebo performance ny_web_performance
Meebo performance ny_web_performanceMeebo performance ny_web_performance
Meebo performance ny_web_performancemarcuswestin
 
High performance java script why everything youve been taught is wrong
High performance java script why everything youve been taught is wrongHigh performance java script why everything youve been taught is wrong
High performance java script why everything youve been taught is wrongTao Gao
 
What Multisite can do for You - Anthony Cole - WordCamp Sydney 2012
What Multisite can do for You - Anthony Cole - WordCamp Sydney 2012What Multisite can do for You - Anthony Cole - WordCamp Sydney 2012
What Multisite can do for You - Anthony Cole - WordCamp Sydney 2012WordCamp Sydney
 
Web Front End Performance
Web Front End PerformanceWeb Front End Performance
Web Front End PerformanceChris Love
 
WeBB MeetUp#1 Web applications caching techniques
WeBB MeetUp#1 Web applications caching techniquesWeBB MeetUp#1 Web applications caching techniques
WeBB MeetUp#1 Web applications caching techniquesMaciej Grajcarek
 
5 Quick JavaScript Performance Improvement Tips
5 Quick JavaScript Performance Improvement Tips5 Quick JavaScript Performance Improvement Tips
5 Quick JavaScript Performance Improvement TipsTroy Miles
 
Getting Started with Angular - Stormpath Webinar, January 2017
Getting Started with Angular - Stormpath Webinar, January 2017Getting Started with Angular - Stormpath Webinar, January 2017
Getting Started with Angular - Stormpath Webinar, January 2017Matt Raible
 
Simplicity - develop modern web apps with tiny frameworks and tools
Simplicity - develop modern web apps with tiny frameworks and toolsSimplicity - develop modern web apps with tiny frameworks and tools
Simplicity - develop modern web apps with tiny frameworks and toolsRui Carvalho
 
4 JavaScript Tools Every Designer Should Know About
4 JavaScript Tools Every Designer Should Know About4 JavaScript Tools Every Designer Should Know About
4 JavaScript Tools Every Designer Should Know AboutAaron Tweeton
 
Transforming Front-End Disaster Code™ Into A Maintainable Masterpiece
Transforming Front-End Disaster Code™ Into A Maintainable MasterpieceTransforming Front-End Disaster Code™ Into A Maintainable Masterpiece
Transforming Front-End Disaster Code™ Into A Maintainable MasterpieceDan Gribbin
 
Staying Connected: Securing Your WordPress Website
Staying Connected: Securing Your WordPress WebsiteStaying Connected: Securing Your WordPress Website
Staying Connected: Securing Your WordPress WebsiteRaymund Mitchell
 
New Perspectives on Performance
New Perspectives on PerformanceNew Perspectives on Performance
New Perspectives on Performancemennovanslooten
 
3 Gifts My Users Gave Me - Alexandra Draghici - WordCamp Europe 2017
3 Gifts My Users Gave Me - Alexandra Draghici - WordCamp Europe 20173 Gifts My Users Gave Me - Alexandra Draghici - WordCamp Europe 2017
3 Gifts My Users Gave Me - Alexandra Draghici - WordCamp Europe 2017Alexandra_CaptainForm
 

What's hot (20)

Websites for Hackers
Websites for HackersWebsites for Hackers
Websites for Hackers
 
Rapidly scaffold your frontend with yeoman
Rapidly scaffold your frontend with yeomanRapidly scaffold your frontend with yeoman
Rapidly scaffold your frontend with yeoman
 
Building fast webapps, fast - Velocity 2010
Building fast webapps, fast - Velocity 2010Building fast webapps, fast - Velocity 2010
Building fast webapps, fast - Velocity 2010
 
Wulin kungfu final
Wulin kungfu finalWulin kungfu final
Wulin kungfu final
 
Automated perf optimization - jQuery Conference
Automated perf optimization - jQuery ConferenceAutomated perf optimization - jQuery Conference
Automated perf optimization - jQuery Conference
 
Meebo performance ny_web_performance
Meebo performance ny_web_performanceMeebo performance ny_web_performance
Meebo performance ny_web_performance
 
High performance java script why everything youve been taught is wrong
High performance java script why everything youve been taught is wrongHigh performance java script why everything youve been taught is wrong
High performance java script why everything youve been taught is wrong
 
Basic web Deveopment
Basic web DeveopmentBasic web Deveopment
Basic web Deveopment
 
What Multisite can do for You - Anthony Cole - WordCamp Sydney 2012
What Multisite can do for You - Anthony Cole - WordCamp Sydney 2012What Multisite can do for You - Anthony Cole - WordCamp Sydney 2012
What Multisite can do for You - Anthony Cole - WordCamp Sydney 2012
 
Web Front End Performance
Web Front End PerformanceWeb Front End Performance
Web Front End Performance
 
WeBB MeetUp#1 Web applications caching techniques
WeBB MeetUp#1 Web applications caching techniquesWeBB MeetUp#1 Web applications caching techniques
WeBB MeetUp#1 Web applications caching techniques
 
5 Quick JavaScript Performance Improvement Tips
5 Quick JavaScript Performance Improvement Tips5 Quick JavaScript Performance Improvement Tips
5 Quick JavaScript Performance Improvement Tips
 
A team 43 C
A team 43 CA team 43 C
A team 43 C
 
Getting Started with Angular - Stormpath Webinar, January 2017
Getting Started with Angular - Stormpath Webinar, January 2017Getting Started with Angular - Stormpath Webinar, January 2017
Getting Started with Angular - Stormpath Webinar, January 2017
 
Simplicity - develop modern web apps with tiny frameworks and tools
Simplicity - develop modern web apps with tiny frameworks and toolsSimplicity - develop modern web apps with tiny frameworks and tools
Simplicity - develop modern web apps with tiny frameworks and tools
 
4 JavaScript Tools Every Designer Should Know About
4 JavaScript Tools Every Designer Should Know About4 JavaScript Tools Every Designer Should Know About
4 JavaScript Tools Every Designer Should Know About
 
Transforming Front-End Disaster Code™ Into A Maintainable Masterpiece
Transforming Front-End Disaster Code™ Into A Maintainable MasterpieceTransforming Front-End Disaster Code™ Into A Maintainable Masterpiece
Transforming Front-End Disaster Code™ Into A Maintainable Masterpiece
 
Staying Connected: Securing Your WordPress Website
Staying Connected: Securing Your WordPress WebsiteStaying Connected: Securing Your WordPress Website
Staying Connected: Securing Your WordPress Website
 
New Perspectives on Performance
New Perspectives on PerformanceNew Perspectives on Performance
New Perspectives on Performance
 
3 Gifts My Users Gave Me - Alexandra Draghici - WordCamp Europe 2017
3 Gifts My Users Gave Me - Alexandra Draghici - WordCamp Europe 20173 Gifts My Users Gave Me - Alexandra Draghici - WordCamp Europe 2017
3 Gifts My Users Gave Me - Alexandra Draghici - WordCamp Europe 2017
 

Similar to Node.JS Workshop

Intro To Node.js
Intro To Node.jsIntro To Node.js
Intro To Node.jsChris Cowan
 
Practical Use of MongoDB for Node.js
Practical Use of MongoDB for Node.jsPractical Use of MongoDB for Node.js
Practical Use of MongoDB for Node.jsasync_io
 
Introduction to node.js by jiban
Introduction to node.js by jibanIntroduction to node.js by jiban
Introduction to node.js by jibanJibanananda Sana
 
Front End Development for Back End Developers - vJUG24 2017
Front End Development for Back End Developers - vJUG24 2017Front End Development for Back End Developers - vJUG24 2017
Front End Development for Back End Developers - vJUG24 2017Matt Raible
 
Single Page Application Development with backbone.js and Simple.Web
Single Page Application Development with backbone.js and Simple.WebSingle Page Application Development with backbone.js and Simple.Web
Single Page Application Development with backbone.js and Simple.WebChris Canal
 
Building a REST API Microservice for the DevNet API Scavenger Hunt
Building a REST API Microservice for the DevNet API Scavenger HuntBuilding a REST API Microservice for the DevNet API Scavenger Hunt
Building a REST API Microservice for the DevNet API Scavenger HuntAshley Roach
 
AD113 Speed Up Your Applications w/ Nginx and PageSpeed
AD113  Speed Up Your Applications w/ Nginx and PageSpeedAD113  Speed Up Your Applications w/ Nginx and PageSpeed
AD113 Speed Up Your Applications w/ Nginx and PageSpeededm00se
 
Complete MVC on NodeJS
Complete MVC on NodeJSComplete MVC on NodeJS
Complete MVC on NodeJSHüseyin BABAL
 
Front End Development for Back End Developers - Devoxx UK 2017
 Front End Development for Back End Developers - Devoxx UK 2017 Front End Development for Back End Developers - Devoxx UK 2017
Front End Development for Back End Developers - Devoxx UK 2017Matt Raible
 
Developing JavaScript Widgets
Developing JavaScript WidgetsDeveloping JavaScript Widgets
Developing JavaScript WidgetsBob German
 
Intro to node and mongodb 1
Intro to node and mongodb   1Intro to node and mongodb   1
Intro to node and mongodb 1Mohammad Qureshi
 
Develop & Deploy Node.js app on Windows Azure
Develop & Deploy Node.js app on Windows AzureDevelop & Deploy Node.js app on Windows Azure
Develop & Deploy Node.js app on Windows AzureAndri Yadi
 
OWASP SF - Reviewing Modern JavaScript Applications
OWASP SF - Reviewing Modern JavaScript ApplicationsOWASP SF - Reviewing Modern JavaScript Applications
OWASP SF - Reviewing Modern JavaScript ApplicationsLewis Ardern
 
General Assembly Workshop: Advanced JavaScript
General Assembly Workshop: Advanced JavaScriptGeneral Assembly Workshop: Advanced JavaScript
General Assembly Workshop: Advanced JavaScriptSpike Brehm
 

Similar to Node.JS Workshop (20)

Intro To Node.js
Intro To Node.jsIntro To Node.js
Intro To Node.js
 
Node azure
Node azureNode azure
Node azure
 
Practical Use of MongoDB for Node.js
Practical Use of MongoDB for Node.jsPractical Use of MongoDB for Node.js
Practical Use of MongoDB for Node.js
 
Introduction to node.js by jiban
Introduction to node.js by jibanIntroduction to node.js by jiban
Introduction to node.js by jiban
 
Front End Development for Back End Developers - vJUG24 2017
Front End Development for Back End Developers - vJUG24 2017Front End Development for Back End Developers - vJUG24 2017
Front End Development for Back End Developers - vJUG24 2017
 
Single Page Application Development with backbone.js and Simple.Web
Single Page Application Development with backbone.js and Simple.WebSingle Page Application Development with backbone.js and Simple.Web
Single Page Application Development with backbone.js and Simple.Web
 
Building a REST API Microservice for the DevNet API Scavenger Hunt
Building a REST API Microservice for the DevNet API Scavenger HuntBuilding a REST API Microservice for the DevNet API Scavenger Hunt
Building a REST API Microservice for the DevNet API Scavenger Hunt
 
AD113 Speed Up Your Applications w/ Nginx and PageSpeed
AD113  Speed Up Your Applications w/ Nginx and PageSpeedAD113  Speed Up Your Applications w/ Nginx and PageSpeed
AD113 Speed Up Your Applications w/ Nginx and PageSpeed
 
Complete MVC on NodeJS
Complete MVC on NodeJSComplete MVC on NodeJS
Complete MVC on NodeJS
 
Meanstack overview
Meanstack overviewMeanstack overview
Meanstack overview
 
Front End Development for Back End Developers - Devoxx UK 2017
 Front End Development for Back End Developers - Devoxx UK 2017 Front End Development for Back End Developers - Devoxx UK 2017
Front End Development for Back End Developers - Devoxx UK 2017
 
Developing JavaScript Widgets
Developing JavaScript WidgetsDeveloping JavaScript Widgets
Developing JavaScript Widgets
 
Intro to node and mongodb 1
Intro to node and mongodb   1Intro to node and mongodb   1
Intro to node and mongodb 1
 
BackEnd-Roadmap.pdf
BackEnd-Roadmap.pdfBackEnd-Roadmap.pdf
BackEnd-Roadmap.pdf
 
Develop & Deploy Node.js app on Windows Azure
Develop & Deploy Node.js app on Windows AzureDevelop & Deploy Node.js app on Windows Azure
Develop & Deploy Node.js app on Windows Azure
 
Nodejs web,db,hosting
Nodejs web,db,hostingNodejs web,db,hosting
Nodejs web,db,hosting
 
OWASP SF - Reviewing Modern JavaScript Applications
OWASP SF - Reviewing Modern JavaScript ApplicationsOWASP SF - Reviewing Modern JavaScript Applications
OWASP SF - Reviewing Modern JavaScript Applications
 
Ember
EmberEmber
Ember
 
General Assembly Workshop: Advanced JavaScript
General Assembly Workshop: Advanced JavaScriptGeneral Assembly Workshop: Advanced JavaScript
General Assembly Workshop: Advanced JavaScript
 
WebAssemlby vs JavaScript
WebAssemlby vs JavaScriptWebAssemlby vs JavaScript
WebAssemlby vs JavaScript
 

Node.JS Workshop

  • 1. Node Meetup Tuesday, December 2, 2014
  • 3. { name : “Hengki Sihombing” email : “hengki.sihombing@gmail.com”, twitter : “hengkiardo”, github : “aredo” } module.export =
  • 4. Kickstarter Your Node.JS Application http://blog.efvincent.com/wp-content/uploads/2011/06/Capture.png
  • 5. require(‘express’) require(‘mongoose’) require(‘passport’) require(‘async’) require(‘grunt’) require(‘demo’) require(‘QA’)
  • 7. Answer by your self Why you come to this meetup :)
  • 8. Express.JS Fast, unopinionated, minimalist web framework for Node.js expressjs.com $ npm install express
  • 9. MVC Framework base on Express.JS • KrakenJs http://locomotivejs.org/ • Locomotive.JS http://locomotivejs.org/ • Sails http://locomotivejs.org/ • Sleek.JS http://sleekjs.com/ • …… http://www.quora.com/Why-should-I-use-Express-when-developing-a-web-app-with-Node-js http://evanhahn.com/understanding-express/
  • 10. Why Express.JS ??? • Express is a lightweight framework, meaning it does not make too many assumptions but gives you enough to avoid re-inventing the wheel. • Express is preferred because it adds dead simple routing and support for Connect middleware, allowing many extensions and useful features • Like any abstraction, Express hides difficult bits and says "don't worry, you don't need to understand this part". It does things for you so that you don't have to bother. In other words, it's magic • https://www.google.com/#q=why+express.js http://www.quora.com/Why-should-I-use-Express-when-developing-a-web-app-with-Node-js http://evanhahn.com/understanding-express/
  • 12. Why Mongoose ? • Because it provides easy-to-use methods for interacting with MongoDB. It is ORM, actually. It helps you forget about driver's query documentation, and focus on your models. • Mongoose provides a straight-forward, schema-based solution to modeling your application data and includes built-in type casting, validation, query building, business logic hooks and more, out of the box. • Mongoose provides various functionalities which makes your life easy such as
  • 14. https://github.com/jaredhanson/passport • 140+ authentication strategies • Easily handle success and failure • Supports persistent sessions • Dynamic scope and permissions • Pick and choose required strategies • Implement custom strategies • Lightweight code base •Easy To Use!!
  • 15. Sample Twitter Auth with Passport
  • 16. Sample FB Auth with Passport
  • 17. Sample Linkedin Auth with Passport
  • 19. Promises Promises… Promises… Never break your promises. Personally, never make promises. https://blog.domenic.me/youre-missing-the-point-of-promises
  • 20.
  • 21. Not part of the Node “until latest stable version” Makes integration more difficult. Makes swapping code in / out more painful. Callbacks So good it’s got it’s own website callbackhell.com
  • 22. async https://github.com/caolan/async Async is a utility module which provides straight-forward, powerful functions for working with asynchronous JavaScript. Although originally designed for use with Node.js, it can also be used directly in the browser. $ npm install async — save
  • 23.
  • 24.
  • 25.
  • 26. another build tools: Gulp, Make, NPM, Ant, Maven Why use a task runner or build system?
  • 28. Automation isn’t about being lazy. It’s about being efficient
  • 29.
  • 30.
  • 31.
  • 32. Before you get started $ npm install -g grunt-cli $ npm install —save-dev grunt
  • 33. package.json to manage dependencies
  • 36. QA! { name : “Hengki Sihombing” email : “hengki.sihombing@gmail.com”, twitter : “hengkiardo”, github : “aredo” } module.export =