Index

A

A records, Nameservers
Accepts HTTP header, Handling AJAX Forms
Access-Control-Allow-Origin header, Cross-Origin Resource Sharing (CORS)
action attribute, <form> tag, HTML Forms
admin interfaces, Subdomains
aesthetics, QA: Is It Worth It?
Airbrake, Application Failures
AJAX, Prioritize Lead Tracking
form handling, using dedicated URL, Different Approaches to Form Handling
handling AJAX forms in Express, Handling AJAX Forms
results of calls, receiving as JSON, Client-Side Handlebars
Amazon S3 account, saving files to, Cloud Persistence
Amazon Simple Email Service (SES), SMTP, MSAs, and MTAs, Sending Mail
Amazon Simple Notification Service (SNS), Application Failures
Amazon Web Services (AWS), Elastic Beanstalk (EB), Amazon deployment with Elastic Beanstalk
Amazon, cloud computing services, The behemoths
analytics, Monitor Analytics
Angular framework, Introducing Express
Apache 2.0 license, Licensing
Apache, Node versus, Node: A New Kind of Web Server
APIs
csurf middlewae and, Cross-Site Request Forgery
providing, Providing an API
third-party, integrating with, Integrating with Third-Party APIsConclusion
geocoding, GeocodingImproving Client-Side Performance
social media, Social MediaRendering Tweets
weather data, Weather Data
app clusters, Scaling Out with App Clusters
adding cluster support to the website, Scaling Out with App Clusters
uncaught exceptions and, Handling Uncaught Exceptions
app file, Initial Steps
naming, Initial Steps
app.all, Middleware
app.configure, Upgrading to Express 4.0
app.defaultConfiguration, Debugging Express
app.get, Initial Steps, Middleware
app.get(env), Upgrading to Express 4.0
app.post, Middleware
app.render, Debugging Express
app.set, Execution Environments
app.use, Initial Steps, Middleware, Debugging Express
app.use(app.router), removal for Express 4.0, Upgrading to Express 4.0
application failures, monitoring, Application Failures
assert function, Page Testing
asset versioning, Static Mapping, Changing Your Static Content
asynchronous functions, debugging, Debugging Asynchronous Functions
attribution, Version Control
authentication, Authentication
adding additional providers, Adding Additional Authentication Providers
HTTPS and, HTTPS
Passport module, PassportSetting up Passport
setting up, Setting up Passport
passwords, problem with, The Problem with Passwords
storing users in your database, Storing Users in Your Database
third-party, Third-Party Authentication
versus authorization, Authentication Versus Authorization
versus registration and user experience, Authentication Versus Registration and the User Experience
authorization
role-based, Role-Based Authorization
verifying, Passport
versus authentication, Authentication Versus Authorization
authorization filter, creating, Route Handlers Are Middleware
Azure, The behemoths
deployment to, Deployment to Azure
Git-based deployments, Deployment

B

Basavaraj, Veena, Choosing a Template Engine
bash shell, Using the Terminal
basicAuth middleware, Common Middleware
behavior-driven development (BDD)
in Mocha, Page Testing
Berkeley Software Distribution (BSD) license, Licensing
Berners-Lee, Tim, Routing
Bert, William, Handling Uncaught Exceptions
best practices, Best Practices
binary downloads, Static Content
Bing
geocoding service, Geocoding with Google
Webmaster Tools, Do Routine QA Checks
Bitbucket, Deployment to Azure
blocks, Blocks
body-parser middleware, Upgrading to Express 4.0, Form Handling with Express, Common Middleware
boilerplate code, Scaffolding
Bootstrap, Scaffolding, Form Handling with Express
alert messages, Using Sessions to Implement Flash Messages
online documentation, Online Documentation
boutique hosting services, Boutique hosting
breakpoints, Node Inspector
browserify, Static Resources in Client-Side JavaScript
browsers
CACert and, Using a Free Certificate Authority
caching, Performance Considerations, Serving Static Resources
headless, Cross-Page Testing, Automating with Grunt
information passed in request headers, Request Headers
plugin showing status code of HTTP requests and redirects, Initial Steps
trusted root certificates, HTTPS
viewing cookies, Examining Cookies
viewing response headers, Response Headers
BSD (Berkeley Software Distribution) license, Licensing
bulk email, sending, Sending Mail to Multiple Recipients
bundling, Changing Your Static Content
and minification, Bundling and Minification
skipping in development mode, Skipping Bundling and Minification in Development Mode
third-party libraries and, A Note on Third-Party Libraries

C

CACert, Using a Free Certificate Authority
Cache-Control header, Serving Static Resources
caching
browser, Performance Considerations, Serving Static Resources
refreshing server-side cache (example), Geocoding Your Data
templates, Server-Side Templates
call stack, Node Inspector
Campaign Monitor, Better Options for Bulk Email, Prioritize Lead Tracking
catastrophic errors, API Error Reporting
CDNs (see content delivery networks)
certificate authorities (CAs), HTTPS
commercial, purchasing a certificate from, Purchasing a Certificate
using a free CA, Using a Free Certificate Authority
certificate insurance, Purchasing a Certificate
certificates, HTTPS
chained root certificates, avoiding, Purchasing a Certificate
domain, organization, and extended validation, Purchasing a Certificate
generating your own, Generating Your Own Certificate
single-domain, multisubdomain, multidomain, and wildcard, Purchasing a Certificate
Chai assertion library, Page Testing
chained root certificates, Purchasing a Certificate
Chrome, Node Inspector
Ayima’s Redirect Path, Initial Steps
Postman - REST Client plugin, Our Tests
viewing cookies, Examining Cookies
viewing response headers, Response Headers
Chromium project, Blink engine, Node Inspector
CI (see continuous integration)
client errors, API Error Reporting
client-side JavaScript, Static Content
static resources in, Static Resources in Client-Side JavaScript
client-side templating with Handlebars, Client-Side Handlebars
client/server applications, web-based, Routing
cloud computing
and treating web servers as generic commodities, Node: A New Kind of Web Server
services, The behemoths
storage services, Filesystem Persistence
cloud hosting, Traditional hosting, or cloud hosting?
SaaS, PaaS, and IaaS, XaaS
cloud persistence, Cloud Persistence
cluster.fork, Scaling Out with App Clusters
cluster.isMaster and cluster.isWorker properties, Scaling Out with App Clusters
CNAME records, Nameservers
Coates, Danny, Node Inspector
code examples from this book, Using Code Examples
code reuse and refactoring, Code Reuse and Refactoring
middleware, Middleware
private npm registry, Private npm Registry
code reviews, Exercise Good Hygiene
Codio, Using the Terminal
command prompt, Using the Terminal
(see also terminals)
comments in Handlebars versus HTML, Comments
Comodo Group, Purchasing a Certificate
compilation of JavaScript by Google’s V8, Node: A New Kind of Web Server
compression, Performance Considerations
ConEmu, Using the Terminal
Connect library, A Brief History of Express
common middleware in, Common Middleware
contributing to, Contributing to Express
installing and having available in applications, Common Middleware
installing for Express version 4.0, Upgrading to Express 4.0
connect-bundle module, Skipping Bundling and Minification in Development Mode
connect-redis package, Using MongoDB for Session Storage
connect-rest plugin, Using a REST Plugin, Cross-Site Request Forgery
consoles, Using the Terminal
(see also terminals)
Node Inspector, Node Inspector
using REPL and the console in debugging, Take Advantage of REPL and the Console
consumer key and consumer secret, Searching for Tweets
content delivery networks (CDNs), Future-Proofing Your Website
content type, view engine returning text/html by default, Views and Layouts
Content-Type header, Initial Steps, Response Headers
Internet media types, Internet Media Types
context, view engine/Handlebars, The Response Object, Handlebars Basics
accessing current context with . (period), Blocks
blocks and, Blocks
partials, Partials
specifying a different template, Using Layouts (or Not) in Express
specifying layout: null, Using Layouts (or Not) in Express
template engine combining view, layout, and context, Views and Layouts
continuous integration (CI), Continuous Integration (CI)
controllers (in model-view-controller pattern), Implementing MVC in Express
creating, Controllers
Cookie request headers, Cookies and Sessions
cookie secret, Externalizing Credentials
cookie-based sessions, Sessions
cookie-parser middleware, Cookies in Express, Common Middleware
cookie-session middleware, Common Middleware
cookies, Cookies and SessionsSessions
examining, Examining Cookies
externalizing credentials, Externalizing Credentials
important points about cookies, Cookies and Sessions
in Express, Cookies in Express
names of, Cookies in Express
specifying cookie options, Cookies in Express
sessions and, What to Use Sessions For
CORS (see cross-origin resource sharing)
createApplication function, Debugging Express
credentials
externalizing, Externalizing Credentials
importing into your application, Externalizing Credentials
Crockford, Douglas, Linting, JSON and XML
cross-origin resource sharing (CORS), Cross-Origin Resource Sharing (CORS), Performance Considerations
cross-page testing, Overview of QA Techniques, Cross-Page Testing
cross-site HTTP requests, Cross-Origin Resource Sharing (CORS)
cross-site request forgery (CSRF), Cross-Site Request Forgery
CRT file, Generating Your Own Certificate
CSS, Static Content
bundling and minifying files, Bundling and Minification
online documentation, Online Documentation
static resources in, Static Resources in CSS
static resources referenced in, Future-Proofing Your Website
styling file upload button, jQuery File Upload
csurf middleware, Common Middleware, Cross-Site Request Forgery
Ctrl-S on Unix-like systems, Using the Terminal
currency conversions, Using MongoDB for Session Storage

D

Dahl, Ryan, The JavaScript Revolution
database persistence, Database Persistence
adding data, Adding Data
creating schemas and models, Creating Schemas and Models
database connections with Mongoose, Database Connections with Mongoose
for REST API, Our Data Store
performance and, A Note on Performance
retrieving data, Retrieving Data
seeding initial data, Seeding Initial Data
setting up MongoDB, Setting Up MongoDB
using MongoDB for session storage, Using MongoDB for Session Storage
database server, The Node Ecosystem
databases
performance, NoSQL versus relational databases, A Note on Performance
relational, Database Persistence
storing users in, Storing Users in Your Database
use with Node, The Node Ecosystem
debugging, DebuggingDebugging Express
asynchronous functions, Debugging Asynchronous Functions
Express, Debugging Express
first principle of, The First Principle of Debugging
using Node Inspector, Node InspectorNode Inspector
using Node’s built-in debugger, Using Node’s Built-in Debugger
using REPL and the console, Take Advantage of REPL and the Console
default layout for views, Views and Layouts
delegated authentication, Third-Party Authentication
DELETE method, HTTP Request Methods
DEL endpoint, Providing an API
dependencies, listing for a project, npm Packages
deployment, DeploymentAmazon deployment with Elastic Beanstalk
manual Git-based deployment, Manual Git-based deployment
to Azure, Deployment to Azure
using Git, Git deployment
Amazon deployment with Elastic Beanstalk, Amazon deployment with Elastic Beanstalk
development and quality assurance (QA), Quality Assurance
development mode
environment-specific configuration choices, Environment-Specific Configuration
skipping bundling and minification, Skipping Bundling and Minification in Development Mode
using morgan for logging, Environment-Specific Configuration
directory middleware, Common Middleware
distributed version control systems (DVCS), Version Control
DNS (Domain Name System, Domain Name System
document databases, Database Persistence
documentation, Version Control
online, Online Documentation
domain certificates, Purchasing a Certificate
domain names, Domain Registration and Hosting
domain registration and hosting, Domain Registration and HostingBoutique hosting
hosting, Hosting
traditional or cloud, Traditional hosting, or cloud hosting?
name servers, Nameservers
security, Security
subdomains, Subdomains
top-level domains (TLDs), Top-Level Domains
domains
specifying for REST API, Using a REST Plugin
using to deal with uncaught exceptions, Handling Uncaught Exceptions
Doyle, Arthur Conan, The First Principle of Debugging
dual licensed software, Licensing
Dust (template engine), Choosing a Template Engine
DVCS (distributed version control systems), Version Control
dynamic IP address, Nameservers

E

EB (Elastic Beanstalk), Amazon deployment with Elastic Beanstalk
ECMA-262 ECMAScript language specification, Online Documentation
editors, Editors
associating .handlebars and .hbs files with HTML, Views and Layouts
Elastic Beanstalk (EB), Amazon deployment with Elastic Beanstalk
elimination, The First Principle of Debugging
Emacs, Editors
email, Sending EmailEmail as a Site Monitoring Tool
formats, Email Formats
headers, Email Headers
HTML, HTML Email
Nodemailer, Nodemailer
receiving, Receiving Email
sending
bulk email, Better Options for Bulk Email
encapsulating email functionality, Encapsulating Email Functionality
HTML email, Sending HTML Email
images in HTML email, Images in HTML Email
SMTP, MSAs, and MTAs, SMTP, MSAs, and MTAs
to multiple recipients, Sending Mail to Multiple Recipients
using Nodemailer, Sending Mail
using views to send HTML email, Using Views to Send HTML Email
using as site monitoring tool, Email as a Site Monitoring Tool
using to monitor application failures, Application Failures
Ember framework, Introducing Express
encapsulation, using Node modules, Node Modules
encoding for forms, Encoding
encryption, Purchasing a Certificate
level of, certificates and, Purchasing a Certificate
endpoint, Providing an API
entropic functionality, testing, Logic Testing
error-handling middleware, Middleware
errorhandler middleware, Common Middleware
errors
AJAX handler returning object with err property, Prioritize Lead Tracking
failed tests in Mocha, Cross-Page Testing
finding potential errors using linting, Overview of QA Techniques
in AJAX form handling, Handling AJAX Forms
invisible failures, Prevent “Invisible” Failures
monitoring for your site, using email, Email as a Site Monitoring Tool
providing custom error page, Handling Uncaught Exceptions
reporting in a REST API, API Error Reporting
sending email using Nodemailer, Sending Mail
ESLint, Linting
ETag header, Serving Static Resources
event-driven programming, Event-Driven Programming
example website, Example Website
exceptions, uncaught, handling, Handling Uncaught Exceptions
execution environments, Execution Environments
expect function (Chai assertion library), Page Testing
Expires header, Serving Static Resources
exporting functionality from Node modules, Node Modules
Express, Who This Book Is For, Saving Time with ExpressConclusion
brief history of, A Brief History of Express
contributing to, Contributing to Express
cookies in, Cookies in Express
debugging, Debugging Express
defined, Introducing Express
disabling X-Powered-By response header, Response Headers
documentation, Online Documentation
Express API documentation, Getting More Information
form handling, Form Handling with Express
form handling with
AJAX forms, Handling AJAX Forms
Handlebars support for, Server-Side Templates
HTTPS, enabling for your app, Enabling HTTPS for Your Express App
installing, Initial Steps
JavaScript revolution, The JavaScript Revolution
licensing Node applications, Licensing
Meadowlark Travel example website, The Meadowlark Travel Website
ititial steps, Initial Steps
model-view-controller (MVC) pattern, implementing, Implementing MVC in ExpressConclusion
Node ecosystem, The Node Ecosystem
Node, a new kind of server, Node: A New Kind of Web Server
removal of middleware from, Common Middleware
request object, The Request Object
response object, The Response Object
REST API, Using Express to Provide an API
routing
subdomains, Subdomains
saving time with
scaffolding, Scaffolding
source code, Getting More Information
static files and views, handling by middleware, Static Files and Views
upgrading from version 3.0 to 4.0, Upgrading to Express 4.0
versions, A Brief History of Express
views and layouts, Views and Layouts
views, dynamic content in, Dynamic Content in Views
express-logger, Environment-Specific Configuration
express-namespace, Other Approaches to Route Organization
express-resource, Other Approaches to Route Organization
express-session middleware, Memory Stores, Common Middleware
express.Router(), Subdomains
express3-handlebars package, Views and Layouts
extended validation certificates, Purchasing a Certificate
externalizing credentials, Externalizing Credentials

F

Facebook, Social Media
purchase of fb.com domain, Top-Level Domains
Facebook app, Setting up Passport
Facebook authentication strategy, Setting up PassportRole-Based Authorization
federated authentication, Third-Party Authentication
Ferraiuolo, Eric, Views and Layouts
file uploads, File Uploads
creating for Meadowlark Travel example website, File Uploads
jQuery, jQuery File Upload
file-based storage, problems with, Scaling Your Website
filesystem persistence, Filesystem Persistence
storing files from photo contest (example), Filesystem Persistence
fingerprinting resource bundles, Changing Your Static Content
bundled and minified CSS and JavaScript files, Bundling and Minification
flash messages, implemening using sessions, Using Sessions to Implement Flash Messages
flat files, Filesystem Persistence
flexibility of Express, Introducing Express
FormData interface, File Uploads
Formidable, File Uploads
forms, Form HandlingjQuery File Upload
constructing HTML forms, HTML Forms
encoding, Encoding
form handler for vacation photo contest (example), Filesystem Persistence
handling
AJAX forms, Handling AJAX Forms
deciding on response to send back to browser, Different Approaches to Form Handling
different approaches to, Different Approaches to Form Handling
file uploads, File Uploads
jQuery file upload, jQuery File Upload
with Express, Form Handling with Express
processing, Processing Forms
sending client data to the server, Sending Client Data to the Server
fortune cookies for Meadowlark Travel example website, Dynamic Content in Views
modularizing, Node Modules
unit testing the fortune generator, Logic Testing
forward-facing proxy, Scaling Out with Multiple Servers
fragment in URLs, The Parts of a URL
fs (filesystem) module, Filesystem Persistence
fs.readFile function, Serving Static Resources, Debugging Asynchronous Functions
Fuel, Don’t Procrastinate
fully qualified domain name (FQDN), Generating Your Own Certificate
functionality of your site, quality of, QA: Is It Worth It?

G

-g (global) option, installing npm packages on Windows, Using the Terminal
Gemfury, Private npm Registry
geocoding, GeocodingImproving Client-Side Performance
using Google API, Geocoding with Google
displaying a map, Displaying a Map
geocoding your data, Geocoding Your Data
improving client-side performance, Improving Client-Side Performance
usage restrictions, Usage restrictions
geographic coordinates, Geocoding
geographic optimization, Future-Proofing Your Website
GET method, HTTP Request Methods, Sending Client Data to the Server
GET endpoints, Providing an API
in a REST API, Our API
in REST API tests, Our Tests
Git, Version Control
adding files to repository with git add, If You’re Following Along by Doing It Yourself
committing changes with git commit, If You’re Following Along by Doing It Yourself
creating .gitignore file, If You’re Following Along by Doing It Yourself
creating a repository, If You’re Following Along by Doing It Yourself
creating experimental branch, If You’re Following Along by Using the Official Repository
deploying your application with, DeploymentAmazon deployment with Elastic Beanstalk
automated deployments, Amazon deployment with Elastic Beanstalk
manual Git-based deployment, Manual Git-based deployment
following along using official repository, If You’re Following Along by Using the Official Repository
how to use it in this book, How to Use Git with This Book
GitHub, Deployment
GlobalSign, Purchasing a Certificate
Go Daddy, Purchasing a Certificate
going live, Going LiveConclusion
deployment, DeploymentAmazon deployment with Elastic Beanstalk
domain registration and hosting, Domain Registration and HostingBoutique hosting
DNS (Domain Name System), Domain Name System
hosting, HostingBoutique hosting
nameservers, Nameservers
security, Security
subdomains, Subdomains
top-level domains (TLDs), Top-Level Domains
Google
API key, Displaying a Map
authenticating with, Adding Additional Authentication Providers
cloud computing services, The behemoths
Geocoding API, Geocoding with Google
PageSpeed, Optimize Performance
V8, Node: A New Kind of Web Server
Webmaster Tools, Do Routine QA Checks
Google Analytics (GA), Monitor Analytics
GPL (GNU General Public License), Licensing
combining with MIT license, Licensing
Grunt, Running Your Server
automating QA testing with, Automating with Grunt
compiling LESS to generate CSS, Static Resources in CSS
grunt-lint-pattern module, QA
Gruntfile.js, configure plugins section, Automating with Grunt
Gruntfile.js, load plugins section, Automating with Grunt
installing globally, using npm, npm
plugins, Automating with Grunt
registering tasks in Gruntfile.js, Automating with Grunt
running, Automating with Grunt
using for bundling and minification, Bundling and Minification

H

Handlebars templating engine, Views and Layouts, Choosing a Template Engine
(see also templating with Handlebars)
HAProxy, Scaling Out with Multiple Servers
Haraka, Receiving Email
hash in URLs, The Parts of a URL
hashres task, Bundling and Minification
<head> element in main.handlebars, modifying to include test framework, Page Testing
<header> element, Static Files and Views
headers
email, Email Headers
HTTP requests, Request Headers
HTTP responses, Response Headers
headers property (request object), Request Headers
headless browser, Cross-Page Testing, Automating with Grunt
Holowaychuk, TJ, A Brief History of Express, Upgrading to Express 4.0, Views and Layouts
hosting, Domain Registration and Hosting, HostingBoutique hosting
boutique hosting services, Boutique hosting
cloud hosting
acronyms, XaaS
the behemoths, The behemoths
traditional or cloud, Traditional hosting, or cloud hosting?
hosts file, Using a Subdomain
hosts, hostname in URLs, The Parts of a URL
HTML
email, HTML Email
images in, Images in HTML Email
sending, Sending HTML Email
using views to send, Using Views to Send HTML Email
files for static resources, Serving Static Resources
generating using JavaScript, Templating with Handlebars
in Content-Type response header, Response Headers
online documentation, Online Documentation
rendering with Handlebars, Handlebars Basics
sending direct HTML response in form handling, Different Approaches to Form Handling
views, Views and Layouts
HTML Email Boilerplate, HTML Email, Using Views to Send HTML Email
HTML5
<header> element, Static Files and Views
local storage, Sessions
online documentation, Online Documentation
HTML5 Boilerplate, Scaffolding, Perfecting Your Templates
HTTP
port 80 as default, A Note on Ports
requests and responses (see request and response objects)
stateless protocol, Cookies and Sessions
HTTP module, Getting More Information
HTTP status codes
browser plugin showing, Initial Steps
error reporting in a REST API, API Error Reporting
view engine returning 200 status code by default, Views and Layouts
HTTP verbs, Initial Steps, HTTP Request Methods
in a REST API, Our API
method-override middleware, Common Middleware
route handlers for, Middleware
testing our REST API, Our Tests
http.IncomingMessage object, The Request Object
http.ServerResponse object, The Response Object
HTTPS, HTTPS
enabling for your Express app, Enabling HTTPS for Your Express App
generating your own certificate, Generating Your Own Certificate
getting certificate from free certificate authority, Using a Free Certificate Authority
ports and, A Note on Ports
proxies and, HTTPS and Proxies
purchasing a certificate, Purchasing a Certificate
hybrid (multipage and single-page) web applications, Introducing Express

I

IA (see information architecture)
IaaS (Infrastructure as a Service), XaaS
IIS (Internet Information Services), Node versus, Node: A New Kind of Web Server
ImageMagick, jQuery File Upload
images
background image for a site, Static Resources in CSS
in HTML email, Images in HTML Email
shopping cart, on the client, Static Resources in Client-Side JavaScript
small, combining into a single sprite, Performance Considerations
information architecture (IA), Routing
suggestions for designing lasting IA, Routing
Infrastructure as a Service (IaaS), XaaS
installer (standalone) for node, Getting Node
integration testing, The Types of Tests
Internet Corporation for Assigned Names and Numbers (ICANN), Top-Level Domains
Internet media types, Internet Media Types
invisible failures, preventing, Prevent “Invisible” Failures
IP addresses, Domain Registration and Hosting
static and dynamic, Nameservers
issue tracking, Use an Issue Tracker

J

Jade, Views and Layouts, Jade: A Different Approach
JavaScript
bundling and minifying files, Bundling and Minification
client-side, as static resource, Static Content
credentials.js file, Externalizing Credentials
failure of, fallback for, Prioritize Lead Tracking
floating-point numbers and financial computations, Creating Schemas and Models
generating HTML with, Templating with Handlebars
in Node, The Node Ecosystem
JavaScript engine used by Node (Google V8), Node: A New Kind of Web Server
logic testing (fortune generator example), Logic Testing
misconceptions about, The JavaScript Revolution
online documentation, Online Documentation
promise of all-JavaScript technology stack, The JavaScript Revolution
resources for learning, Who This Book Is For
server-side containers, The Node Ecosystem
specifying files to be linted for JSHint, Automating with Grunt
static resources in client-side JavaScript, Static Resources in Client-Side JavaScript
static resources in server-side JavaScript, Static Resources in Server-Side JavaScript
static resources referenced in code, Future-Proofing Your Website
utilities, installing globally, using npm, npm
JavaScript stack, The Node Ecosystem
Jenkins (CI server), Continuous Integration (CI)
JetBrain (CI server), Continuous Integration (CI)
Joyent, The behemoths
jQuery
dynamically changing shopping cart image, Static Resources in Client-Side JavaScript
File Upload middleware, jQuery File Upload
documentation, jQuery File Upload
not included in bundles, A Note on Third-Party Libraries
online documentation, Online Documentation
using to test assertions, Page Testing
JSHint, Linting
Grunt plugin for, Automating with Grunt
specifying JavaScript files to be linted, Automating with Grunt
JSLint, Linting
JSON, JSON and XML
configuration file for connect-bundle, Skipping Bundling and Minification in Development Mode
receiving results of AJAX calls as, Client-Side Handlebars
returning in AJAX form handling, Handling AJAX Forms
json (middleware), Common Middleware
Just in Time (JIT) compilation, Node: A New Kind of Web Server

K

key-value databases, Database Persistence
keyword monitors, Third-Party Uptime Monitors
Kovalyov, Anton, Linting

L

LAMP stack (Linux, Apache, MySQL, and PHP), The Node Ecosystem
Last-Modified header, Serving Static Resources
LastPass, Third-Party Authentication
layouts, Views and Layouts, Views and Layouts
adding header to every page, Static Files and Views
modifying to conditionally include test framework, Page Testing
referencing bundled and minified files, Bundling and Minification
templating engine rendering view with a layout, Views and Layouts
using (or not) in Express, Using Layouts (or Not) in Express
lead tracking, prioritizing, Prioritize Lead Tracking
LESS, Static Resources in CSS
linking in static mapper as LESS custom function, Static Resources in CSS
lib/application.js (Express source code), Getting More Information
lib/express.js (Express source code), Getting More Information
lib/request.js (Express source code), Getting More Information
lib/response.js (Express source code), Getting More Information
lib/router/route.js (Express source code), Getting More Information
libraries
bundling third-party libraries, A Note on Third-Party Libraries
third-party, Page Testing
licensing for Node applications, Licensing
link checking, Overview of QA Techniques, Link Checking
LinkChecker, Link Checking
configuring grunt-exec plugin to run, Automating with Grunt
no Grunt plugin for, Automating with Grunt
LinkedIn, templating language, Choosing a Template Engine
links, testing in page-specific test, Page Testing
linting, Overview of QA Techniques, Linting
catching unmapped statics, QA
specifying JavaScript files for JSHint, Automating with Grunt
Linux
commands in background and foreground, Node Inspector
installing Node, Getting Node
Node on, Node: A New Kind of Web Server
package managers, Node installation and, Getting Node
shells, Using the Terminal
Linux VM, using for development on Windows, Using the Terminal
Litmus, email testing, HTML Email
load testing, Stress Testing
loadtest, Stress Testing
localhost, A Simple Web Server with Node, Using a Subdomain
logging
adding to an application, Environment-Specific Configuration
console, Take Advantage of REPL and the Console
errors, Prevent “Invisible” Failures
logger middleware, Debugging Express
logic testing, Overview of QA Techniques, Logic Testing
configuring Mocha plugin for Grunt, Automating with Grunt
logic versus presentation, Logic Versus Presentation
longevity plan, Have a Longevity Plan
loopback address, IPv4 or IPv6, A Simple Web Server with Node
lossless size reduction, Performance Considerations
lossy size reduction, Performance Considerations

M

Mac OS X
creating .gitignore file, If You’re Following Along by Doing It Yourself
installing Node, Getting Node
Node on, Node: A New Kind of Web Server
running commands in background or foreground, Node Inspector
shells, Using the Terminal
Mail Submission Agents (MSAs), SMTP, MSAs, and MTAs
errors sending email, Sending Mail
Mail Transfer Agents (MTAs), SMTP, MSAs, and MTAs
MailChimp
article on writing HTML email, HTML Email
bulk email service, Better Options for Bulk Email
main.handlebars file, modifying <head> element to include test framework, Page Testing
maintenance, MaintenanceConclusion
code reuse and refactoring, Code Reuse and Refactoring
principles of
doing routine QA checks, Do Routine QA Checks
don’t procrastinate, Don’t Procrastinate
exercising good hygiene, Exercise Good Hygiene
longevity plan, Have a Longevity Plan
monitoring analytics, Monitor Analytics
optimizing performance, Optimize Performance
preventing invisible failures, Prevent “Invisible” Failures
prioritizing lead tracking, Prioritize Lead Tracking
using an issue tracker, Use an Issue Tracker
using source control, Use Source Control
maps, Geocoding
(see also geocoding)
displaying geocoded dealers map (example), Displaying a Map
Markdown, Project Metadata, Stack Overflow
master pages, Views and Layouts
MDN (Mozilla Developer Network), Online Documentation
Meadowlark Travel example website, Example Website, The Meadowlark Travel Website
creating file upload for photo contest, File Uploads
cross-page testing, Cross-Page Testing
initial steps, Initial Steps
modifying to allow running tests, Page Testing
meadowlark.js file (example), Initial Steps
defining array of fortune cookies, Dynamic Content in Views
linting with JSHint, Linting
MEAN stack (Mongo, Express, Angular, and Node), The Node Ecosystem
Mercurial, Version Control, Deployment
method-override middleware, Common Middleware
Microsoft
.NET, The JavaScript Revolution
Azure cloud storage, saving files to, Cloud Persistence
cloud computing services, The behemoths
IIS (Internet Information Services), Node: A New Kind of Web Server
model-view-view model (MVVM), Implementing MVC in Express
PowerShell, Using the Terminal
Visual Studio, Editors
middleware, A Brief History of Express, MiddlewareThird-Party Middleware
adding in Express, Initial Steps, Debugging Express
common, Common Middleware
defined, Middleware
function exported by a module, Middleware
handling static files and views in Express, Static Files and Views
important points about middleware and route handlers, Middleware
injecting weather data into res.locals.partials object, Partials
jquery-file-upload-middleware package, jQuery File Upload
logger, Debugging Express
module exporting an object containing properties, Middleware
requirement to be a function, Middleware
reusable, packaging, Middleware
module exposing a function returning middleware, Module exposes a function that returns middleware
module exposing an object constructor, Module exposes an object constructor
module exposing an object containing middleware, Module exposes an object that contains middleware
module exposing middleware function directly, Middleware
route handlers, Route Handlers Are Middleware
session, Debugging Express
static, Debugging Express
third-party, Third-Party Middleware
migration guide, upgrading Express 3.0 to 4.0, Upgrading to Express 4.0
MIME (Multipurpose Internet Mail Extensions) types, Internet Media Types
minification, Bundling and Minification
skipping in development mode, Skipping Bundling and Minification in Development Mode
MIT license, Licensing
combining with GPL, Licensing
Mocha, Page Testing
configuring cafemocha plugin for Grunt, Automating with Grunt
Grunt plugin for, Automating with Grunt
multiple interfaces controlling style of your tests, Page Testing
using for cross-page testing, Cross-Page Testing
using for logic testing, Logic Testing
model-view-controller (MVC) pattern, Views and Layouts
implementing in Express, Implementing MVC in ExpressConclusion
controllers, Controllers
models, Models
view models, View Models
model-view-view model (MVVM), Implementing MVC in Express
models, Mongoose, Models
creating, Creating Schemas and Models, Adding Data
creating for users, Storing Users in Your Database
defined, Implementing MVC in Express
modules
declaring routes in, Declaring Routes in a Module
exposing a function returning middleware, Module exposes a function that returns middleware
exposing an object constructor, Module exposes an object constructor
exposing an object containing middleware, Module exposes an object that contains middleware
exposing middleware function directly, Middleware
MongoDB, The Node Ecosystem, Database Persistence, Models, Storing Users in Your Database
retrieving data from, Retrieving Data
seeding initial data, Seeding Initial Data
setting up, Setting Up MongoDB
using for session storage, Using MongoDB for Session Storage
MongoHQ, Setting Up MongoDB
MongoLab, Setting Up MongoDB
Mongoose, Mongoose, Models
creating dealer model, Geocoding Your Data
creating model for users, Storing Users in Your Database
creating schema and model for REST API data store, Our Data Store
creating schemas and models, Creating Schemas and Models
database connections with, Database Connections with Mongoose
upserts, Adding Data
monitor utility for automatic server restarts, Running Your Server
monitoring your website, Monitoring Your Website
application failures, Application Failures
third-party uptime monitors, Third-Party Uptime Monitors
morgan middleware, Common Middleware
using for logging in development environment, Environment-Specific Configuration
Mozilla Developer Network (MDN), Online Documentation
MSAs (Mail Submission Agents), SMTP, MSAs, and MTAs
errors sending email, Sending Mail
MTAs (Mail Transfer Agents), SMTP, MSAs, and MTAs
multidomain certificates, Purchasing a Certificate
multimedia, Static Content
multipage web applications, Introducing Express
multipart form processing, File Uploads
multipart middleware (deprecated), Common Middleware
multipart/form-data encoding, Encoding
specifying for file uploads, File Uploads
multithreading through server parallelism, Node: A New Kind of Web Server
Mustache templating engine, Views and Layouts, Templating with Handlebars
MVVM (model-view-view model), Implementing MVC in Express

N

name attribute in <input> fields, HTML Forms
nameservers, Nameservers
next function, Middleware
Nginx, Scaling Out with Multiple Servers
setting X-Forwarded-Proto header, HTTPS and Proxies
Ninjitsu, Private npm Registry
Node, Who This Book Is For, The JavaScript Revolution
app clusters, support for, Scaling Out with App Clusters
apps, Node: A New Kind of Web Server
components of, The Node Ecosystem
Connect library, A Brief History of Express
debugger, Using Node’s Built-in Debugger
documentation, Getting More Information, Online Documentation
filesystem persistence, Filesystem Persistence
getting started with, Getting Started with NodeOnward to Express
editors, Editors
event-driven programming, Event-Driven Programming
installing Node, Getting Node
npm package manager, npm
routing, Routing
serving static resources, Serving Static Resources
simple web server, A Simple Web Server with Node
supporting multiple versions of Node, npm
using the terminal, Using the Terminal
licensing for applications, Licensing
new kind of web server, Node: A New Kind of Web Server
param method of request object, Parameters
platform-independence of, Node: A New Kind of Web Server
proxy servers, Scaling Out with Multiple Servers
request object, The Request Object
response object, The Response Object
support for scaling out, Scaling Your Website
Node Inspector, Node InspectorNode Inspector
available actions, Node Inspector
setting breakpoints, Node Inspector
Node modules, Node Modules
exporting functionality from, Node Modules
importing, Node Modules
official documentation site, Node Modules
Nodejitsu, The behemoths
Nodemailer, Nodemailer
HTML or plaintext email, Sending HTML Email
sending email, Sending Mail
to multiple recipients, Sending Mail to Multiple Recipients
nodemon, Running Your Server
NODE_ENV, Execution Environments
node_modules directory, Initial Steps, npm Packages
NoSQL databases, The Node Ecosystem, Database Persistence
notification services, Application Failures
npm (package manager), npm
-g (global) option, Using the Terminal
install command, npm
installing Express, Initial Steps
managing Express project dependencies and project metadata, Initial Steps
online documentation, Online Documentation
packages your project relies on, npm Packages
private npm registries, Private npm Registry
npm init command, Initial Steps

O

object document mappers (ODMs), Mongoose
online documentation, Online Documentation
OpenSSL, Generating Your Own Certificate
generating private key and public key certificate, Generating Your Own Certificate
Opera, Node Inspector
operating systems
hosts file, Using a Subdomain
installing ImageMagick, jQuery File Upload
installing Node, Getting Node
Node on, Node: A New Kind of Web Server
ports, A Note on Ports
Unix/BSD system or Cygwin, modifying execution environment, Execution Environments
organization certificates, Purchasing a Certificate
OS X (see Mac OS X; operating systems)

P

PaaS (Platform as a Service), XaaS
package managers
installing Node via, Getting Node
npm, npm
package.json file, Initial Steps, npm Packages
main property, Initial Steps
project metadata, Project Metadata
page testing, Overview of QA Techniques
embedding tests in the page, Page Testing
global tests, Page Testing
Grunt and, Automating with Grunt
page-specific test, Page Testing
PageSpeed, Optimize Performance
parameters, request object, Parameters
partials, Partials
organizing into subdirectories, Partials
partials object, Partials
Passport, PassportSetting up Passport
setting up, Setting up Passport
passwords
problem with, The Problem with Passwords
third-party authentication and, Passport
path in URLs, The Parts of a URL
PEM (Privacy-enhanced Electronic Mail) file, Generating Your Own Certificate
performance
and handling of static resources, Performance Considerations
databases, NoSQL versus relational, A Note on Performance
optimizing, Optimize Performance
social media plugins and, Social Media Plugins and Site Performance
periodicals, Periodicals
persistence, PersistenceUsing MongoDB for Session Storage
cloud storage, Cloud Persistence
database, Database Persistence
adding data, Adding Data
creating schemas and models, Creating Schemas and Models
database connections with Mongoose, Database Connections with Mongoose
performance and NoSQL databases, A Note on Performance
retrieving data, Retrieving Data
seeding initial data, Seeding Initial Data
setting up MongoDB, Setting Up MongoDB
using MongoDB for session storage, Using MongoDB for Session Storage
filesystem, Filesystem Persistence
website designed to be scaled out, Scaling Your Website
personally identifiable information (PII), security for, Security
PhantomJS, Cross-Page Testing
PHP, templating in, Templating with Handlebars
Pilgrim, Mark, Online Documentation
Pingdom, Third-Party Uptime Monitors
pipeline, Middleware
Platform as a Service (PaaS), XaaS
platform-independence of Node, Node: A New Kind of Web Server
PNG images, Performance Considerations
PORT environment variable, Initial Steps
ports, A Note on Ports
port in URLs, The Parts of a URL
POST method, HTTP Request Methods, Sending Client Data to the Server
bodies of POST requests, Request Body
in a REST API, Our API
specifying in the <form> tag, HTML Forms
using for form submission, Sending Client Data to the Server
Postman - REST Client Chrome plugin, Our Tests
PowerShell, Using the Terminal
presentation, logic versus, Logic Versus Presentation
private key, generating, Generating Your Own Certificate
private npm registries, Private npm Registry
process.nextTick, Handling Uncaught Exceptions
processing forms, Processing Forms
procrastination, Don’t Procrastinate
production concerns, Production ConcernsStress Testing
environment-specific configuration, Environment-Specific Configuration
execution environments, Execution Environments
monitoring your website, Monitoring Your Website
application failures, Application Failures
third-party uptime monitors, Third-Party Uptime Monitors
scaling your website, Scaling Your Website
handling uncaught exceptions, Handling Uncaught Exceptions
scaling out with app clusters, Scaling Out with App Clusters
scaling out with multiple servers, Scaling Out with Multiple Servers
stress testing, Stress Testing
production mode, NODE_ENV, Execution Environments
profile first, then optimize, Optimize Performance
project dependencies, npm Packages
project files, keeping separate from web app files, Initial Steps
project metadata, Project Metadata
promises, Rendering Tweets
protocol in URLs, The Parts of a URL
protocol relative URLs, Static Mapping
proxy servers, Scaling Out with Multiple Servers
HTTPS and, HTTPS and Proxies
informing Express of, Scaling Out with Multiple Servers
public key certificates, HTTPS
(see also certificates)
generating your own, Generating Your Own Certificate
PUT method
in a REST API, Our API
PUT endpoint, Providing an API
PuTTY, Using the Terminal

Q

quality assurance, Quality AssuranceContinuous Integration (CI)
automating testing with Grunt, Automating with Grunt
continuous integration (CI), Continuous Integration (CI)
cost of, and return on investment model, QA: Is It Worth It?
cross-page testing, Cross-Page Testing
doing routine QA checks, Do Routine QA Checks
in small or budget-conscious organizations, Quality Assurance
link checking, Link Checking
linting, Linting
logic testing, Logic Testing
logic versus presentation, Logic Versus Presentation
overview of techniques, Overview of QA Techniques
page testing, Page Testing
QA department in large or well-funded organizations, Quality Assurance
running your server, Running Your Server
types of tests, The Types of Tests
query middleware, Common Middleware
querystring in URLs, The Parts of a URL

R

random functionality, testing, Logic Testing
random password generator, Externalizing Credentials
Razor template engine, Sections
reach, QA: Is It Worth It?
read-eval-print loop (REPL), Take Advantage of REPL and the Console
README.md file, Initial Steps, Project Metadata
recoverable server errors, API Error Reporting
red light, green light testing, Cross-Page Testing
redirects
browser plugin showing, Initial Steps
for flash message display, Using Sessions to Implement Flash Messages
responding to form submissions, Different Approaches to Form Handling
choices of where redirection points, Different Approaches to Form Handling
Redis, Using MongoDB for Session Storage
redundancy, Prioritize Lead Tracking
registration, Authentication Versus Registration and the User Experience
regular expressions, route paths and, Route Paths and Regular Expressions
relational database management system (RDBMS), Database Persistence
relational databases
interfaces for Node, The Node Ecosystem
performance, A Note on Performance
rendering content, Rendering Content
representational state transfer (see REST APIs)
req.accepts property, Handling AJAX Forms
req.body, Providing an API
req.cookie method, Rendering Content
req.cookies, Cookies in Express
req.query, The Request Object, Rendering Content, Providing an API
req.session, Rendering Content, Using Sessions
req.session.authorized, Route Handlers Are Middleware
req.session.flash, Using Sessions to Implement Flash Messages
req.signedCookies, Rendering Content, Cookies in Express
req.xhr property, Handling AJAX Forms, Using Sessions to Implement Flash Messages
request and response objects, The Request and Response ObjectsProviding an API
getting more information, Getting More Information
HTTP request methods, HTTP Request Methods
Internet media types, Internet Media Types
most frequently used functionality in Express, Boiling It Down
processing forms, Processing Forms
providing an API, Providing an API
rendering content, Rendering Content
parameters, Parameters
request body, Request Body
request extensions, Debugging Express
request headers, Request Headers
request object, The Request Object
response extensions, Debugging Express
response headers, Response Headers
response object, The Response Object
sending a response, Debugging Express
sessions and, Using Sessions
URLs, The Parts of a URL
requests, reducing number of, Performance Considerations
require function, Node Modules
require statement, running a script as a module via, Scaling Out with App Clusters
res.cookie, Cookies in Express
res.format, Handling AJAX Forms
res.locals object, Page Testing, The Response Object
function to inject special offers data into, Route Handlers Are Middleware
res.locals.flash, Using Sessions to Implement Flash Messages
res.locals.partials object, middleware to inject weather data into, Partials
res.locals.showTests property, Page Testing
res.render method, Rendering Content, Using Views to Send HTML Email
res.send method, Rendering Content, Middleware, Debugging Express
res.set method, Initial Steps
res.status method, Initial Steps
res.type method, Initial Steps
resources, additional, Additional ResourcesConclusion
response-time middleware, Common Middleware
REST APIs, Subdomains, REST APIs and JSONUsing a Subdomain
cross-origin resource sharing (CORS), Cross-Origin Resource Sharing (CORS)
csurf middleware and, Cross-Site Request Forgery
data store, Our Data Store
error reporting, API Error Reporting
JSON and XML, JSON and XML
planning an API, Our API
testing our API, Our Tests
using a REST plugin, Using a REST Plugin
using a subdomain, Using a Subdomain
using Express to provide, Using Express to Provide an API
REST functions, Using a REST Plugin
rest.get, Our Tests
rest.put, Our Tests
RESTful services, REST APIs and JSON
restler package, Our Tests
reverse proxy, Scaling Out with Multiple Servers
role-based authorization, Role-Based Authorization
route handlers, Middleware
as middleware, Route Handlers Are Middleware
routers
controllers (MVC) versus, Controllers
explicit linking into the pipeline, Middleware
routing, Routing, Serving Static Resources, RoutingOther Approaches to Route Organization
adding routes in Express, Initial Steps
order of, Initial Steps
adding routes to new views in Express, Views and Layouts
automatically rendering views, Automatically Rendering Views
declaring routes in a module, Declaring Routes in a Module
defined, Routing
grouping route handlers logically, Grouping Handlers Logically
lib/router/route.js in Express source, Getting More Information
organizing routes, Organizing Routes
route handlers as middleware, Route Handlers Are Middleware
route organization, other approaches, Other Approaches to Route Organization
route parameters, Route Parameters
route paths and regular expressions, Route Paths and Regular Expressions
routers versus controllers, Controllers
routes and SEO, Routes and SEO
static middleware serving static files, Static Files and Views
subdomains, Subdomains
Ruby, The JavaScript Revolution
scaffolding, Scaffolding
Sinatra framework and Express, A Brief History of Express
Ruby on Rails, scaffolding utility, Scaffolding

S

SaaS (Software as a Service), XaaS
same-origin policy, Cross-Origin Resource Sharing (CORS)
Sass, Static Resources in CSS
scaffolding, Scaffolding
scaffolding utility (Express), Scaffolding
scaling out, Scaling Your Website
scaling up, Scaling Your Website
scaling your website, Scaling Your Website
handling uncaught exceptions, Handling Uncaught Exceptions
scaling out with app cllusters, Scaling Out with App Clusters
scaling out with multiple servers, Scaling Out with Multiple Servers
scaling, filesystem persistence and, Filesystem Persistence
schemas (database), Mongoose
creating, Creating Schemas and Models, Adding Data
scope variables, Node Inspector
<script> elements in the <head>, putting HTML in, Client-Side Handlebars
scripts, running directly or included as a module via require statement, Scaling Out with App Clusters
search engine optimization (SEO), QA: Is It Worth It?, Do Routine QA Checks
routes and, Routes and SEO
sections, Sections
security, SecurityConclusion
authentication, Authentication
adding additional providers, Adding Additional Authentication Providers
Passport module, PassportSetting up Passport
passwords, problem with, The Problem with Passwords
storing users in your database, Storing Users in Your Database
third-party, Third-Party Authentication
versus authorization, Authentication Versus Authorization
versus registration and user experience, Authentication Versus Registration and the User Experience
cross-site request forgery (CSRF), Cross-Site Request Forgery
domain, Security
HTTPS, HTTPS
enabling for Express apps, Enabling HTTPS for Your Express App
generating your own certificate, Generating Your Own Certificate
ports, A Note on Ports
proxies and, HTTPS and Proxies
purchasing a certificate, Purchasing a Certificate
using a free certificate authority, Using a Free Certificate Authority
role-based authorization, Role-Based Authorization
Selenium, Cross-Page Testing
semver (semantic versioner) in npm, npm Packages
SendGrid, SMTP, MSAs, and MTAs
limits on number of email recipients, Sending Mail to Multiple Recipients
Sentry, Application Failures
server errors, Serving Static Resources
server-side JavaScript, The JavaScript Revolution
static resources in, Static Resources in Server-Side JavaScript
server-side templates, Server-Side Templates
servers
continuous integration (CI), Continuous Integration (CI)
information passed in response headers, Response Headers
running in production mode, Execution Environments
running your server, Running Your Server
serveStaticFile helper function, Serving Static Resources
session-mongoose package, Using MongoDB for Session Storage
sessions, SessionsWhat to Use Sessions For
cookie-based, Sessions
memory stores, Memory Stores
middleware, Debugging Express
preferring over cookies, Cookies and Sessions
storing, using MongoDB, Using MongoDB for Session Storage
using, Using Sessions
using to implement flash messages, Using Sessions to Implement Flash Messages
when to use, What to Use Sessions For
Set-Cookie header, Cookies and Sessions
setTimeout, Handling Uncaught Exceptions
shells, Using the Terminal
learning to use, Using the Terminal
signed cookies, Cookies and Sessions, Cookies in Express
SimpleSMTP, Receiving Email
Sinatra framework, A Brief History of Express
single threading (Node), Node: A New Kind of Web Server
single-domain certificates, Purchasing a Certificate
single-page web applications, Introducing Express
Sinopia, Private npm Registry
Site24x7, Third-Party Uptime Monitors
SMTP (Simple Mail Transfer Protocol), SMTP, MSAs, and MTAs
social media, Social MediaRendering Tweets
integration with
social media plugins and performance, Social Media Plugins and Site Performance
Twitter, Searching for TweetsRendering Tweets
Software as a Service (SaaS), XaaS
source control, Use Source Control
spoofing, Email Headers
SpritePad, Performance Considerations
sprites, Performance Considerations
SSL certificates, HTTPS
Stack Overflow (SO), Stack Overflow
stateless protocols, Cookies and Sessions
static content, Static ContentSummary
bundling and minification, Bundling and Minification
skipping in development mode, Skipping Bundling and Minification in Development Mode
changing, Changing Your Static Content
future-proofing your website, Future-Proofing Your Website
static mapping, Static Mapping
static resources in CSS, Static Resources in CSS
static resources in views, Static Resources in Views
performance considerations, Performance Considerations
serving static resources, Serving Static Resources
static resources in server-side JavaScript, Static Resources in Server-Side JavaScript
static IP address, Nameservers
static middleware, Static Files and Views, Common Middleware, Common Middleware, Debugging Express
static resources
serving with Node, Serving Static Resources
views versus, Views and Layouts
static-favicon middleware, Common Middleware
storage failure, total, Prioritize Lead Tracking
stress testing, Stress Testing
Stylus, Static Resources in CSS
subdomains, The Parts of a URL, Subdomains, Subdomains
using for REST APIs, Using a Subdomain
Subversion, Deployment
Symantec, Purchasing a Certificate

T

technical debt, Don’t Procrastinate
templating
defined, Templating with Handlebars
what it isn’t, Templating with Handlebars
with Jade, Jade: A Different Approach
templating engine, The Node Ecosystem
choosing, criteria for, Choosing a Template Engine
decoupled from programming language, Templating with Handlebars
templating with Handlebars, Templating with HandlebarsConclusion
basics, Handlebars Basics
blocks, Blocks
client-side templating, Client-Side Handlebars
loading Handlebars, Client-Side Handlebars
comments, Comments
perfecting your templates, Perfecting Your Templates
server-side templates, Server-Side Templates
using partials, Partials
views and layouts, Views and Layouts
rendering a view with a layout, Views and Layouts
sections, Sections
using layouts in Express, Using Layouts (or Not) in Express
terminals, using, Using the Terminal
Unix-like systems, Ctrl-S, Using the Terminal
test-driven development (TDD) in Mocha, Page Testing
testing, Exercise Good Hygiene
types of, The Types of Tests
writing tests before implementing features, Cross-Page Testing
Themeforest, Perfecting Your Templates
themes, third-party, Perfecting Your Templates
top-level domains (TLDs), The Parts of a URL, Top-Level Domains
Travis CI, Continuous Integration (CI)
trusted root certificates, HTTPS
Twitter, Social Media
creating apps for, Searching for TweetsRendering Tweets
rendering tweets, Rendering TweetsRendering Tweets
Twitter Bootstrap, Scaffolding, Form Handling with Express
(see also Bootstrap)

U

uglify task, Bundling and Minification
uncaught exceptions, handling, Handling Uncaught Exceptions
using domains, Handling Uncaught Exceptions
uncaughtException event, Handling Uncaught Exceptions
Underscore, View Models
unit testing, The Types of Tests
unit test for fortune generator (example), Logic Testing
Unix-like systems, Ctrl-S, Using the Terminal
upserts, Adding Data
UptimeRobot, Third-Party Uptime Monitors
URL encoding, Encoding
URL-encoded body parsing, Debugging Express
urlencoded (middleware), Common Middleware
URLs
design suggestions for lasting IA, Routing
designing for website content, Routing
fragment (or hash), The Parts of a URL
host, The Parts of a URL
path, The Parts of a URL
port, The Parts of a URL
protocol, The Parts of a URL
protocol relative, using to reference static resources, Static Mapping
querystring, The Parts of a URL
subdomains, Subdomains
usability, QA: Is It Worth It?
user uploads, never trusting, Filesystem Persistence

V

version control, Version Control, Exercise Good Hygiene
versioning, semver in npm, npm Packages
vhost middleware, Common Middleware, Using a Subdomain
vi (editor), Editors
vi mode (editors), Editors
view models, Retrieving Data, Implementing MVC in Express
creating, View Models
views, Views and Layouts, Views and Layouts
adding routes to, in Express, Views and Layouts
automatic view-based route handlers, Organizing Routes
caching, Server-Side Templates
creating view pages for Meadowlark Travel website (example), Views and Layouts
defined, Implementing MVC in Express
dynamic content in, Dynamic Content in Views
handling by middleware, in Express, Static Files and Views
layout, Views and Layouts
modifying to conditionally include test framework, Page Testing
rendering automatically, Automatically Rendering Views
rendering using configured templating engine, The Response Object
rendering with a templating engine, Views and Layouts
rendering with Handlebars
using layouts in Express, Using Layouts (or Not) in Express
using partials, Partials
using sections, Sections
static resources in, Static Resources in Views
static resources referenced in, Future-Proofing Your Website
unmapped database objects and, Retrieving Data
using to send HTML email, Using Views to Send HTML Email
vim editor, associating .handlebars and .hbs files with HTML, Views and Layouts
virtual machines (VMs), Using the Terminal
VirtualBox, Using the Terminal
virtualization, Using the Terminal, Traditional hosting, or cloud hosting?
Visual Studio as JavaScript editor, Editors

W

watch expressions, Node Inspector
weather data, current
creating middleware to inject data into res.locals.partials object, Partials
function to get weather data, Partials
using partials for weather widget in Handlebars, Partials
using Weather Underground API, Weather Data
web application framework, Express as, Introducing Express
web applications
creating with JavaScript, Node, and Express, Who This Book Is For
defined, Introducing Express
mltipage and hybrid, Introducing Express
single-page, Introducing Express
web page for this book, How to Contact Us
web servers
Node versus other web servers, Node: A New Kind of Web Server
writing with Node, A Simple Web Server with Node
“Hello World” example, Hello World
web services, REST APIs and JSON
(see also REST APIs)
WebFaction, Nameservers, Boutique hosting
Webmaster Tools, Do Routine QA Checks
websites
launching (see going live)
Meadowlark Travel (example), Example Website
stacks that they’re built on, The Node Ecosystem
widgets, Partials
wildcard certificates, Purchasing a Certificate
wildcards in Express routes, Initial Steps
Wilson, Mike, Don’t Procrastinate
Windows systems
editors, Editors
installing Node, Getting Node
Node on, Node: A New Kind of Web Server
OpenSSL on, Generating Your Own Certificate
using a terminal and shell, Using the Terminal
WrapBootstrap, Perfecting Your Templates

X

X-Forwarded-Proto header, HTTPS and Proxies
X.509 certificates, HTTPS
xkcd password generator, Externalizing Credentials
XML, JSON and XML
XMLHttpRequest Level 2’s FormData interface, File Uploads