目录 源码下载 第1章初识Node.js 1.1Node.js简介 1.1.1Node.js的发展历程 1.1.2Node.js的特点 1.1.3为什么要使用Node.js 1.2Node.js运行环境安装 1.2.1在Windows上安装Node 1.2.2在Linux上安装Node 1.2.3在macOS上安装Node 1.3NPM依赖管理工具 1.3.1NPM简介 1.3.2NPM的使用 第2章Node.js编程基础 2.1Node.js快速入门 2.1.1Node.js基础 2.1.2创建第一个Node应用 2.2模块化开发 2.2.1模块化的概念 2.2.2CommonJS规范 2.2.3Node.js中的模块化 2.2.4Node.js系统模块 2.2.5第三方模块 第3章异步I/O 3.1什么是异步I/O 3.1.1为什么要使用异步I/O 3.1.2异步I/O与非阻塞I/O 3.2Node.js的异步I/O 3.2.1事件循环 3.2.2观察者模式 3.2.3请求对象 3.2.4执行回调 3.3非I/O的异步API 3.3.1定时器 3.3.2process.nextTick()函数 第4章Stream 4.1Stream的概念 4.1.1Stream简介 4.1.2Stream实现的过程 4.1.3Stream应用场景 4.2使用Stream操作文件 4.2.1Node.js读写文件 4.2.2使用Stream读写文件 4.2.3Stream对性能的影响 4.3readline逐行读取 4.4Buffer二进制流 4.4.1什么是二进制流 4.4.2使用Buffer提升性能 第5章Node.js Web服务器开发 5.1使用Node.js搭建Web服务器 5.1.1http模块 5.1.2事件驱动编程 5.1.3路由 5.1.4静态资源服务 5.2请求与响应对象 5.2.1URL的组成部分 5.2.2HTTP请求方法 5.2.3请求报头 5.2.4响应报头 5.2.5请求体 5.2.6参数 5.2.7请求对象 5.2.8响应对象 第6章Express框架 6.1Express框架简介 6.2Express框架安装与配置 6.2.1安装Express 6.2.2Express目录结构 6.2.3Express的路由管理 6.2.4Express的视图管理 6.3Express中间件 6.3.1中间件的概念 6.3.2Express中间件的使用 6.3.3自定义Express中间件 6.3.4常用的中间件 6.4Express中的MVC 6.4.1MVC概述 6.4.2模型 6.4.3视图模型 6.4.4控制器 第7章静态资源 7.1网站中的静态资源 7.1.1什么是静态资源 7.1.2静态资源对性能的影响 7.2Web应用中的静态资源 7.2.1静态映射 7.2.2视图中的静态资源 7.2.3CSS中的静态资源 7.3搭建静态资源服务器 7.3.1什么是静态资源服务器 7.3.2使用Node搭建静态资源服务器 第8章Handlebars 8.1模板引擎简介 8.1.1什么是模板引擎 8.1.2传统JavaScript模板 8.1.3如何选择模板引擎 8.2Handlebars模板引擎 8.2.1Handlebars简介 8.2.2Handlebars的安装 8.2.3Handlebars的特性 8.3Handlebars的使用 8.3.1注释 8.3.2块级表达式 8.3.3服务器端模板 8.3.4视图和布局 8.3.5在Express中使用布局 8.3.6客户端Handlebars 第9章MongoDB数据库 9.1MongoDB数据库简介 9.1.1什么是数据库 9.1.2数据库的优点 9.1.3MongoDB数据库重要概念 9.2MongoDB数据库环境搭建 9.2.1MongoDB数据库的下载与安装 9.2.2MongoDB Compass可视化工具 9.2.3启动MongoDB服务 9.3mongoose模块 9.3.1mongoose模块简介 9.3.2Schema模式对象 9.3.3Model模型对象 9.3.4Document文档对象 9.4MongoDB模块 9.4.1连接数据库 9.4.2创建集合 9.4.3数据库操作 第10章Ajax异步请求 10.1Ajax基础 10.1.1传统网站中存在的问题 10.1.2Ajax概述 10.1.3Ajax的使用场景 10.1.4Ajax的优点 10.1.5Ajax的缺点 10.2Ajax的工作原理 10.2.1Ajax运行原理 10.2.2XMLHttpRequest对象 10.2.3XMLHttpRequest对象的常用方法 10.3Ajax的实现步骤 10.3.1创建XMLHttpRequest对象 10.3.2设置请求方式 10.3.3调用回调函数 10.3.4发送HTTP请求 10.3.5Ajax的缓存问题 10.4浏览器同源策略 10.4.1什么是同源策略 10.4.2同源策略的限制 10.4.3同源策略的解决方案 10.5RESTful风格API 10.5.1RESTful API 概述 10.5.2为什么要使用RESTful结构 10.5.3RESTful API的实现 第11章会话跟踪 11.1会话跟踪概述 11.1.1HTTP请求的特点 11.1.2什么是会话跟踪 11.1.3会话跟踪的用途 11.2Express中的会话跟踪 11.2.1Express中的Cookie 11.2.2Express中的Session 第12章Node.js实现网络爬虫 12.1网络爬虫概述 12.1.1什么是网络爬虫 12.1.2网络爬虫的实现原理 12.1.3Node.js实现网络爬虫的优势 12.2基于Node实现的爬虫程序 12.2.1安装依赖包 12.2.2实现抓取数据 12.2.3实现爬虫的方法 第13章网络编程 13.1Node构建TCP服务 13.1.1TCP 13.1.2构建TCP服务器 13.2Node构建UDP服务 13.2.1UDP协议 13.2.2创建UDP套接字 13.2.3创建UDP服务器和客户端 13.3Node构建HTTP服务 13.3.1初识HTTP协议 13.3.2Node中的http模块 13.4Node构建WebSocket服务 13.4.1什么是WebSocket 13.4.2WebSocket实例的属性与方法 13.4.3构建WebSocket服务 第14章项目实战: Express开发投票管理系统 14.1项目概述 14.1.1开发环境 14.1.2项目结构 14.2数据库设计 14.2.1连接数据库 14.2.2创建Schema文档对象 14.2.3封装CRUD函数 14.2.4封装文件上传业务逻辑 14.3配置前端开发环境 14.3.1静态文件管理 14.3.2安装依赖 14.4后台功能模块开发 14.4.1系统用户登录 14.4.2系统用户管理 14.4.3候选对象管理 14.4.4投票主题管理 14.4.5投票环节管理 14.4.6投票统计管理 14.5网站前台布局