编辑推荐

适读人群:适合对HTML的基础知识已经有所了解,并可以用现代编程语言完成一些编程的读者。读者如果对JavaScript有一定了解,则将更易于理解《Node.js+MongoDB+Angular Web开发:MEAN全栈权威指南》的内容。

Node.js+MongoDB+Angular Web开发:MEAN全栈权威指南》始于对每种技术都提供简洁、清晰的教程,然后迅速转向建立实用的Web应用程序。你将学习如何使用Node.js和MongoDB构建更具可伸缩性的高性能站点,以及如何利用Angular的创新MVC方法构建更有效的页面和应用程序,以及如何综合这三个利器共同实现出色的下一代Web解决方案。

■使用Node.js和Express实现高度可伸缩的动态Web服务器

■为Web应用程序实现MongoDB数据存储

■使用Node.jsJavaScript代码访问MongoDB并与之交互

■定义扩展HTML语言的自定义Angular指令

■用JavaScript构建服务器端Web服务

■实现可与Node.jsWeb服务器交互的客户端服务

■构建提供丰富用户互动的动态浏览器视图

■为Web应用程序和页面添加经过身份验证的用户账号和嵌套的评论组件

内容简介

Node.js是领先的服务器端编程环境,MongoDB是*受欢迎的NoSQL数据库,而Angular是基于MVC的前端开发的领先框架。它们一起提供了一个易于实现的完全集成的Web开发栈,可以让Web程序员创建从服务器到客户端完全以JavaScript构建的高性能站点和应用程序。针对Angular2,Angular4和后续版本进行了更新,这个新版本的Node.js,MongoDB和AngularWebDevelopment将展示如何将这三种技术整合到完整的工作解决方案中。它首先介绍每种技术的简明明了的教程,然后快速地开始构建常见的Web应用程序。

作者简介

BradDayley是一名高级软件工程师,在开发企业应用程序及Web界面方面,他拥有超过20年的工作经验。他熟练应用JavaScript和jQuery多年,并是LearningAngular,jQueryandJavaScriptPhrasebook和SamsTeachYourselfAngularJS,JavaScript,andjQueryAllinOne的作者。他曾设计并实现了一大批应用程序和服务―从应用服务器到复杂的Web应用程序。BrendanDayley是一名Web应用程序开发人员,他喜欢学习和实施*新、*好的技术。他是LearningAngular和SamsTeachYourselfAngularJS,JavaScript,andjQueryAllinOne的合著者。他使用JavaScript、TypeScript和Angular编写了大量的Web应用程序,他正在探索新的Web和移动技术(如增强现实)的功能并研究如何将其用于创新解决方案。CalebDayley是一名在校大学生,主修计算机科学。他尽可能地学习自己所能学到的东西,并且自学了很多关于程序设计的知识。他自学了几种语言,包括JavaScript、C#,并且使用了《Node.js+MongoDB+Angular Web开发:MEAN全栈权威指南》的第1版。他对未来的发展,以及为有机会帮助设计和开发下一代创新软件感到兴奋,这些软件将继续改善我们生活、工作和娱乐的方式。
译者卢涛:ITPUB社区版主,20年IT从业经历,先后从事c/c软件开发、系统分析及Oracle数据库等工作,参加过多个全国性普查数据处理项目的开发和运维,目前主要从事统计报表联网填报系统的后台支持。《剑破冰山――Oracle开发的艺术》作者之一,译有多部技术书籍。

目录

目录
引言1
第1部分入门
第1章介绍Node.js-to-Angular套件9
1.1了解基本的Web开发框架9
1.1.1用户10
1.1.2浏览器10
1.1.3Web服务器12
1.1.4后端服务12
1.2了解Node.js-to-Angular套件组件13
1.2.1Node.js13
1.2.2MongoDB14
1.2.3Express15
1.2.4Angular15
1.3小结16
1.4下一章16
第2章JavaScript基础17
2.1定义变量17
2.2了解JavaScript数据类型18
2.3使用运算符19
2.3.1算术运算符19
2.3.2赋值运算符20
VIII目录
2.3.3运用比较和条件运算符20
2.4实现循环22
2.4.1while循环23
2.4.2do/while循环23
2.4.3for循环23
2.4.4for/in循环24
2.4.5中断循环25
2.5创建函数26
2.5.1定义函数26
2.5.2将变量传递给函数26
2.5.3从函数返回值..27
2.5.4使用匿名函数..27
2.6理解变量作用域..28
2.7使用JavaScript对象28
2.7.1使用对象语法29
2.7.2创建自定义对象30
2.7.3使用原型对象模式30
2.8处理字符串31
2.8.1合并字符串32
2.8.2在字符串中搜索子串33
2.8.3在一个字符串中替换单词33
2.8.4将字符串分割成数组33
2.9使用数组33
2.9.1合并数组35
2.9.2遍历数组35
2.9.3将数组转换为字符串35
2.9.4检查数组是否包含某个条目36
2.9.5在数组中添加条目和删除条目36
2.10添加错误处理36
2.10.1try/catch块37
2.10.2抛出你自己的错误37
2.10.3使用finally38
2.11小结38
2.12下一章38
第2部分学习Node.js
第3章开始使用Node.js41
3.1了解Node.js41
3.1.1谁在使用Node.js41
3.1.2Node.js的用途42
3.1.3Node.js包含的内容42
3.2Node.js安装44
3.2.1纵观Node.js安装位置44
3.2.2验证Node.js可执行文件44
3.2.3选择Node.jsIDE45
3.3使用Node包45
3.3.1什么是Node封装模块45
3.3.2了解Node包注册表46
3.3.3使用Node包管理器46
3.3.4搜索Node封装模块47
3.3.5安装Node封装模块48
3.3.6使用package.json49
3.4创建Node.js应用程序50
3.4.1创建Node.js模块封装51
3.4.2将一个Node.js封装模块发布到NPM注册表52
3.4.3在Node.js应用程序中使用Node.js封装模块54
3.5将数据写入控制台55
3.6小结56
3.7下一章56
第4章在Node.js中使用事件、监听器、定时器和回调57
4.1了解Node.js事件模型57
4.1.1比较事件回调和线程模型57
4.1.2在Node.js中阻塞I/O58
4.1.3会话示例60
4.2将工作添加到事件队列60
4.2.1实现定时器61
4.2.2使用nextTick来调度工作64
4.2.3实现事件发射器和监听器65
4.3实现回调68
4.3.1向回调函数传递额外的参数69
4.3.2在回调中实现闭包70
4.3.3链式回调71
4.4小结72
4.5下一章72
第5章在Node.js中处理数据I/O73
5.1处理JSON73
5.1.1把JSON转换成JavaScript对象73
5.1.2把JavaScript对象转换为JSON74
5.2使用Buffer模块缓冲数据74
5.2.1了解缓冲数据75
5.2.2创建缓冲区75
5.2.3写入缓冲区76
5.2.4从缓冲区读取77
5.2.5确定缓冲区的长度78
5.2.6复制缓冲区78
5.2.7对缓冲区切片80
5.2.8拼接缓冲区80
5.3使用Stream模块来传送数据81
5.3.1Readable流82
5.3.2Writable流84
5.3.3Duplex流86
5.3.4Transform流88
5.3.5把Readable流用管道输送到Writable流89
5.4用Zlib压缩与解压缩数据91
5.4.1压缩和解压缩缓冲区91
5.4.2压缩/解压缩流93
5.5小结93
5.6下一章93
第6章从Node.js访问文件系统95
6.1同步和异步文件系统调用95
6.2打开和关闭文件96
6.3写入文件97
6.3.1简单文件写入97
6.3.2同步文件写入98
6.3.3异步写入文件99
6.3.4流式文件写入101
6.4读取文件102
6.4.1简单文件读取102
6.4.2同步文件读取103
6.4.3异步文件读取104
6.4.4流式文件读取105
6.5其他文件系统任务106
6.5.1验证路径的存在性106
6.5.2获取文件信息107
6.5.3列出文件108
6.5.4删除文件110
6.5.5截断文件110
6.5.6建立和删除目录111
6.5.7重命名文件和目录112
6.5.8监视文件更改112
6.6小结..113
6.7下一章113
第7章在Node.js中实现HTTP服务115
7.1处理URL115
7.1.1了解URL对象116
7.1.2解析URL组件117
7.2处理查询字符串和表单参数117
7.3了解请求、响应和服务器对象118
7.3.1http.ClientRequest对象118
7.3.2http.ServerResponse对象121
7.3.3http.IncomingMessage对象122
7.3.4http.Server对象122
7.4在Node.js中实现HTTP客户端和服务器124
7.4.1提供静态文件服务124
7.4.2实现动态的GET服务器126
7.4.3实现POST服务器128
7.4.4与外部源交互131
7.5实现HTTPS服务器和客户端133
7.5.1创建HTTPS客户端134
7.5.2创建HTTPS服务器135
7.6小结136
7.7下一章136
第8章在Node.js中实现套接字服务137
8.1了解网络套接字137
8.2了解TCP服务器和Socket对象138
8.2.1net.Socket对象138
8.2.2net.Server对象141
8.3实现TCP套接字服务器和客户端144
8.3.1实现TCP套接字客户端144
8.3.2实现TCP套接字服务器146
8.4实现TLS服务器和客户端149
8.4.1创建TLS套接字客户端150
8.4.2创建TLS套接字服务器151
8.5小结153
8.6下一章153
第9章在Node.js中使用多处理器扩展应用程序155
9.1了解process模块155
9.1.1了解进程I/O管道155
9.1.2了解进程的信号156
9.1.3使用process模块控制进程执行156
9.1.4从process模块获取信息157
9.2实现子进程159
9.2.1了解ChildProcess对象159
9.2.2使用exec()在另一个进程上执行一个系统命令161
9.2.3使用execFile()在另一个进程上执行一个可执行文件162
9.2.4使用spawn()在另一个Node.js实例中产生一个进程163
9.2.5实现子派生165
9.3实现进程集群167
9.3.1使用cluster模块168
9.3.2了解Worker对象169
9.3.3实现一个HTTP集群170
9.4小结172
9.5下一章172
第10章使用其他Node.js模块173
10.1使用os模块173
10.2使用util模块175
10.2.1格式化字符串175
10.2.2检查对象类型176
10.2.3将JavaScript对象转换为字符串176
10.2.4从其他对象继承功能177
10.3使用dns模块178
10.4使用crypto模块180
10.5其他Node模块和对象181
10.6小结182
10.7下一章182
第3部分学习MongoDB
第11章了解NoSQL和MongoDB185
11.1为什么要采用NoSQL185
11.2了解MongoDB186
11.2.1理解集合186
11.2.2了解文档186
11.3MongoDB的数据类型187
11.4规划你的数据模型188
11.4.1使用文档引用来规范化数据189
11.4.2使用嵌入式文档反规范化数据190
11.4.3使用封顶集合191
11.4.4了解原子写操作192
11.4.5考虑文件增长192
11.4.6识别索引、分片和复制的机会193
11.4.7大集合与大量集合的对比193
11.4.8决定数据生命周期193
11.4.9考虑数据的可用性和性能194
11.5小结194
11.6下一章194
第12章MongoDB入门195
12.1构建MongoDB的环境195
12.1.1MongoDB的安装195
12.1.2启动MongoDB196
12.1.3停止MongoDB197
12.1.4从shell客户端访问MongoDB197
12.2管理用户账户200
12.2.1列出用户200
12.2.2创建用户账户201
12.2.3删除用户202
12.3配置访问控制203
12.3.1创建用户管理员账户203
12.3.2打开身份验证.204
12.3.3创建数据库管理员账户204
12.4管理数据库205
12.4.1显示数据库清单205
12.4.2切换当前数据库205
12.4.3创建数据库206
12.4.4删除数据库206
12.4.5复制数据库207
12.5管理集合207
12.5.1显示数据库中的集合列表207
12.5.2创建集合208
12.5.3删除集合208
12.5.4在集合中查找文档209
12.5.5将文档添加到集合中210
12.5.6从集合中删除文档210
12.5.7更新集合中的文档211
12.6小结212
12.7下一章212
第13章MongoDB和Node.js入门213
13.1把MongoDB的驱动程序添加到Node.js213
13.2从Node.js连接到MongoDB213
13.2.1了解写入关注214
13.2.2通过MongoClient对象从Node.js连接到MongoDB.214
13.3了解用在MongoDBNode.js驱动程序中的对象218
13.3.1了解Db对象218
13.3.2了解Admin对象220
13.3.3了解Collection对象220
13.3.4了解Cursor对象222
13.4访问和操作数据库223
13.4.1列出数据库223
13.4.2创建数据库223
13.4.3删除数据库224
13.4.4创建、列出和删除数据库实例224
13.4.5获取MongoDB服务器的状态226
13.5访问和操作集合227
13.5.1列出集合227
13.5.2创建集合227
13.5.3删除集合227
13.5.4创建、列出和删除集合的示例228
13.5.5获取集合信息229
13.6小结230
13.7下一章230
第14章从Node.js操作MongoDB文档231
14.1了解数据库更改选项231
14.2了解数据库更新运算符232
14.3将文档添加到集合233
14.4从集合获取文档235
14.5更新集合中的文档237
14.6原子地修改文档的集合239
14.7保存集合中的文档241
14.8使用upsert往集合中插入文档242
14.9从集合中删除文档244
14.10从集合中删除单个文档246
14.11小结248
14.12下一章248
第15章从Node.js访问MongoDB249
15.1介绍数据集249
15.2了解query对象250
15.3了解查询options对象251
15.4查找特定文档集合252
15.5清点文档数量255
15.6对结果集进行限制257
15.6.1按大小限制结果257
15.6.2限制对象返回的字段258
15.6.3对结果进行分页260
15.7对结果集进行排序262
15.8查找不同的字段值263
15.9对结果进行分组265
15.10通过聚合结果来应用MapReduce269
15.10.1了解aggregate()方法269
15.10.2使用聚合框架运算符270
15.10.3实现聚合表达式运算符272
15.10.4聚合的例子273
15.11小结274
15.12下一章274
第16章利用Mongoose来使用结构化模式与验证275
16.1了解Mongoose275
16.2利用Mongoose连接到MongoDB数据库276
16.3定义模式278
16.3.1了解路径278
16.3.2创建一个模式定义278
16.3.3把索引添加到一个模式279
16.3.4实现字段的唯一性280
16.3.5强制字段的必需性280
16.3.6往Schema模型添加方法280
16.3.7在words数据库上实现模式281
16.4编译模型282
16.5了解Query对象282
16.5.1设置查询数据库操作283
16.5.2设置查询数据库操作选项284
16.5.3设置查询运算符285
16.6了解Document对象287
16.7利用Mongoose查找文档288
16.8利用Mongoose添加文档290
16.9利用Mongoose更新文档292
16.9.1保存文档更改292
16.9.2更新单个文档293
16.9.3更新多个文档295
16.10利用Mongoose删除文档296
16.10.1删除单个文档296
16.10.2删除多个文档298
16.11利用Mongoose聚合文档299
16.12使用验证框架302
16.13实现中间件函数304
16.14小结306
16.15下一章307
第17章高级MongoDB概念309
17.1添加索引309
17.2使用封顶集合311
17.3应用复制312
17.3.1复制策略314
17.3.2部署一个副本集314
17.4实施分片315
17.4.1分片服务器类型316
17.4.2选择一个分片键317
17.4.3选择一种分区方法318
17.4.4部署一个分片的MongoDB集群319
17.5修复MongoDB数据库322
17.6备份MongoDB323
17.7小结324
17.8下一章324
第4部分使用Express使生活更轻松
第18章在Node.js中实现Express327
18.1Express入门327
18.1.1配置Express设置327
18.1.2启动Express服务器328
18.2配置路由329
18.2.1实现路由329
18.2.2在路由中应用参数330
18.3使用Request对象334
18.4使用Response对象336
18.4.1设置标头336
18.4.2设置状态337
18.4.3发送响应337
18.4.4发送JSON响应339
18.4.5发送文件341
18.4.6发送下载响应342
18.4.7重定向响应343
18.5实现一个模板引擎343
18.5.1定义引擎344
18.5.2加入本地对象345
18.5.3创建模板345
18.5.4在响应中呈现模板347
18.6小结348
18.7下一章348
第19章实现Express中间件349
19.1了解中间件349
19.1.1在全局范围内把中间件分配给某个路径350
19.1.2把中间件分配到单个路由350
19.1.3添加多个中间件函数351
19.2使用query中间件351
19.3提供静态文件服务351
19.4处理POST正文数据353
19.5发送和接收cookie354
19.6实现会话356
19.7应用基本的HTTP身份验证358
19.8实现会话身份验证359
19.9创建自定义中间件362
19.10小结363
19.11下一章364
第5部分学习Angular
第20章TypeScript入门367
20.1学习不同的类型367
20.2了解接口369
20.3实现类370
20.4实现模块371
20.5理解函数372
20.6小结373
20.7下一章373
第21章Angular入门375
21.1为什么选择Angular375
21.2了解Angular375
21.2.1模块376
21.2.2指令376
21.2.3数据绑定376
21.2.4依赖注入376
21.2.5服务377
21.3职责分离377
21.4为你的环境添加Angular377
21.5使用AngularCLI378
21.6创建一个基本的Angular应用程序379
21.6.1创建你的第一个Angular应用程序380
21.6.2了解和使用NgModule381
21.6.3创建Angular引导程序382
21.7小结386
21.8下一章386
第22章Angular组件387
22.1组件配置387
22.2建立模板388
22.3使用构造函数391
22.4使用外部模板392
22.5注入指令394
22.5.1使用依赖注入构建嵌套组件395
22.5.2通过依赖注入传递数据397
22.5.3创建使用输入的Angular应用程序397
22.6小结399
22.7下一章399
第23章表达式401
23.1使用表达式401
23.1.1使用基本表达式402
23.1.2在表达式中与Component类交互404
23.1.3在Angular表达式中使用TypeScript405
23.2使用管道408
23.3建立一个自定义管道412
23.4小结414
23.5下一章414
第24章数据绑定415
24.1了解数据绑定415
24.1.1插值415
24.1.2性质绑定417
24.1.3属性绑定419
24.1.4类绑定419
24.1.5样式绑定420
24.1.6事件绑定421
24.1.7双向绑定424
24.2小结426
24.3下一章426
第25章内置指令427
25.1了解指令427
25.2使用内置指令427
25.2.1组件指令428
25.2.2结构指令428
25.2.3属性指令431
25.3小结434
25.4下一章434
第6部分高级Angular
第26章自定义指令437
26.1创建自定义属性指令437
26.2使用组件创建自定义指令440
26.3小结444
26.4下一章444
第27章事件和变更检测445
27.1使用浏览器事件445
27.2发出自定义事件446
27.2.1将自定义事件发送到父组件层次结构.446
27.2.2使用监听器处理自定义事件.446
27.2.3在嵌套组件中实现自定义事件446
27.2.4从子组件中删除父组件中的数据448
27.3使用可观察物452
27.3.1创建一个可观察物对象452
27.3.2利用可观察物观察数据变化453
27.4小结455
27.5下一章456
第28章在Web应用程序中实现Angular服务457
28.1了解Angular服务457
28.2使用内置的服务457
28.3使用http服务发送HTTPGET和PUT请求458
28.3.1配置HTTP请求459
28.3.2实现HTTP响应回调函数459
28.3.3实现一个简单的JSON文件并使用http服务来访问它460
28.4使用http服务实现一个简单的模拟服务器463
28.5使用router服务更改视图474
28.5.1在Angular中使用routes475
28.5.2实现一个简单的路由476
28.6用导航栏实现路由479
28.7实现带参数的路由484
28.8小结488
28.9下一章488
第29章创建自己的自定义Angular服务489
29.1将自定义服务集成到Angular应用程序中489
29.2实现一个使用常量数据服务的简单应用程序490
29.3实现数据转换服务492
29.4实现可变数据服务496
29.5实现一个返回promise的服务500
29.6实现共享服务501
29.7小结508
29.8下一章508
第30章玩转Angular509
30.1实现使用动画服务的Angular应用程序509
30.2实现放大图像的Angular应用程序514
30.3实现启用拖放的Angular应用程序517
30.4实现星级评级的Angular组件522
30.5小结530

前言/序言

  译者序
  随着互联网的发展,曾几何时,“全栈工程师”(FullStackEngineer)的概念开始兴起,这种职位要求应征者对开发堆栈的每个方面都有所掌握,包括服务器、网络及宿主环境、数据建模、业务逻辑、API/Action/MVC、用户界面等。过去,这意味着全栈工程师需要面对归属不同层次的多种软件环境和语言,并处理各层之间的交互,这些技术中的任何一种都要耗费大量的精力和时间来学习,因而会面临很大的挑战。现在,这种情况已经改变,JavaScript语言既可用于客户端开发,又能用于编写服务器端应用程序,还能方便地与传统及新型数据库交互,其中有些代码还能复用,从而为开发功能丰富的互联网应用程序创造了良好的条件。
  Node.js是一种领先的服务器端编程环境,它和Express的结合能够实现高度可伸缩的动态Web服务器,并可用JavaScript编写Web服务。
  MongoDB是目前最流行的NoSQL数据库,可用于Web应用程序数据的存储,并能从Node.jsJavaScript代码访问。
  Angular正迅速成为基于MVC的前端开发的领先框架,它的自定义指令扩展了HTML语言。
  这三者整合在一起使得能够完全用JavaScript创建从服务器到客户端浏览器的高性能站点和应用程序。
  《Node.js+MongoDB+Angular Web开发:MEAN全栈权威指南》提供了将这3种技术整合成全面的有效解决方案的完整指南。书中简要而清晰地讲述了这3种技术,然后迅速转到构建几种常见的Web应用程序上面。最后还用多个实际的例子实现了可以与Node.jsWeb服务器交互的客户端服务,为用户提供了丰富的交互功能的动态浏览器视图,以及为Web页面添加用户身份验证和嵌套评论等组件。
  作者BradDayley是一名高级软件工程师,精通jQuery、JavaScript、MongoDB,著有多本技术书籍,并在企业应用程序及Web界面方面具有丰富的开发经验,《Node.js+MongoDB+Angular Web开发:MEAN全栈权威指南》正是他对实际工作成果的总结。第2版增加了两位作者:BrendanDayley是经验丰富的技术书籍作家和Web软件工程师;CalebDayley则是计算机科学专业的大学生,他对于设计和开发下一代创新软件很有兴趣。
  通过学习《Node.js+MongoDB+Angular Web开发:MEAN全栈权威指南》,读者将学会如何使用Node.js和MongoDB来建立更具可伸缩性的高性能网站,如何利用Angular创新的MVC方法构建更有效的网页和应用程序,以及如何把这三者结合在一起使用,从而提供卓越的下一代Web解决方案。
  李绿霞、卢林、陈克非、李洪秋、张慧珍、李又及、卢晓瑶、陈克翠、汤有四、李阳、刘雯也参与了部分翻译工作,感谢他们在《Node.js+MongoDB+Angular Web开发:MEAN全栈权威指南》翻译工作中的辛勤付出。
  感谢我们的儿子卢令一,他读小学三年级了,他努力好学,《Node.js+MongoDB+Angular Web开发:MEAN全栈权威指南》的出版也有他的一份贡献。
  感谢电子工业出版社张春雨编辑对我们的信任,让我们继续从事第2版的翻译工作。
  最后,希望这《Node.js+MongoDB+Angular Web开发:MEAN全栈权威指南》能对读者有所助益。但由于译者经验和水平有限,译文中难免有不妥之处,恳请读者批评指正!
  卢涛李颖
  2018年9月18日
  引言
  欢迎阅读《Node.js+MongoDB+Angular Web开发:MEAN全栈权威指南》。《Node.js+MongoDB+Angular Web开发:MEAN全栈权威指南》将引领你进入使用JavaScript的世界—在你的Web开发项目中,从服务器和服务到浏览器客户端。《Node.js+MongoDB+Angular Web开发:MEAN全栈权威指南》涵盖Node.js、MongoDB和Angular的实现和集成,而它们是Web开发世界中新兴的一些最令人兴奋和创新的技术。
  本篇引言包括
  《Node.js+MongoDB+Angular Web开发:MEAN全栈权威指南》受众;
  为什么要阅读《Node.js+MongoDB+Angular Web开发:MEAN全栈权威指南》;
  从《Node.js+MongoDB+Angular Web开发:MEAN全栈权威指南》中你将了解到的知识;
  Node.js、MongoDB和Angular分别是什么,以及为什么它们都是出色的技术;
  《Node.js+MongoDB+Angular Web开发:MEAN全栈权威指南》的组织结构。
  让我们开始吧。
  《Node.js+MongoDB+Angular Web开发:MEAN全栈权威指南》受众
  《Node.js+MongoDB+Angular Web开发:MEAN全栈权威指南》假定读者已经对HTML的基础知识有所了解,并可以用现代编程语言完成一些编程。读者如果对JavaScript有一定了解,将更容易理解《Node.js+MongoDB+Angular Web开发:MEAN全栈权威指南》的内容;但这不是必需的,因为《Node.js+MongoDB+Angular Web开发:MEAN全栈权威指南》确实也涵盖了JavaScript的基础知识。
  为什么要阅读《Node.js+MongoDB+Angular Web开发:MEAN全栈权威指南
  《Node.js+MongoDB+Angular Web开发:MEAN全栈权威指南》将教你如何创建功能强大的互动网站和Web应用程序—从Web服务器和服务器上的服务到基于浏览器的交互式Web应用程序。这里所涉及的技术都是开源的,在服务器端组件和浏览器端组件上你都可以使用JavaScript。
  《Node.js+MongoDB+Angular Web开发:MEAN全栈权威指南》的大多数读者想要掌握Node.js和MongoDB,以便可以达到构建高度可伸缩和高性能网站的目的。大多数读者也想利用Angular创新的MVC/MVVM(Model-View-Controller/Model-View-View-Model)方法来实现精心设计和结构化的网页和Web应用程序。总之,Node.js、MongoDB和Angular提供了一个易于实现并完全集成的Web开发套件,它可以让你实现神奇的Web应用程序。
  从《Node.js+MongoDB+Angular Web开发:MEAN全栈权威指南》中你将了解到的知识
  阅读《Node.js+MongoDB+Angular Web开发:MEAN全栈权威指南》将帮助你构建现实中的动态网站和Web应用程序。网站不再由HTML页面和集成的图像及格式化的文本等简单的静态内容构成。相反,网站变得更加动态,单个网页往往充当一个完整的网站或应用程序。
  使用Angular技术,可让你在网页中构建逻辑,这可以与Node.js服务器相互通信并从MongoDB数据库获取必要的数据。Node.js、MongoDB和Angular的组合可以让你实现交互式动态网页。通过阅读《Node.js+MongoDB+Angular Web开发:MEAN全栈权威指南》,你将学会如下的事情:
  如何使用Node.js和Express来实现一个高度可伸缩的动态Web服务器;
  如何在JavaScript中创建服务器端的Web服务;
  如何在Web应用程序中实现MongoDB的数据存储;
  如何用Node.jsJavaScript代码实现对MongoDB的访问和交互;
  如何定义静态和动态Web路由并实现服务器端脚本来支持它们;
  如何定义扩展HTML语言的自定义Angular组件;
  如何实现可以与Node.jsWeb服务器交互的客户端服务;
  如何建立提供丰富的用户交互的动态浏览器视图;
  如何将嵌套的组件添加到网页;
  如何实现Angular路由来管理客户端应用视图之间的转移。
  何为Node.js
  Node.js,有时被直接称作Node,是基于谷歌的V8JavaScript引擎的开发框架。你可以用JavaScript编写Node.js代码,然后V8将它编译为要执行的机器代码。你可以用Node.js编写出大部分,或者甚至全部的服务器端代码,包括Web服务器、服务器端脚本和任何支持Web应用程序的功能。Web服务器和支持Web应用程序的脚本在同一个服务器端应用程序中运行这一事实,允许在Web服务器和脚本之间有更紧密的集成。
  Node.js之所以是一个出色的框架,基于下面几个原因。
  JavaScript端到端:Node.js的一个最大优点是,它可以让你用JavaScript同时编写服务器端和客户端脚本。在决定把逻辑放入客户端脚本还是服务器端脚本方面一直有困难。利用Node.js,你可以在客户端上编写JavaScript,并轻松地在服务器上适应它,反之亦然。另外一个好处是,客户端的开发者和服务器的开发者使用同一种语言。
  事件驱动的可伸缩性:Node.js应用独特的逻辑来处理Web请求。使用Node.js,不是让多个线程等待处理Web请求,而是采用一种基本的事件模型在同一个线程上处理它们。这使得Node.jsWeb服务器可以用传统的Web服务器不能做到的方式扩缩。
  可扩展性:Node.js有很多的追随者和一个活跃的开发社区。人们正在不断提供新的模块来扩展Node.js的功能。此外,在Node.js中易于安装和包含新的模块,你可以在几分钟内扩展Node.js的项目来包含新的功能。
  快速执行:建立Node.js,并在其中开发是超级容易的。在短短几分钟内就可以安装Node.js,并拥有一个能工作的Web服务器。
  何为MongoDB
  MongoDB是一个灵活的可伸缩的NoSQL数据库。Mongo这个名字来自单词“堆积如山”(humongous),用来强调MongoDB提供的可伸缩性和性能。MongoDB为需要存储诸如用户评论、博客或其他条目数据的高流量的网站提供了出色的网站后端存储,因为它可快速伸缩并易于实现。
  下面是MongoDB真正适合于Node.js套件的一些原因。
  针对文档:因为MongoDB是针对文档的,所以数据在数据库中存储的格式,非常接近于你在服务器端和客户端脚本中处理它们的格式。这消除了把数据从行转换为对象和转换回来的需要。
  高性能:MongoDB是目前性能最高的数据库之一。尤其是在现在,有越来越多的人与网站进行交互,具有能够支持大流量的后端是很重要的。
  高可用性:MongoDB的复制模型使得它易于维护可伸缩性,同时又保持高性能。
  高可伸缩性:MongoDB的结构使得它易于通过在多个服务器上对数据共享实现水平伸缩。
  无SQL注入:MongoDB是不容易受到SQL注入攻击的(也就是向Web表单或从浏览器的其他输入中输入SQL语句,从而危及数据库的安全性)。这是因为对象被存储为对象,不使用SQL字符串。
  何为Angular
  Angular是由谷歌开发的JavaScript客户端框架。Angular背后的理论是提供一个框架,以便可以很容易地使用MVC/MVVM框架实现设计良好的结构化网页和应用程序。
  Angular提供了在浏览器中处理用户输入、操纵客户端上的数据及控制元素如何在浏览器界面上显示的功能。下面是Angular具有的一些优势。
  数据绑定:Angular利用其强大的范围机制,有一个将数据绑定到HTML元素的简洁的方法。
  可扩展性:Angular架构允许你轻松地扩展语言的各个方面,以提供你自己的自定义实现。


其他推荐