Node.js+Express+MongoDB+Vue.js全栈开发实战
定 价:¥89
中 教 价:¥52.51 (5.90折)促销
库 存 数: 7
本书全面介绍Vue.js Node.js全栈开发所使用的新技术,包括MongoDB、Express、Vue.js 3、Node.js、Naive UI、md-editor-v3、Nginx、basic-auth、JavaScript、TypeScript等开源技术栈,知识点涉及数据存储、模块、测试、缓冲区、事件处理、文件处理、HTTP编程、组件、模板、指令、监听器、表达式、事件、表单、HTTP客户端等内容。本书内容丰富,案例新颖,学习难度由浅入深,层层推进,理论联系实际,具有较强的实操性。这些知识点既能满足当前企业级应用的开发需求,又可以**限度地减轻开发者的负担。本书所介绍的知识较为前瞻,辅以大量的案例,令读者知其然并知其所以然。通过本书的学习,可以令读者拓展视野,提升职场竞争能力。 本书适合Vue.js Node.js全栈开发初学者和进阶读者作为自学教程,也适合培训学校作为培训教材,还适合大、中专院校的相关专业作为教学参考书。
UI、md-editor-v3、basic-auth、JavaScript、TypeScript,知识面广:无论是前端的Vue.js、朴素还是前端的MongoDB、Node.js、Express、Nginx,本书均有着墨。版本新颖:本书所涉及的技术版本均为目前最新的版本.案例丰富:全书共计有89个知识点实例和4个综合实战案例.全栈技能:熟习本书,可以掌握全栈开发技能.
写作背景JavaScript是Web开发最为流行的编程语言,而Node.js的出现使得JavaScript可以在服务器端一展身手。结合Vue.js技术实现前端框架的组件化开发方式使得Vue.js Node.js全栈开发变得盛行。笔者撰写了包括《Vue.js 3企业级应用开发实战》《Node.js企业级应用开发实战》在内的有关Vue.js和Node.js的图书,但将Vue.js和Node.js进行整合尚属首次。本书介绍了Vue.js Node.js全栈开发所使用的新技术,这些技术既能满足当前企业级应用的开发需求,又可以最大限度地减轻开发者的负担。通过本书的学习,可以令读者拓展视野,并提升职场竞争能力。本书主要面向计算机专业的学生、全栈开发爱好者及工程师。本书涉及的技术包括MongoDB、Express、Vue.js、Node.js、Naive UI、md-editor-v3、Nginx、basic-auth、JavaScript、TypeScript等,是市面上为数不多的介绍全栈技术开发的图书之一。一书在手,肩挑全栈,事半功倍!内容介绍本书共28章,概要说明如下:第1章为概述,介绍Vue.js Node.js全栈开发架构所涉及的核心技术栈及周边技术栈的组成。第2~8章为Node.js的基础及进阶,介绍Node.js的基础及核心内容。第9~11章为Express的基础及进阶,介绍Express的基础及核心内容。第12~15章为MongoDB的基础及进阶,介绍MongoDB的基础及核心内容。第16~24章为Vue.js的基础及进阶,介绍Vue.js的基础及核心内容。第25~28章为实战,演示如何从0开始实现一个综合实战案例新闻头条。特 色本书具备以下特色:知识面广。无论是前端的Vue.js、Naive UI、md-editor-v3、basic-auth、JavaScript、TypeScript,还是后端的MongoDB、Node.js、Express、Nginx,本书均有涉及。版本新颖。本书所涉及的技术版本均为目前新版本。案例丰富。全书共计89个知识点实例和4个综合实战案例。全栈开发。熟习本书,可以掌握全栈开发技能。资源下载本书提供的源代码和PPT课件,可以扫描以下二维码下载:若下载有问题,请发送电子邮件至booksaga@126.com,邮件主题为Node.js Express MongoDB Vue.js全栈开发实战。本书所采用的技术及相关版本技术的版本是非常重要的,因为不同版本之间存在兼容性问题,而且不同版本的软件所对应的功能也是不同的。本书所列出的技术在版本上相对较新,都是经过笔者大量测试的。这样读者在自行编写代码时,可以参考本书所列出的版本,从而避免版本兼容性所产生的问题。建议读者将相关开发环境设置得与本书一致,或者不低于本书所列的配置。详细的版本配置,可以参阅本书附录中的内容。勘误和交流本书如有勘误,会在以下网址发布:https://github.com/waylau/full-stack-development-with-vuejs-and-nodejs/issues由于笔者能力有限、时间仓促,书中难免出现疏漏之处,欢迎读者批评指正。致 谢感谢清华大学出版社的各位工作人员为本书的出版所做的努力。感谢我的父母、妻子和两个女儿。由于撰写本书,我牺牲了很多陪伴家人的时间,谢谢他们对我的理解和支持。感谢关心和支持我的朋友、读者、网友。柳伟卫2022年12月
柳伟卫,网名老卫、waylau,在IT公司担任过项目经理、架构师、高级技术顾问等职位,拥有十多年开发经验,具有丰富的软件开发管理及系统架构经验。主导过多个省、国家级大型分布式系统的设计与研发,参与过面向全球的供应链系统服务化改造。在实际工作中积累了大量的分布式系统、微服务架构以及性能调优经验。业余时间创建了 waylau.com 网站,用于分享个人技术心得。喜欢开源,长期活跃于各大开源社区,是 CSDN、 开源中国、阿里云开发者、华为开发者等技术社区专家,已出版《Java核心编程》《轻量级Java EE企业应用开发实战》等十几部专业图书。
第1章 Vue.js Node.js全栈开发概述 11.1 Vue.js Node.js全栈开发核心技术栈的组成 11.1.1 MongoDB 11.1.2 Express 21.1.3 Vue.js 21.1.4 Node.js 21.2 Vue.js Node.js全栈开发周边技术栈的组成 21.2.1 Naive UI 21.2.2 md-editor-v3 31.2.3 Nginx 31.2.4 basic-auth 31.3 Vue.js Node.js全栈开发的优势 31.4 开发工具的选择 61.5 小结 61.6 练习题 6第2章 Node.js基础 72.1 初识Node.js 72.1.1 Node.js简介 72.1.2 为什么叫Node.js 82.2 Node.js的特点 82.2.1 异步I/O 82.2.2 事件驱动 92.2.3 单线程 102.2.4 可用性和扩展性 102.2.5 跨平台 112.3 安装Node.js 112.3.1 安装Node.js和npm 112.3.2 Node.js与npm的关系 122.3.3 安装npm镜像 122.4 第一个Node.js应用 122.4.1 实例1:创建Node.js应用 122.4.2 实例2:运行Node.js应用 122.5 小结 132.6 练习题 13第3章 Node.js模块大型项目管理之道 143.1 理解模块化机制 143.1.1 理解CommonJS规范 143.1.2 理解ES6模块 163.1.3 CommonJS和ES6模块的异同点 173.1.4 Node.js的模块实现 183.2 使用npm管理模块 193.2.1 使用npm命令安装模块 193.2.2 全局安装与本地安装 203.2.3 查看安装信息 203.2.4 卸载模块 213.2.5 更新模块 213.2.6 搜索模块 213.2.7 创建模块 213.3 Node.js核心模块 213.4 小结 223.5 练习题 22第4章 Node.js测试 234.1 严格模式和遗留模式 234.2 实例3:断言的使用 244.3 了解AssertionError 254.4 实例4:使用deepStrictEqual 264.5 小结 284.6 练习题 28第5章 Node.js缓冲区高性能IO处理的秘诀 295.1 了解Buffer 295.1.1 了解TypedArray 295.1.2 Buffer类 305.2 创建缓冲区 315.2.1 初始化缓冲区的API 315.2.2 实例5:理解数据的安全性 325.2.3 启用零填充 335.2.4 实例6:指定字符编码 335.3 实例7:切分缓冲区 345.4 实例8:连接缓冲区 355.5 实例9:比较缓冲区 365.6 缓冲区编解码 365.6.1 编码器和解码器 365.6.2 实例10:缓冲区解码 375.6.3 实例11:缓冲区编码 385.7 小结 395.8 练习题 39第6章 Node.js事件处理 406.1 理解事件和回调 406.1.1 事件循环 416.1.2 事件驱动 416.2 事件发射器 426.2.1 实例12:将参数和this传给监听器 426.2.2 实例13:异步与同步 436.2.3 实例14:仅处理事件一次 436.3 事件类型 446.3.1 事件类型的定义 446.3.2 内置的事件类型 446.3.3 实例15:error事件 446.4 事件的操作 476.4.1 实例16:设置最大监听器 476.4.2 实例17:获取已注册的事件的名称 476.4.3 实例18:获取监听器数组的副本 486.4.4 实例19:将事件监听器添加到监听器数组的开头 486.4.5 实例20:移除监听器 496.5 小结 506.6 练习题 50第7章 Node.js文件处理 517.1 了解fs模块 517.1.1 同步与异步操作文件 517.1.2 文件描述符 537.2 处理文件路径 537.2.1 字符串形式的路径 547.2.2 Buffer形式的路径 547.2.3 URL对象的路径 557.3 打开文件 567.3.1 文件系统标志 567.3.2 实例21:打开文件的例子 577.4 读取文件 587.4.1 实例22:用fs.read读取文件 587.4.2 实例23:用fs.readdir读取文件 597.4.3 实例24:用fs.readFile读取文件 607.5 写入文件 617.5.1 实例25:将Buffer写入文件 617.5.2 实例26:将字符串写入文件 627.5.3 实例27:将数据写入文件 647.6 小结 647.7 练习题 65第8章 Node.js HTTP编程 668.1 创建HTTP服务器 668.1.1 实例28:用http.Server创建服务器 668.1.2 理解http.Server事件的用法 678.2 处理HTTP常用操作 698.3 请求对象和响应对象 698.3.1 理解http.ClientRequest类 698.3.2 理解http.ServerResponse类 738.4 REST概述 768.4.1 REST定义 768.4.2 REST设计原则 768.5 成熟度模型 778.5.1 第0级:使用HTTP作为传输方式 788.5.2 第1级:引入了资源的概念 798.5.3 第2级:根据语义使用HTTP动词 808.5.4 第3级:使用HATEOAS 818.6 实例29:构建REST服务的例子 838.6.1 新增用户 848.6.2 修改用户 858.6.3 删除用户 858.6.4 响应请求 868.6.5 运行应用 878.7 小结 908.8 练习题 90第9章 Express基础 919.1 安装Express 919.1.1 初始化应用目录 919.1.2 初始化应用结构 929.1.3 在应用中安装Express 929.2 实例30:编写Hello World应用 939.3 实例31:运行Hello World应用 939.4 小结 949.5 练习题 94第10章 Express路由页面的导航员 9510.1 路由方法 9510.2 路由路径 9610.2.1 实例32:基于字符串的路由路径 9610.2.2 实例33:基于字符串模式的路由路径 9710.2.3 实例34:基于正则表达式的路由路径 9710.3 路由参数 9810.4 路由处理器 9810.4.1 实例35:单个回调函数 9810.4.2 实例36:多个回调函数 9810.4.3 实例37:一组回调函数 9910.4.4 实例38:独立函数和函数数组的组合 9910.5 响应方法 9910.6 实例39:Express构建REST API 10010.7 测试Express的REST API 10210.7.1 测试创建用户API 10210.7.2 测试删除用户API 10210.7.3 测试修改用户API 10310.7.4 测试查询用户API 10410.8 小结 10410.9 练习题 104第11章 Express错误处理器 10511.1 捕获错误 10511.2 默认错误处理器 10711.3 自定义错误处理器 10711.4 小结 10911.5 练习题 109第12章 MongoDB基础 11012.1 MongoDB简介 11012.2 安装MongoDB 11212.3 启动MongoDB服务 11212.4 连接到MongoDB服务器 11312.5 小结 11412.6 练习题 114第13章 MongoDB常用操作 11513.1 显示已有的数据库 11513.2 创建、使用数据库 11513.3 插入文档 11613.3.1 实例40:插入单个文档 11613.3.2 实例41:插入多个文档 11613.4 查询文档 11713.4.1 实例42:嵌套文档查询 11813.4.2 实例43:嵌套字段查询 11813.4.3 实例44:使用查询运算符 11813.4.4 实例45:多条件查询 11913.5 修改文档 11913.5.1 实例46:修改单个文档 11913.5.2 实例47:修改多个文档 12013.5.3 实例48:替换单个文档 12013.6 删除文档 12113.6.1 实例49:删除单个文档 12113.6.2 实例50:删除多个文档 12213.7 小结 12213.8 练习题 122第14章 使用Node.js操作MongoDB 12314.1 安装mongodb模块 12314.2 实现访问MongoDB 12414.3 运行应用 12514.4 小结 12514.5 练习题 125第15章 mongodb模块的综合应用 12615.1 实例51:建立连接 12615.2 实例52:插入文档 12715.3 实例53:查找文档 12815.4 修改文档 13015.4.1 实例54:修改单个文档 13015.4.2 实例55:修改多个文档 13415.5 删除文档 13715.5.1 实例56:删除单个文档 13715.5.2 实例57:删除多个文档 14115.6 小结 14515.7 练习题 145第16章 Vue.js基础 14616.1 Vue.js产生的背景 14616.2 Vue.js的下载安装 14616.2.1 安装Vue CLI 14716.2.2 安装Vue Devtools 14716.3 Vue CLI的常用操作 14716.3.1 获取帮助 14716.3.2 创建应用 14816.3.3 创建服务 14916.3.4 启动应用 14916.3.5 编译应用 15016.4 实例58:创建第一个Vue.js应用 15016.4.1 使用Vue CLI初始化应用 15016.4.2 运行Vue应用 15416.4.3 增加对TypeScript的支持 15516.5 探索Vue.js应用结构 15516.5.1 整体项目结构 15516.5.2 项目根目录文件 15616.5.3 node_modules目录 15616.5.4 public目录 15716.5.5 src目录 15816.6 小结 16116.7 练习题 161第17章 Vue.js应用实例 16217.1 创建应用实例 16217.1.1 第一个应用实例 16217.1.2 让应用实例执行方法 16217.1.3 理解选项对象 16317.1.4 理解根组件 16317.1.5 理解MVVM模型 16417.2 data的property与methods 16417.2.1 理解data property 16517.2.2 理解data methods 16517.3 生命周期 16617.3.1 什么是生命周期钩子 16617.3.2 Vue.js的生命周期 16717.3.3 实例59:生命周期钩子的例子 16817.4 小结 17117.5 练习题 171第18章 Vue.js组件 17218.1 组件的基本概念 17218.1.1 实例60:一个Vue.js组件的示例 17218.1.2 什么是组件 17318.1.3 组件的复用 17418.1.4 Vue组件与Web组件的异同点 17518.2 组件交互方式 17518.2.1 实例61:通过prop向子组件传递数据 17518.2.2 实例62:监听子组件事件 17618.2.3 实例63:兄弟组件之间的通信 17918.2.4 实例64:通过插槽分发内容 18118.3 让组件可以动态加载 18318.3.1 实现组件动态加载的步骤 18318.3.2 实例65:动态组件的示例 18318.4 使用缓存组件keep-alive 18818.4.1 实例66:keep-alive的例子 18818.4.2 keep-alive配置详解 18918.5 小结 19018.6 练习题 190第19章 Vue.js模板 19119.1 模板概述 19119.2 实例67:插值 19219.2.1 文本 19219.2.2 原生HTML代码 19219.2.3 绑定HTML attribute 19319.2.4 JavaScript表达式 19319.3 实例68:在模板中使用指令 19419.3.1 参数 19519.3.2 理解指令中的动态参数 19519.3.3 理解指令中的修饰符 19619.4 实例69:在模板中使用指令的缩写 19619.4.1 使用v-bind缩写 19619.4.2 使用v-on缩写 19719.5 使用模板的一些约定 19719.5.1 对动态参数值的约定 19719.5.2 对动态参数表达式的约定 19819.5.3 对访问全局变量的约定 19819.6 小结 19819.7 练习题 198第20章 Vue.js计算属性与监听器 19920.1 通过实例理解计算属性的必要性 19920.2 实例70:一个计算属性的例子 20020.2.1 声明计算属性 20020.2.2 模拟数据更改 20120.3 计算属性缓存与方法的关系 20220.4 为什么需要侦听器 20220.4.1 理解侦听器 20220.4.2 实例71:一个侦听器的例子 20220.5 小结 20420.6 练习题 204第21章 Vue.js表达式 20521.1 条件表达式 20521.1.1 实例72:v-if的例子 20521.1.2 实例73:v-else的例子 20621.1.3 实例74:v-else-if的例子 20621.1.4 实例75:v-show的例子 20621.1.5 v-if与v-show的关系 20721.2 for循环表达式 20721.2.1 实例76:v-for遍历数组的例子 20721.2.2 实例77:v-for遍历数组设置索引的例子 20821.2.3 实例78:v-for遍历对象property的例子 21021.2.4 实例79:数组过滤的例子 21121.2.5 实例80:使用值的范围的例子 21221.3 v-for的不同使用场景 21321.3.1 实例81:在中使用v-for的例子 21321.3.2 实例82:v-for与v-if一同使用的例子 21421.3.3 实例83:在组件上使用v-for的例子 21521.4 小结 21621.5 练习题 216第22章 Vue.js事件 21722.1 什么是事件 21722.1.1 实例84:监听事件的例子 21722.1.2 理解事件处理方法 21822.1.3 处理原始的DOM事件 21922.1.4 为什么需要在HTML代码中监听事件 22022.2 实例85:多事件处理器的例子 22022.3 事件修饰符 22122.3.1 什么是事件修饰符 22122.3.2 理解按键修饰符 22222.3.3 理解系统修饰键 22322.4 小结 22422.5 练习题 224第23章 Vue.js表单 22523.1 理解表单输入绑定 22523.2 实例86:表单输入绑定的基础用法 22523.2.1 文本 22523.2.2 多行文本 22623.2.3 复选框 22723.2.4 单选框 22823.2.5 选择框 22923.3 实例87:值绑定 23023.3.1 复选框 23023.3.2 单选框 23123.3.3 选择框 23223.4 小结 23323.5 练习题 233第24章 Vue.js HTTP客户端 23424.1 初识HttpClient 23424.2 认识网络资源 23524.3 实例88:获取API数据 23524.3.1 引入vue-axios 23524.3.2 获取API数据 23524.3.3 运行应用 23624.4 小结 23624.5 练习题 236第25章 实战:基于Vue.js和Node.js的互联网应用 23725.1 应用概述 23725.1.1 新闻头条的核心功能 23825.1.2 初始化数据库 23825.2 模型设计 23825.2.1 用户模型设计 23825.2.2 新闻模型设计 23925.3 接口设计 23925.4 权限管理 23925.5 小结 24025.6 练习题 240第26章 实战:前端UI客户端应用 24126.1 前端UI设计 24126.1.1 首页UI设计 24126.1.2 新闻详情页UI设计 24226.2 实现UI原型 24226.2.1 初始化news-ui 24226.2.2 添加Naive UI 24326.2.3 创建组件 24426.2.4 实现新闻列表原型设计 24526.2.5 实现新闻详情页原型设计 24726.3 实现路由器 24926.3.1 理解路由的概念 24926.3.2 使用路由插件 24926.3.3 创建路由 24926.3.4 如何使用路由 25026.3.5 修改新闻列表组件 25126.3.6 新闻详情组件增加返回按钮事件处理 25226.3.7 运行应用 25226.4 小结 25326.5 练习题 253第27章 实战:后端服务器应用 25427.1 初始化后台应用 25427.1.1 初始化应用目录 25427.1.2 初始化应用结构 25427.1.3 在应用中安装Express 25527.1.4 编写后台Hello World应用 25527.1.5 运行后台Hello World应用 25627.2 初步实现登录认证 25627.2.1 创建后台管理组件 25627.2.2 添加组件到路由 25627.2.3 注入HTTP客户端 25727.2.4 客户端访问后台接口 25727.2.5 后台接口设置安全认证 25927.3 实现新闻编辑器 26127.3.1 集成md-editor-v3插件 26127.3.2 导入md-editor-v3组件及样式 26127.3.3 编写编辑器界面 26127.3.4 后台创建新增新闻接口 26427.3.5 运行 26627.4 实现新闻列表展示 26627.4.1 后台实现新闻列表查询的接口 26627.4.2 实现客户端访问新闻列表REST接口 26727.4.3 运行应用 26827.5 实现新闻详情展示 26927.5.1 在后服务器实现查询新闻详情的接口 26927.5.2 实现客户端访问新闻详情REST接口 27027.5.3 运行应用 27227.6 实现认证信息存储及读取 27327.6.1 实现认证信息的存储 27327.6.2 实现认证信息的读取 27327.6.3 改造认证方法 27427.6.4 改造对外的接口 27427.7 小结 27627.8 练习题 276第28章 实战:使用Nginx实现高可用 27728.1 Nginx概述与安装 27728.1.1 Nginx介绍 27728.1.2 下载、安装、运行Nginx 27828.1.3 常用命令 28128.2 部署前端应用 28128.2.1 编译前端应用 28128.2.2 部署前端应用编译文件 28228.2.3 配置Nginx 28228.3 实现负载均衡及高可用 28328.3.1 配置负载均衡 28428.3.2 负载均衡常用算法 28428.3.3 实现后台服务的高可用 28628.3.4 运行 28728.4 小结 28728.5 练习题 287参考文献 288