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 APIs–Conclusion
- geocoding, Geocoding–Improving Client-Side Performance
- social media, Social Media–Rendering 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, Passport–Setting 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 Sessions–Sessions
- 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, Debugging–Debugging Express
- asynchronous functions, Debugging Asynchronous Functions
- Express, Debugging Express
- first principle of, The First Principle of Debugging
- using Node Inspector, Node Inspector–Node 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, Deployment–Amazon 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 Hosting–Boutique 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 Email–Email 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 Express–Conclusion
- 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 Express–Conclusion
- 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 Passport–Role-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 Handling–jQuery 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, Geocoding–Improving 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, Deployment–Amazon 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 Live–Conclusion
- deployment, Deployment–Amazon deployment with Elastic Beanstalk
- domain registration and hosting, Domain Registration and Hosting–Boutique hosting
- DNS (Domain Name System), Domain Name System
- hosting, Hosting–Boutique 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, Hosting–Boutique 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
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, Maintenance–Conclusion
- 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, Middleware–Third-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 Express–Conclusion
- 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 Node–Onward 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 Inspector–Node 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, Passport–Setting 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, Persistence–Using 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 Concerns–Stress 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 Assurance–Continuous 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 Objects–Providing 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 Resources–Conclusion
- response-time middleware, Common Middleware
- REST APIs, Subdomains, REST APIs and JSON–Using 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, Routing–Other 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, Security–Conclusion
- authentication, Authentication
- adding additional providers, Adding Additional Authentication Providers
- Passport module, Passport–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
- 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, Sessions–What 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 Media–Rendering Tweets
- integration with
- social media plugins and performance, Social Media Plugins and Site Performance
- Twitter, Searching for Tweets–Rendering 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 Content–Summary
- 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 Handlebars–Conclusion
- 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 Tweets–Rendering Tweets
- rendering tweets, Rendering Tweets–Rendering 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