新書推薦:
《
罗马政治观念中的自由
》
售價:HK$
50.4
《
中国王朝内争实录:宠位厮杀
》
售價:HK$
61.6
《
凡事发生皆有利于我(这是一本读了之后会让人运气变好的书”治愈无数读者的心理自助经典)
》
售價:HK$
44.6
《
未来特工局
》
售價:HK$
55.8
《
高术莫用(十周年纪念版 逝去的武林续篇 薛颠传世之作 武学尊师李仲轩家世 凸显京津地区一支世家的百年沉浮)
》
售價:HK$
54.9
《
英国简史(刘金源教授作品)
》
售價:HK$
98.6
《
便宜货:廉价商品与美国消费社会的形成
》
售價:HK$
77.3
《
读书是一辈子的事(2024年新版)
》
售價:HK$
77.3
|
編輯推薦: |
基于Node.js平台的新一代Web开发框架Koa2,搭建真实线上实战项目
Koa2框架技术实战,配套免费在线音视频Koa2教程,让学习更容易
与微信小程序前后端搭配,玩转Koa2,全面掌握潮流技术
让你对Node.js豁!然!开!朗!
|
內容簡介: |
Node.js 10已经进入LTS时代!其应用场景已经从脚手架、辅助前端开发(如SSR、PWA等)扩展到API中间层、代理层及专业的后端开发。Node.js在企业Web开发领域也日渐成熟,无论是在API中间层,还是在微服务中都得到了非常好的落地。本书将通过Web开发框架Koa2,引领你进入Node.js的主战场!本书系统讲解了在实战项目中使用Koa框架开发Web应用的流程和步骤。第1章介绍Node.js的安装、开发工具及调试。第2章和第3章介绍搭建Koa实战项目的雏形。第4章详细介绍HTTP基础知识及其实战应用。第5章介绍MVC、模板引擎和文件上传等实用功能。第6~8章介绍数据库、单元测试及项目的优化与部署。第9~13章介绍从零开始搭建时下火爆的微信小程序前端及后台管理应用的全部过程,以及最终的服务器部署,包括HTTPS、Nginx。本书示例丰富、侧重实战,以完整的实战项目贯穿全部章节,并提供书中涉及的所有源码及部分章节的配套视频教程,将是前端开发人员立足新领域和后端开发人员了解Node.js并使用Koa2开发Web应用的得力助手。
|
關於作者: |
iKcamp由热爱原创和翻译的小伙伴发起,成立于2016年7月。名字中的iK代表布兰登艾克(JavaScript之父)。追随着JavaScript这门语言所秉持的精神,崇尚自由和开放的我们一起工作、分享、创作,并期待着遇见更多有趣的灵魂。iKcamp已出版的图书《移动Web前端高效开发实战:HTML 5 CSS 3 JavaScript Webpack React Native Vue.js Node.js》曾广受好评。陈达孚:硕士研究生毕业于香港中文大学,《前端开发者指南(2017)》译者之一,在中国前端开发者大会、中生代技术大会等会议上发表过主题演讲。金晶:非典型程序员一名,硕士研究生毕业于利兹大学,曾主导翻译《前端开发者指南(2017)》,专注领域为前端动效(包括但不限于CSS 3、SVG、WebGL)。干?B:沪江教育金融事业部前端负责人,具有多年一线互联网公司前端开发经验。张利涛:沪江教育资深前端开发工程师,iKcamp.com线上课程 微信小程序和Node.js主编。戴亮:美团点评资深前端架构师,在GMTC(全球大前端技术大会)上发表过主题演讲。周遥:《HTML 5网页开发实例详解》作者之一,iKcamp团队发起人之一。
|
目錄:
|
第1篇 基础知识
第1章 Node.js入门2
1.1Node.js介绍2
1.1.1 什么是Node.js3
1.1.2Node.js的历史和发展过程4
1.1.3Node.js的特点和应用场景7
1.1.4安装Node.js8
1.1.5实战演练:使用Node.js搭建一个HTTP Server10
1.2NPM11
1.2.1NPM介绍12
1.2.2NPM模块结构13
1.2.3使用NVM控制Node.js版本16
1.2.4Web代理工具NProxy18
1.2.5实战演练:在npm.org上发布一个模块20
1.3Visual Studio Code编辑器22
1.3.1Visual Studio Code的安装及其功能22
1.3.2使用Visual Studio Code调试Node.js23
1.4本章小结25
第2章 遇见Koa26
2.1Koa介绍26
2.1.1Koa的前世今生26
2.1.2Koa的安装及搭建(视频演示)29
2.2Context对象30
2.2.1什么是Context对象31
2.2.2常用属性和方法31
2.3Koa的中间件35
2.3.1中间件概念35
2.3.2实战演练:使用中间件获取响应时间(视频演示)38
2.3.3常用Koa中间件介绍39
2.4本章小结43
第3章 路由44
3.1路由介绍44
3.1.1路由的概念45
3.1.2实战演练:使用Koa中的简单路由自定义404页面46
3.2koa-router路由中间件48
3.2.1koa-router的安装和介绍48
3.2.2RESTful规范48
3.2.3koa-router用法(视频演示)50
3.2.4通过koa-router实现接口的权限控制55
3.3本章小结58
第4章 HTTP59
4.1HTTP介绍59
4.1.1HTTP的诞生59
4.1.2URI和URL62
4.1.3常用的HTTP状态码63
4.1.4常用的请求方法63
4.1.5常用的HTTP首部字段64
4.2HTTP265
4.2.1采用二进制格式传输数据65
4.2.2多路复用65
4.2.3流的优先级66
4.2.4首部压缩66
4.2.5服务端推送67
4.3Node.js的querystring模块67
4.3.1querystring模块的使用67
4.3.2koa-router中的querystring(视频演示)68
4.3.3实战演练:电影搜索列表69
4.4koa-bodyparser中间件72
4.4.1koa-bodyparser介绍72
4.4.2koa-bodyparser的使用(视频演示)73
4.4.3实战演练:实现用户注册功能并进行数据解析74
4.5本章小结77
第2篇 应用实战
第5章 构建Koa Web应用80
5.1MVC80
5.1.1MVC的发展历程81
5.1.2MVC三层架构81
5.1.3在Koa中实现MVC(视频演示)83
5.2模板引擎87
5.2.1什么是模板引擎88
5.2.2常见的模板引擎有哪些88
5.2.3Nunjucks语法介绍91
5.2.4Nunjucks在Koa中的应用(视频演示)96
5.3静态资源97
5.3.1静态资源的类型98
5.3.2koa-static简介99
5.3.3koa-static常用配置(视频演示)99
5.3.4实战演练:开发登录验证页面(视频演示)100
5.4其他常用开发技巧103
5.4.1简易版koa-json插件开发(视频演示)103
5.4.2使用koa-multer中间件实现文件上传106
5.5本章小结110
第6章 数据库111
6.1数据库介绍111
6.1.1什么是数据库111
6.1.2常见的数据库113
6.2在Koa中应用MySQL数据库114
6.2.1下载安装MySQL114
6.2.2Sequelize介绍118
6.2.3实战演练:客户信息数据展现122
6.3在Koa中应用MongoDB数据库126
6.3.1下载安装MongoDB126
6.3.2Mongoose介绍128
6.3.3实战演练:课程表数据展现132
6.4在Koa中应用Redis数据库135
6.4.1什么是Redis135
6.4.2Redis库介绍138
6.4.3实战演练:持久化用户Session状态141
6.5本章小结145
第7章 单元测试146
7.1Chai断言库147
7.1.1Chai的介绍和安装147
7.1.2Chai的使用147
7.2Mocha框架149
7.2.1Mocha的介绍和安装150
7.2.2Mocha的使用150
7.3SuperTest测试RESTful API154
7.3.1SuperTest的介绍和安装154
7.3.2SuperTest的使用154
7.4其他常用工具155
7.4.1Nock模拟服务器响应156
7.4.2Nyc测试覆盖率157
7.5本章小结159
第8章 优化与部署161
8.1服务优化161
8.1.1使用log4js记录日志(视频演示)162
8.1.2自定义错误页(视频演示)168
8.1.3异常捕获处理173
8.1.4实战演练:优化Web开发项目结构(视频演示)176
8.2部署179
8.2.1Node.js进程管理器PM2179
8.2.2应用容器引擎Docker182
8.2.3在线免费开源集成Travis CI185
8.2.4利用Nginx部署HTTPS189
8.3服务监控192
8.3.1Node.js服务性能指标及采集192
8.3.2日志分析系统ELK196
8.3.3Keymetrics监控云服务197
8.4本章小结199
第3篇 项目实战:从零开始搭建微信小程序后台
第9章 云相册功能介绍和准备工作203
9.1应用介绍204
9.2小程序开发账户申请206
9.3准备域名209
9.3.1注册域名209
9.3.2实名认证211
9.3.3域名备案212
9.4准备云服务器216
9.5配置DNS解析218
9.6本章小结221
第10章 云相册服务开发222
10.1小程序登录222
10.2扫码登录230
10.3小程序接口236
10.3.1建立数据模型236
10.3.2定义相册接口238
10.3.3定义照片接口242
10.4后台管理系统接口244
10.4.1定义用户列表接口244
10.4.2定义权限管理接口246
10.4.3定义获取照片接口247
10.4.4定义审核照片接口249
10.5记录日志249
10.6本章小结252
第11章 云相册小程序开发254
11.1项目介绍254
11.2结合Redux实现小程序组件通信259
11.3个人中心页面264
11.4新建相册页面267
11.4.1自定义组件用法介绍267
11.4.2组件事件269
11.4.3实现新建相册组件270
11.5相册列表页面272
11.5.1展示相册列表273
11.5.2进入指定相册页面274
11.5.3调用新建相册组件274
11.6照片列表页面275
11.6.1获取照片列表数据276
11.6.2数据按日期分组277
11.6.3上传照片到当前相册278
11.6.4单击图片显示高清大图279
11.7小程序审核发布280
11.8本章小结282
第12章 云相册后台管理系统283
12.1整体架构284
12.1.1基本文件结构285
12.1.2前端模板结构287
12.1.3路由设计290
12.2相册列表及相关功能292
12.2.1分类展示照片293
12.2.2审核照片297
12.2.3HTTP通信301
12.2.4分页控件302
12.3用户列表及相关功能304
12.4登录与鉴权309
12.4.1登录310
12.4.2鉴权中间件315
12.5额外展开:SVG动画效果及其他317
12.6本章小结318
第13章 云相册服务器部署319
13.1部署数据库321
13.1.1存储设置322
13.1.2 安全策略323
13.2部署Nginx325
13.2.1安装OpenResty325
13.2.2Nginx配置326
13.2.3插件扩展328
13.3部署HTTPS329
13.3.1强制HTTPS跳转329
13.3.2添加WWW跳转330
13.4配置Koa服务331
13.5本章小结332
|
內容試閱:
|
Node.js诞生于2009年,到本书出版时已经有近10个年头。它扩充了JavaScript的应用范围,使JavaScript也能像其他语言一样操作各种系统资源,因此,前端工程化开发的大量工具都开始运行在Node.js环境中。由于Node.js采用事件驱动、非阻塞IO和异步输出来提升性能,因此大量IO密集型的应用也采用Node.js开发。掌握Node.js开发,既能极大地拓宽前端开发者的技术知识面,也能拓展前端开发者的生存空间,从目前前端开发者越来越多的环境中脱颖而出。
由于Node.js仅提供基础的类库,开发者需要自主合理地设计应用架构,并调用大量基础类库来进行开发。为了提升开发效率和降低开发门槛,相关技术社区涌现出不少基于Node.js的Web框架。
Express框架在Node.js诞生之初出现,并迅速成为主流的Web应用开发框架。在社区中,大量的第三方开发者开发了丰富的Express插件,极大地降低了基于Node.js的Web应用开发成本,同时也带动了大量的开发者选择使用Express框架开发Web应用。但Express框架采用传统的回调方式处理异步调用,对于经验不足的开发者来说,很容易将代码写成回调地狱,使开发的应用难以持续维护。在ECMAScript 6的规范中提出了Generator函数,依据该规范,Express的作者TJ Holowaychuk(https:github.comtj)巧妙地开发了co库(https:github.comtjco),使开发者能够通过yield关键词,像编写同步代码一样开发异步应用,从而解决了回调地狱问题。2014年,他基于co库开发了新一代的Web应用开发框架Koa,用官方语言来描述这个框架就是next generation web framework for Node.js。
社区开发者为Koa开发了大量的插件,与Express相比,两者的处理机制存在根本上的差异。Express的插件是顺序执行的,而Koa的中间件基于洋葱模型,可以在中间件中执行请求处理前和请求处理后的代码。ECMAScript 7提供了AsyncAwait关键词,从语法层面更好地支持了异步调用。TJ Holowaychuk在Koa的基础上,采用AsyncAwait取代co库处理异步回调,发布了Koa第2版(简称Koa2)。随着Node 8 LTS(Long Term Support,长期支持)的发布,LTS版本正式支持ECMAScript 7规范,选择使用Koa开发框架开发的Node.js Web应用也越来越多,Koa框架逐步取代了Express框架。
尽管目前Koa非常流行,但纯天然支持ECMAScript 7语法的Node.js 8在2017年10月才正式发布。目前,市面上介绍Koa的书籍几乎没有,大多介绍的是Express框架,本书可以说是第一本介绍Koa的书籍。本书从Node.js基础、HTTP、Koa框架、数据库、单元测试和运维部署等方面全方位地介绍了应用开发所应具备的知识体系。通过阅读本书,读者可以了解Node.js开发的方方面面,减少实际开发中出现的问题。同时,本书的重点章节也提供了线上代码讲解和视频,读者可以在阅读本书的同时,结合线上代码讲解和视频,更容易地理解本书介绍的知识。
特别感谢杜珂珂、哈志辉、姜帅、李波、李益、盛瀚钦、田小虎、徐磊、闫萌、赵晨雪(排名不分先后)对线上培训音视频课程资源的开发和支持。
本书特色
? 重点章节附带教学视频。
为了便于读者理解本书的内容,一些基础、重点的内容配有视频教程。读者可以访问https:ikcamp.com,结合书中内容观看视频。
? 所有源码托管于GitHub。
为了降低读者获取源码的难度,本书的所有源码都托管于GitHub(https:github.com ikcamp),读者也可通过GitHub直接和本书作者沟通。
? 一线互联网公司Node.js技术栈实战经验总结。
本书补充了前端开发者所不具备的后端开发技能和规范,介绍了如何开发Koa应用,如何通过ORM(Object Relational Mapping,对象关系映射)类库读写数据库,如何通过单元测试来保障代码质量,如何通过PM2、CI等方式启动并部署Node.js应用,以及如何采用日志、监控来保障线上应用的稳定运行等内容。
? 典型项目案例解析,实战性强。
本书第3篇通过云相册小程序开发项目介绍了目前流行的小程序技术,包括小程序登录流程、扫码登录、文件上传、相册管理等功能。通过学习本书的相关内容,读者可以独立开发时下流行的小程序和其需要的后端服务。
本书知识体系
第1篇 基础知识(第1~4章)
这部分介绍了开发Koa应用需要具备的预备知识,包括Node.js入门、遇见Koa、路由和HTTP共4个章节。
在第1章中,介绍了Node.js的历史和发展过程,以及Node.js基础和环境准备。介绍了NPM(Node Package Manager,Node.js的第三方包管理工具),通过该包管理工具,开发者能够方便地使用大量的第三方软件包。本章还介绍了微软公司推出的免费开发工具:Visual Studio Code编辑器,以及如何使用该编辑器调试Node.js应用。
在第2章中介绍了Koa的发展历程和作为Koa核心技术的中间件。
在第3章中介绍了路由的概念,以及Koa中最流行的路由中间件koa-router。
在第4章中介绍了HTTP的基础知识,以及HTTP的后续协议HTTP2;介绍了在Node.js中如何获取客户端传递来的数据,如何通过koa-bodyparser中间件获取请求中的body数据等。
第2篇 应用实战(第5~8章)
这部分介绍了应用开发各个环节的知识,包含构建Koa Web应用、数据库、单元测试、优化与部署共4个章节。
在第5章中介绍了MVC架构、模板引擎、静态资源,以及如何输出JSON数据,如何通过koa-multer中间件上传文件等。
在第6章中介绍了数据库的概念和以MySQL为代表的关系型数据库,以及如何通过ORM类库操作MySQL数据库;介绍了以MongoDB为代表的非关系型数据库,以及如何在Node.js中操作MongoDB;介绍了以Redis为代表的新型缓存数据库,以及如何在Node.js中利用Redis实现Session持久化。
在第7章中介绍了Chai断言库,它用来检测单元测试过程中的结果是否符合预期;介绍了Mocha测试框架,使用该框架可以编写和运行单元测试代码;介绍了使用SuperTest工具测试HTTP服务,以及通过Nock库模拟HTTP服务请求响应;最后,介绍了Nyc工具,用以检查单元测试的覆盖率、提升代码质量。
在第8章中介绍了如何记录日志和统一捕获异常,以及如何输出自定义错误页;介绍了如何通过PM2、Docker启动应用,如何通过CI集成发布应用,如何通过Nginx提供HTTPS支持;介绍了如何利用日志等途径监控服务器运行情况,以及如何利用PM2提供的Keymetrics监控云服务器。
第3篇 项目实战:从零开始搭建微信小程序后台(第9~13章)
这部分通过介绍时下最流行的小程序开发,结合具体的相册小程序来说明如何开发一个完整的小程序,以及如何部署小程序。其中,汇总本书前面章节的知识介绍了小程序的功能模块、接口开发、小程序开发、管理后台开发和服务部署。
在第9章中介绍了小程序应具备的产品功能及如何开发小程序门户网站。
在第10章中介绍了小程序登录流程,扫码登录的逻辑和实现方式,小程序中用到的接口和后台管理系统需要的接口。具体包括如何通过中间件来鉴权,如何统一控制后台管理系统的权限,如何通过Mongoose来定义数据模型和访问、存储数据,如何使用log4js记录日志。
在第11章中介绍了开发微信小程序的流程,以及如何借助微信开发者工具开发小程序。
在第12章中介绍了开发后台管理系统的整体架构和设计思路,并提供了一套登录与鉴权的技术方案。
在第13章中介绍了小程序相关服务的线上部署过程,包括对数据库、Nginx、HTTPS、和Koa服务的部署,具体包括如何通过Nginx实现把多个域名解析到同一台云服务器上,如何通过PM2管理应用。
本书适合读者
? Web前端开发人员
? 对Node.js应用感兴趣的开发人员
? Node.js开发的自学者
? 大中专院校相关专业的教师和学生
? 相关培训机构的学员
本书由陈达孚、金晶、干珺、张利涛、戴亮、周遥、薛淑英编写。本书涉及的技术知识点较多,作者团队成员虽竭力争取奉献好的作品以使技术得到更好的普及,但难免存在疏漏和不足,读者如有问题或建议,可以直接到iKcamp的GitHub上留言。本书源码也可前往GitHub上获取,地址为https:github.comikcamp。本书部分内容配有视频,可前往https:camp.qianduan.groupkoa2200观看。
读者服务
轻松注册成为博文视点社区用户(www.broadview.com.cn),您即可享受以下服务。
? 提交勘误:您对书中内容的修改意见可在 提交勘误 处提交,若被采纳,将获赠博文视点社区积分(在您购买电子书时,积分可用来抵扣相应金额)。
? 与作者交流:在页面下方 读者评论 处留下您的疑问或观点,与作者和其他读者一同学习交流。
页面入口:http:www.broadview.com.cn35513
|
|