由于此商品库存有限,请在下单后15分钟之内支付完成,手慢无哦!
100%刮中券,最高50元无敌券,券有效期7天
活动自2017年6月2日上线,敬请关注云钻刮券活动规则更新。
如活动受政府机关指令需要停止举办的,或活动遭受严重网络攻击需暂停举办的,或者系统故障导致的其它意外问题,苏宁无需为此承担赔偿或者进行补偿。
正版 MongoDB+Express+Angular+Node.js全栈开发实战派 柳伟卫 电
¥ ×1
篇初识MEAN
章MEAN架构概述2
1.1MEAN架构核心技术栈的组成2
1.1.1MongoDB2
1.1.2Express3
1.1.3Angular3
1.1.4Node.js3
1.2MEAN架构周边技术栈的组成4
1.2.1NG-ZORRO4
1.2.2ngx-Markdown4
1.2.3NGINX5
1.2.4basic-auth5
1.3MEAN架构的优势5
1.4开发工具的选择8
第2篇Node.js――全栈开发平台
第2章Node.js基础10
2.1Node.js简介10
2.1.1Node.js简史10
2.1.2为什么叫Node.js12
2.2Node.js的特点13
2.3安装Node.js17
2.3.1安装Node.js和NPM17
2.3.2Node.js与NPM的关系17
2.3.3安装NPM镜像18
2.4个Node.js应用18
2.4.1【实例1】创建Node.js应用18
2.4.2【实例2】运行Node.js应用18
2.4.3总结19
第3章Node.js模块――大型项目管理之道20
3.1理解模块化机制20
3.1.1理解CommonJS规范20
3.1.2理解ES6模块22
3.1.3CommonJS和ES6模块的异同点24
3.1.4Node.js的模块实现25
3.2使用NPM管理模块26
3.2.1用npm命令安装模块27
3.2.2全局安装与本地安装27
3.2.3查看安装信息28
3.2.4卸载模块28
3.2.5更新模块29
3.2.6搜索模块29
3.2.7创建模块29
3.3Node.js的核心模块29
第4章Node.js测试31
4.1严格模式和遗留模式31
4.2【实例3】断言的使用32
4.3了解AssertionError33
4.4【实例4】使用deepStrictEqual34
第5章Node.js缓冲区――高性能I/O处理的秘诀38
5.1了解Buffer类38
5.1.1TypedArray对象39
5.1.2Buffer类39
5.2创建缓冲区40
5.2.1初始化缓冲区的API41
5.2.2理解数据的安全性41
5.2.3启用零填充42
5.2.4指定字符编码43
5.3切分缓冲区43
5.4链接缓冲区45
5.5比较缓冲区46
5.6缓冲区编/解码46
5.6.1解码器和编码器47
5.6.2缓冲区解码47
5.6.3缓冲区编码48
第6章Node.js事件处理50
6.1理解事件和回调50
6.1.1事件循环51
6.1.2事件驱动51
6.2事件发射器52
6.2.1将参数传给监听器52
6.2.2异步与同步53
6.2.3仅处理事件一次53
6.3事件类型54
6.3.1事件类型的定义54
6.3.2内置的事件类型55
6.3.3error事件55
6.4事件的操作57
6.4.1【实例5】设置优选监听器58
6.4.2【实例6】获取已注册事件的名称58
6.4.3【实例7】获取监听器数组的副本59
6.4.4【实例8】将事件监听器添加到监听器数组的开头59
6.4.5【实例9】移除监听器60
第7章Node.js文件处理63
7.1了解fs模块63
7.1.1同步与异步操作文件63
7.1.2文件描述符65
7.2处理文件路径66
7.2.1字符串形式的路径66
7.2.2Buffer形式的路径67
7.2.3URL对象的路径68
7.3打开文件69
7.3.1文件系统标志69
7.3.2【实例10】打开文件的例子71
7.4读取文件72
7.4.1【实例11】用fs.read()方法读取文件72
7.4.2【实例12】用fs.readdir()方法读取文件73
7.4.3【实例13】用fs.readFile()方法读取文件74
7.5写入文件75
7.5.1【实例14】将Buffer写入文件75
7.5.2【实例15】将字符串写入文件77
7.5.3【实例16】将数据写入文件78
第8章Node.jsHTTP编程80
8.1创建HTTP服务器80
8.1.1【实例17】用http.Server创建服务器80
8.1.2理解http.Server事件的用法81
8.2处理HTTP的常用操作83
8.3请求对象和响应对象84
8.3.1理解http.ClientRequest类84
8.3.2理解http.ServerResponse类88
8.4REST概述91
8.4.1REST的定义92
8.4.2REST的设计原则92
8.5成熟度模型94
8.5.1第0级:用HTTP作为传输方式94
8.5.2级:引入了资源的概念96
8.5.3第2级:根据语义使用HTTP动词97
8.5.4第3级:使用HATEOAS98
8.6【实例18】构建REST服务的例子100
8.6.1新增用户101
8.6.2修改用户102
8.6.3删除用户103
8.6.4响应请求104
8.6.5运行应用105
第3篇Express――Web服务器
第9章Express基础110
9.1安装Express110
9.2【实例19】编写“HelloWorld”应用112
9.3【实例20】运行“HelloWorld”应用112
0章Express路由――页面的导航员114
10.1路由方法114
10.2路由路径115
10.2.1【实例21】基于字符串的路由路径116
10.2.2【实例22】基于字符串模式的路由路径116
10.2.3【实例23】基于正则表达式的路由路径117
10.3路由参数117
10.4路由处理器118
10.4.1【实例24】单个回调函数118
10.4.2【实例25】多个回调函数118
10.4.3【实例26】一组回调函数118
10.4.4【实例27】独立函数和函数数组的组合119
10.5响应方法119
10.6【实例28】基于Express构建RESTAPI120
10.7测试Express的RESTAPI122
10.7.1测试用于创建用户的API122
10.7.2测试用于删除用户的API122
10.7.3测试用于修改用户的API123
10.7.4测试用于查询用户的API124
1章Express错误处理器125
11.1捕获错误125
11.2默认错误处理器127
11.3自定义错误处理器128
第4篇MongoDB篇――NoSQL数据库
2章MongoDB基础132
12.1MongoDB简介132
12.2安装MongoDB133
12.3启动MongoDB服务134
12.4链接MongoDB服务器135
3章MongoDB的常用操作136
13.1显示已有的数据库136
13.2创建、使用数据库136
13.3插入文档137
13.3.1【实例29】插入单个文档137
13.3.2【实例30】插入多个文档138
13.4查询文档139
13.4.1嵌套文档查询139
13.4.2嵌套字段查询139
13.4.3使用查询运算符140
13.4.4多条件查询140
13.5修改文档140
13.5.1修改单个文档141
13.5.2修改多个文档141
13.5.3替换单个文档142
13.6删除文档142
13.6.1删除单个文档143
13.6.2删除多个文档143
4章【实例31】使用Node.js操作MongoDB144
14.1安装mongodb模块144
14.2访问MongoDB145
14.3运行应用146
5章mongodb模块的综合应用148
15.1【实例32】建立连接148
15.2【实例33】插入文档149
15.3【实例34】查找文档150
15.4修改文档152
15.4.1【实例35】修改单个文档153
15.4.2【实例36】修改多个文档157
15.5删除文档158
15.5.1【实例37】删除单个文档158
15.5.2【实例38】删除多个文档159
第5篇Angular――前端应用开发平台
6章Angular基础162
16.1常见的UI编程框架162
16.1.1Angular与jQuery的不同162
16.1.2Angular与React、Vue.js优势对比164
16.1.3Angular、React、Vue.js三者怎么选165
16.2Angular的安装165
16.3AngularCLI的常用操作166
16.3.1获取帮助166
16.3.2创建应用167
16.3.3创建组件167
16.3.4创建服务167
16.3.5启动应用167
16.3.6添加依赖167
16.3.7升级依赖167
16.3.8自动化测试167
16.3.9下载依赖168
16.3.10编译168
16.4Angular架构概览168
16.4.1模块169
16.4.2组件170
16.4.3模板、指令和数据绑定170
16.4.4服务与依赖注入170
16.4.5路由170
16.5【实例39】创建个Angular应用171
16.5.1使用AngularCLI初始化应用171
16.5.2运行Angular应用173
16.5.3了解src文件夹174
16.5.4了解根目录175
7章Angular模块――大型前端应用管理之道178
17.1模块概述178
17.1.1什么是模块化178
17.1.2认识基本模块179
17.1.3认识特性模块180
17.2引导启动180
17.2.1了解declarations数组181
17.2.2了解imports数组182
17.2.3了解providers数组182
17.2.4了解bootstrap数组182
17.3常用模块182
17.3.1常用模块182
17.3.2BrowserModule和CommonModule183
17.4特性模块183
17.4.1领域特性模块183
17.4.2带路由的特性模块184
17.4.3路由模块184
17.4.4服务特性模块184
17.4.5可视部件特性模块185
17.5入口组件185
17.5.1引导用的入口组件185
17.5.2路由用的入口组件186
17.5.3entryComponents186
17.5.4编译优化186
8章Angular组件――独立的开发单元187
18.1数据展示187
18.1.1【实例40】数据展示的例子187
18.1.2使用插值表达式显示组件属性189
18.1.3组件关联模板的两种方式189
18.1.4在模板中使用指令190
18.2生命周期190
18.2.1生命周期钩子190
18.2.2【实例41】生命周期钩子的例子191
18.2.3生命周期钩子的顺序193
18.2.4了解OnInit()钩子194
18.2.5了解OnDestroy()钩子195
18.2.6了解OnChanges()钩子196
18.2.7了解DoCheck()钩子196
18.2.8了解AfterView钩子197
18.2.9了解AfterContent钩子197
18.3组件的交互方式197
18.3.1【实例42】通过@Input把数据从父组件传到子组件197
18.3.2【实例43】通过set()方法截听输入属性值的变化199
18.3.3【实例44】通过ngOnChanges()方法截听输入属性值的变化200
18.3.4【实例45】用父组件监听子组件的事件202
18.3.5【实例46】父组件与子组件通过本地变量进行交互204
18.3.6【实例47】父组件调用@ViewChild()方法获取子组件的值206
18.3.7【实例48】父组件和子组件通过服务来通信207
18.4样式210
18.4.1【实例49】使用组件样式的例子211
18.4.2样式的作用域211
18.4.3特殊的样式选择器213
18.4.4把样式加载进组件的几种方式213
9章Angular模板和数据绑定216
19.1模板表达式216
19.1.1模板表达式上下文217
19.1.2编写模板表达式的最佳实践217
19.1.3管道操作符218
19.1.4安全导航操作符和空属性路径218
19.1.5非空断言操作符218
19.2模板语句219
19.3数据绑定220
19.3.1从数据源到视图220
19.3.2从视图到数据源220
19.3.3双向绑定221
19.4属性绑定221
19.4.1单向输入221
19.4.2绑定目标221
19.4.3一次性字符串初始化221
19.4.4选择“插值表达式”还是“属性绑定”222
19.5事件绑定222
19.5.1目标事件222
19.5.2$event和事件处理语句222
19.5.3使用EventEmitter类自定义事件223
第20章Angular指令――组件行为改变器225
20.1指令类型225
20.2属性型指令225
20.2.1了解NgClass、NgStyle、NgModel指令226
20.2.2【实例50】创建并使用属性型指令227
20.2.3【实例51】响应用户引发的事件228
20.2.4【实例52】使用@Input数据绑定向指令传递值229
20.2.5【实例53】绑定多个属性231
20.3结构型指令232
20.3.1了解NgIf指令232
20.3.2了解NgSwitch指令232
20.3.3了解NgFor指令233
20.3.4了解<ng-template>标签234
20.3.5了解<ng-container>标签234
20.3.6【实例54】自定义结构型指令235
第21章Angular服务与依赖注入238
21.1初识依赖注入238
21.2在Angular中实现依赖注入239
21.2.1观察初始的应用240
21.2.2创建服务242
21.2.3理解注入器242
21.2.4理解服务提供商245
21.2.5注入服务249
21.2.6单例服务250
21.2.7组件的子注入器250
21.2.8测试组件250
21.2.9服务依赖服务251
21.2.10依赖注入令牌252
21.2.11可选依赖252
21.3多级依赖注入252
21.3.1注入器树252
21.3.2注入器冒泡253
21.3.3在不同层级提供同一个服务253
21.3.4组件注入器253
第22章Angular路由254
22.1配置路由254
22.1.1【实例55】配置路由器254
22.1.2输出导航生命周期中的事件256
22.1.3【实例56】设置路由出口256
22.2理解路由器链接257
22.2.1路由器状态257
22.2.2激活的路由257
22.3路由事件258
22.4重定向URL258
22.5【实例57】一个路由器的例子259
22.5.1创建应用及组件259
22.5.2修改组件的模板260
22.5.3导入并设置路由器260
22.5.4添加路由出口261
22.5.5美化界面262
22.5.6定义通配符路由264
第23章Angular响应式编程266
23.1了解Observable机制266
23.1.1Observable的基本概念266
23.1.2定义观察者267
23.1.3执行订阅268
23.1.4创建Observable对象269
23.1.5实现多播270
23.1.6处理错误273
23.2了解RxJS技术273
23.2.1创建Observable对象的函数274
23.2.2了解操作符275
23.2.3处理错误276
23.3了解Angular中的Observable277
23.3.1在EventEmitter类上的应用278
23.3.2在调用HTTP方法时的应用278
23.3.3在AsyncPipe管道上的应用279
23.3.4在Router路由器上的应用279
23.3.5在响应式表单上的应用280
第24章AngularHTTP客户端282
24.1初识HttpClient282
24.2认识网络资源282
24.3【实例58】获取天气数据284
24.3.1导入HttpClient284
24.3.2编写空气质量组件285
24.3.3编写空气质量服务285
24.3.4将服务注入组件286
24.3.5返回带类型检查的响应288
24.3.6读取完整的响应体288
24.4错误处理290
24.4.1获取错误详情291
24.4.2重试292
第6篇综合应用――构建一个完整的互联网应用
第25章总体设计294
25.1应用概述294
25.1.1mean-news的核心功能295
25.1.2初始化数据库295
25.2模型设计295
25.2.1用户模型设计295
25.2.2新闻模型设计296
25.3接口设计296
25.4权限管理296
第26章客户端应用298
26.1UI设计298
26.1.1首页UI设计298
26.1.2新闻详情页UI设计299
26.2实现UI原型299
26.2.1初始化mean-news-ui300
26.2.2添加NG-ZORRO300
26.2.3创建新闻列表组件303
26.2.4设计新闻列表原型304
26.2.5设计新闻详情页原型306
26.3实现路由器309
26.3.1创建路由309
26.3.2添加路由出口309
26.3.3修改新闻列表组件309
26.3.4给“返回”按钮添加事件310
26.3.5运行应用311
第27章服务器端应用312
27.1初始化服务器端应用312
27.1.1创建应用目录312
27.1.2初始化应用结构312
27.1.3在应用中安装Express313
27.1.4编写“HelloWorld”应用314
27.1.5运行“HelloWorld”应用314
27.2初步实现用户登录认证功能314
27.2.1创建服务器端管理组件314
27.2.2添加组件到路由器315
27.2.3使用HttpClient315
27.2.4访问服务器端接口316
27.2.5给服务器端接口设置安全认证318
27.3实现新闻编辑器320
27.3.1集成ngx-Markdown插件320
27.3.2导入MarkdownModule模块321
27.3.3编写编辑器界面321
27.3.4在服务器端新增创建新闻的接口325
27.3.5运行应用327
27.4实现新闻列表展示328
27.4.1在服务器端实现新闻列表查询的接口328
27.4.2在客户端实现客户端访问新闻列表的REST接口329
27.4.3运行应用330
27.5实现新闻详情展示331
27.5.1在服务器端实现新闻详情查询的接口331
27.5.2在客户端实现调用新闻详情页的REST接口333
27.5.3设置路由334
27.5.4运行应用334
27.6实现认证信息的存储及读取335
27.6.1实现认证信息的存储335
27.6.2实现认证信息的读取336
27.6.3改造认证方法336
27.6.4改造对外的接口337
27.7总结339
第28章用NGINX实现高可用340
28.1NGINX概述340
28.1.1NGINX特性340
28.1.2安装、运行NGINX340
28.1.3验证安装343
28.1.4常用命令344
28.2部署客户端应用345
28.2.1编译客户端应用345
28.2.2部署客户端应用的编译文件346
28.2.3配置NGINX346
28.3实现负载均衡及高可用347
28.3.1配置负载均衡348
28.3.2负载均衡常用算法349
28.3.3实现服务器端服务器的高可用350
28.3.4运行应用351
参考文献353
柳伟卫,英文名Way Lau,80后程序员,关注编程、系统架构、性能优化。对技术抱有极大的热情,坚持每天学习。喜欢开源,乐于分享。具有多年软件开发管理及系统架构经验。负责过多个重量及省级大型分布式系统的设计与研发,也参与过多个大型项目系统架构的技术改造。现为某集团技术公司项目经理,负责大型分布式系统的微服务化改造。
写作背景 曾经业界流行使用LAMP架构(Linux、Apache、MySQL和PHP)来快速开发中小。LAMP是开放源代码的,而且使用简单、价格低廉,因此LAMP架构成为当时开发中小的*,号称“平民英雄”。 而今随着Node.js的流行,JavaScript终于在服务器端拥有一席之地。JavaScript成为从前端到后端再到数据库能够支持全栈开发的语言。而以MongoDB、Express、Angular和Node.js四种开源技术为核心的MEAN架构,除具备LAMP架构的一切优点外,还能支撑高可用、高并发的大型互联网应用的开发。MEAN架构势必也会成为新的“平民英雄”。 市面上独立讲解MongoDB、Express、Angular和Node.js的书较为丰富(包括笔者也出版了《Angular企业级应用开发实战》《Node.js企业级应用开发实战》等书),但将这些技术综合运用的案例和资料比较少。鉴于此,笔者撰写了这本书加以补充。希望读者通过学习本书具有全栈开发的能力。 本书涉及的技术及相关版本 请读者将相关开发环境设置成不低于本书所采用的配置。 ? Node.js 12.9.0 ? NPM 6.12.2 ? Express 4.17.1 ? MongoDB Community Server 4.0.10 ? MongoDB 3.3.1 ? Angular CLI 8.3.0 ? NG-ZORRO 8.1.2 ? ngx-Markdown 8.1.0 ? basic-auth 2.0.1 ? NGINX 1.15.8 本书特点 1.可与笔者在线上交流 本书提供以下交流网址,读者有任何技术的问题都可以向笔者提问。 https://github.com/waylau/mean-book-samples/issues 2.提供了基于技术点的58个实例和1个综合性实战项目 本书提供了58个MEAN架构技术点的实例,将理论讲解落实到代码实现上。这些实例具有很高的应用价值和参考价值。在掌握了基础之后,本书还提供了1个综合性实战项目。 3.免费提供书中实例的源文件 本书免费提供书中所有实例的源文件。读者可以一边阅读本书,一边参照源文件动手练习。这样不仅可以提高学习的效率,还可以对书中的内容有更加直观的认识,从而逐渐培养自己的编程能力。 4.覆盖的知识面广 本书覆盖了MongoDB、Express、Angular、NG-ZORRO、ngx-markdown、basic-auth和NGINX等在内的MEAN架构技术点,技术前瞻,案例丰富。不管是编程初学者,还是编程高手,都能从本书中获益。本书可作为读者的案头工具书,随手翻阅。 5.语言简洁,阅读流畅 本书采用结构化的层次,并采用简短的段落和语句,让读者读来有顺水行舟的轻快感。 6.案例的商业性、应用性强 本书提供的案例多数来源于真实的商业项目,具有很高的参考价值。有些代码甚至可以移植到自己的项目中直接使用,使从“学”到“用”这个过程变得更加直接。
覆盖面广:含MongoDB、Express、Angular、NG-ZORRO、ngx-markdown、basic-auth和NGINX等在内的MEAN架构技术点 实例丰富: 58个实例,把知识都用实例来学习 综合性项目: 一个完整的、企业级的、前后端分离的应用——“新闻头条”
亲,大宗购物请点击企业用户渠道>小苏的服务会更贴心!
亲,很抱歉,您购买的宝贝销售异常火爆让小苏措手不及,请稍后再试~
非常抱歉,您前期未参加预订活动,
无法支付尾款哦!
抱歉,您暂无任性付资格