新書推薦:
《
东欧史(全二册)-“中间地带”的困境
》
售價:NT$
1010.0
《
虚拟资本:金融怎样挪用我们的未来
》
售價:NT$
352.0
《
刻意练习不生气
》
售價:NT$
179.0
《
大宋理财:青苗法与王安石的金融帝国(全彩插图本)
》
售價:NT$
500.0
《
安全感是内心长出的盔甲
》
售價:NT$
305.0
《
快人一步:系统性能提高之道
》
售價:NT$
505.0
《
我们为什么会做梦:让梦不再神秘的新科学
》
售價:NT$
352.0
《
算法图解(第2版)
》
售價:NT$
356.0
|
編輯推薦: |
本书基于RxJS Vue.js Spring的黄金组合,以一个源自实际的简化项目作为全书的依托,贯穿全书,并无缝糅合了响应式数据库连接R2DBC、实时流数据处理平台Hazelcast、远程服务gRPC、分布式事件流平台Apache Kafka、云端机密数据管理Spring Cloud Vault、开源容器引擎Docker、状态管理库Pinia、可视化图表库Apache ECharts等市场热门技术。通读本书,读者会以一种轻松、思路清晰的项目渐进实战方式,跨入响应式技术的大门,并具备使用这种热门领先技术开发响应式应用系统的知识和技能。
|
內容簡介: |
RxJS响应式扩展库、Vue.js响应式渲染、Spring WebFlux响应式Web栈,这三者的结合,为响应式应用系统的前后端开发提供了黄金组合。本书将三者的知识有机融合在解决实际代表性问题的项目开发中。全书以一个源自实际、业务逻辑清晰、易于理解的项目案例,将前后端的响应式开发技术完全渗透在项目案例各模块的渐进实现中,且无缝糅合了响应式数据库连接R2DBC、实时流数据处理平台Hazelcast、远程服务gRPC、分布式事件流平台Apache Kafka、云端机密数据管理Spring Cloud Vault、开源容器引擎Docker、状态管理库Pinia、可视化图表库Apache ECharts等市场主流热门技术。阅读本书,读者会以一种轻松、思路清晰的项目渐进实战方式,跨入响应式技术的大门,并具备使用这种热门领先技术开发响应式应用系统的知识和技能。
本书由浅入深、通俗易懂,循序渐进、聚焦响应式项目实战,适用于缺乏Web开发经验的初学者,也适合具有开发经验但需要学习或提高响应式开发技术的人员作为参考。
|
目錄:
|
第1章搭建开发平台
1.1Java Web概述
1.2C/S与B/S模式
1.2.1C/S模式
1.2.2B/S模式
1.3响应式开发概述
1.3.1响应式技术简介
1.3.2响应式流规范
1.3.3前端响应式技术
1.3.4后端响应式技术
1.4搭建开发环境
1.4.1安装Temurin JDK
1.4.2安装PostgreSQL数据库
1.4.3使用IntelliJ IDEA
1.5Gradle自动化构建工具
1.5.1Gradle概述
1.5.2Gradle核心概念
1.5.3构建和配置
1.6创建Spring响应式项目
第2章RxJS响应式扩展库
2.1RxJS概述
2.1.1RxJS简介
2.1.2引入RxJS支持库
2.2RxJS响应式处理基础
2.2.1可观察对象
2.2.2观察者
2.2.3订阅
2.2.4主题
2.3RxJS常用操作符
2.3.1管道pipe
2.3.2对象创建函数
2.3.3工具函数
2.3.4过滤函数
2.3.5转换函数
2.3.6事件处理函数fromEvent()
2.3.7合并函数
2.3.8扫描函数scan()
2.3.9定时缓冲bufferTime()
2.3.10重试函数retry()
2.3.11异步请求函数ajax()
2.3.12资源请求函数fromFetch()
2.3.13通信函数webSocket()
2.4场景应用实战
2.4.1多任务处理进度条
2.4.2动态增删图书
第3章Vue.js渐进式框架
3.1Vue概述
3.2Vue应用基础
3.2.1创建Vue应用
3.2.2生命周期
3.2.3组合式函数setup()
3.2.4插值
3.2.5响应性函数
3.2.6解构
3.3基础语法
3.3.1模板语法
3.3.2计算属性computed
3.3.3侦听watch
3.3.4表单域的数据绑定
3.3.5条件和列表渲染
3.3.6对象组件化
3.3.7插槽
3.3.8事件绑定和触发
3.3.9自定义元素
3.3.10自定义指令和插件
3.4渲染函数
3.4.1h()函数
3.4.2render()函数
3.5使用组件
3.5.1组件定义及动态化
3.5.2异步组件
3.5.3数据提供和注入
3.6单文件组件
3.6.1基本结构形式
3.6.2样式选择器
3.6.3使用vue3sfcloader导入SFC
3.7组合式语法糖
3.7.1基本语法
3.7.2属性声明和事件声明
3.7.3属性暴露
3.8使用聚合器封装内容
3.9深入__vue_app__和_vnode
3.9.1__vue_app__
3.9.2_vnode
3.9.3实战组件的动态注册和卸载
3.10状态管理
3.10.1Pinia简介
3.10.2数据状态State
3.10.3计算属性Getter
3.10.4数据更改Action
3.10.5项目中的应用方式
3.11场景应用实战
3.11.1下拉选择框联动
3.11.2动态增删图书
第4章Spring响应式开发
4.1RESTful概述
4.1.1REST简介
4.1.2RESTful要义
4.1.3RESTful请求风格
4.2Spring响应式概述
4.2.1Spring Boot简介
4.2.2创建Spring Boot项目
4.2.3Spring Boot入口类
4.2.4Spring Boot常用注解
4.3Spring Boot场景实战
4.3.1前后端互传字符串
4.3.2前后端互传对象
4.3.3模拟数据采集
4.4Reactor响应式处理技术
4.4.1Project Reactor概述
4.4.2Reactor基本思想
4.4.3Reactor核心包publisher
4.4.4单量MonoT
4.4.5通量FluxT
4.5响应式操作符
4.5.1订阅subscribe
4.5.2多播ConnectableFlux
4.5.3映射map
4.5.4扁平化flatMap
4.5.5组合操作符
4.5.6副业处理doOnNext
4.5.7过滤filter和条件操作takeWhile
4.5.8扫描scan
4.5.9转换transform
4.5.10分组groupBy
4.5.11缓冲buffer和开窗window
4.5.12调度器publishOn和subscribeOn
4.5.13重试(retry)和重复(repeat)
4.6并行通量ParallelFlux
4.7触发器Sinks
4.8冷数据流和热数据流
4.9背压处理
4.10Spring WebFlux响应式基础
4.10.1Spring WebFlux简介
4.10.2WebFlux应用的入口类
4.10.3WebFluxConfigurer配置接口
4.10.4application配置文件
4.10.5HandlerFilterFunction事件流过滤
4.10.6HandlerFunction业务逻辑处理
4.10.7RouterFunction函数式路由
4.10.8WebFilter过滤接口
4.10.9WebClient非阻塞跨服务通信
4.10.10Multipart Data多域数据
4.10.11WebSocketHandler通信处理接口
4.11响应式数据库连接R2DBC
4.11.1R2DBC简介
4.11.2加入R2DBC依赖并配置连接属性
4.11.3响应式R2dbcRepository
4.12场景应用实战
4.12.1基于Flux的模拟数据采集
4.12.2多域数据的传递
第5章构建多模块项目
5.1教务辅助管理系统项目概述
5.1.1系统功能简介
5.1.2系统技术架构
5.1.3系统的复合构建结构
5.2创建响应式根项目TAMS
5.3添加公共项目appcommon
5.3.1服务端构建脚本server.common.gradle
5.3.2前端构建脚本view.common.gradle
5.3.3gRPC构建脚本reactor.grpc.gradle
5.4添加前端项目appview
5.4.1新建appview
5.4.2添加子模块home
5.4.3添加子模块public
5.4.4添加其他子模块
5.5添加服务端项目appserver
5.5.1新建appserver
5.5.2添加子模块appboot
5.5.3添加其他子模块
5.6最终的配置文件settings.gradle
5.7项目打包后的模块结构
第6章主页的实现
6.1功能需求及界面设计
6.2后端服务模块
6.2.1模块的整体结构
6.2.2配置build.gradle构建脚本
6.2.3创建项目入口主程序
6.2.4设置application.yaml
6.2.5定义函数式路由映射Bean
6.3前端视图模块
6.3.1整体结构的设计
6.3.2主页home.html
6.3.3主页脚本home.js
6.3.4模块加载器sfcloader.js
6.3.5页面主体组件home.index.vue
6.3.6主页布局组件home.layout.vue
6.3.7标题及消息显示组件home.header.vue
6.3.8导航组件home.menu.vue
6.3.9插件app.plugins.js
6.4状态管理
6.4.1states.js定义状态量
6.4.2actions.js更改状态数据
6.4.3getters.js计算函数
6.4.4index.js创建状态实例
6.5通用进度提示组件loading.vue
第7章用户登录
7.1功能需求及界面设计
7.2相关数据表
7.2.1表结构与SQL语句
7.2.2构建配置和实体类
7.3使用JWT令牌
7.3.1JWT令牌简介
7.3.2使用Nimbus JOSE JWT处理令牌
7.3.3创建Assistant令牌生成和校验工具类
7.4后端服务模块
7.4.1模块的整体结构
7.4.2修改build.gradle构建脚本
7.4.3配置applicationusers.yaml并导入appboot
7.4.4DTO类
7.4.5编写登录服务
7.4.6定义函数式路由映射Bean
7.5前端视图模块
7.5.1整体结构的设计
7.5.2使用聚合器封装业务逻辑
7.5.3实现链式登录业务流
7.5.4编写主文件组件
7.5.5抽取界面的共性化
7.5.6创建用户登录UI组件
7.5.7修改主页导航组件
7.5.8登录试错的锁屏处理
第8章用户注册
8.1功能需求及界面设计
8.2后端服务模块
8.2.1添加瞬态属性
8.2.2向UsersHandler组件添加注册方法
8.2.3配置用户注册的路由地址
8.2.4修改路由Bean映射注册处理
8.2.5实现BeforeConvertCallback接口
8.3前端视图模块
8.3.1整体结构的设计
8.3.2向聚合器中添加注册函数
8.3.3实现链式注册业务流
8.3.4主文件组件user.regist.index.vue
8.3.5UI组件user.regist.ui.vue
8.3.6修改主页导航组件
第9章消息推送
9.1功能需求及界面设计
9.2相关数据表
9.2.1表结构与SQL语句
9.2.2实体类
9.3后端服务模块
9.3.1模块的整体结构
9.3.2修改build.gradle构建脚本
9.3.3配置applicationnote.yaml并导入appboot
9.3.4DTO类
9.3.5配置推送消息的WebClient和Sinks.Many
9.3.6定义消息服务接口
9.3.7基于退避策略推送消息
9.3.8定义函数式路由映射Bean
9.4前端视图模块
9.4.1使用EventSource订阅消息流数据
9.4.2用户登录成功时订阅消息
第10章学院风采
10.1功能需求及界面设计
10.2后端服务模块
10.2.1模块的整体结构
10.2.2修改build.gradle构建脚本
10.2.3配置applicationcollege.yaml并导入appboot
10.2.4视频流数据的分段响应
10.2.5定义函数式路由映射Bean
10.3前端视图模块
10.3.1整体结构的设计
10.3.2创建学院概述SFC组件
10.3.3主文件组件
10.3.4学院列表组件
10.3.5学院内容组件
10.3.6组件聚合器
10.3.7修改主页导航组件
第11章学生查询
11.1功能需求及界面设计
11.2相关数据表
11.2.1表结构与SQL语句
11.2.2实体类
11.3后端服务模块
11.3.1模块的整体结构
11.3.2修改build.gradle构建脚本
11.3.3配置applicationstudent.yaml并导入appboot
11.3.4DTO类
11.3.5数据访问接口类
11.4整合实时流数据处理平台Hazelcast
11.4.1Hazelcast简介
11.4.2Hazelcast应用基础
11.4.3Hazelcast配置类
11.4.4数据查询服务组件
11.5利用JWT令牌验证有效性
11.5.1基于HandlerFilterFunction的验证组件
11.5.2定义函数式路由映射Bean
11.6前端视图模块
11.6.1整体结构的设计
11.6.2前端主文件
11.6.3利用ce.vue定制化查询
11.6.4使用聚合器管理组件
11.6.5查询组件
11.6.6处理键盘输入事件
11.6.7实现链式查询业务流
11.6.8数据挂载组件
11.6.9修改主页导航组件
11.7测试分布式数据共享效果
第12章招生一览
12.1功能需求及界面设计
12.2相关数据表
12.2.1表结构与SQL语句
12.2.2实体类
12.3通过远程服务获取招生数据
12.3.1gRPC简介
12.3.2Protobuf协议
12.3.3.proto文件简介
12.3.4使用响应式gRPC
12.4创建远程服务项目Enroll
12.4.1项目的整体结构
12.4.2项目的构建脚本及配置脚本
12.4.3配置application.yaml
12.4.4创建proto文件
12.4.5编写gRPC服务类
12.4.6启动gRPC服务器
12.5TAMS项目的后端服务模块
12.5.1模块的整体结构
12.5.2修改build.gradle构建脚本
12.5.3配置applicationenroll.yaml并导入appboot
12.5.4DTO类和proto文件
12.5.5编写gRPC客户端组件
12.5.6添加函数式路由映射Bean
12.6TAMS项目的前端视图模块
12.6.1整体结构的设计
12.6.2数据的图形可视化
12.6.3使用Apache ECharts构建图形
12.6.4前端主文件
12.6.5学院专业下拉框联动组件
12.6.6招生饼图组件
12.6.7获取数据构建图形
12.6.8设置图形修饰项
12.6.9修改主页导航组件
第13章资料上传
13.1功能需求及界面设计
13.2后端服务模块
13.2.1模块的整体结构
13.2.2修改build.gradle构建脚本
13.2.3配置applicationfile.yaml并导入appboot
13.2.4编写文件上传的服务组件
13.2.5定义函数式路由映射Bean
13.3前端视图模块
13.3.1整体结构的设计
13.3.2自定义文件拖放指令
13.3.3编写前端主文件
13.3.4实现链式上传业务流
13.3.5修改主页导航组件
第14章畅论空间
14.1功能需求及界面设计
14.2消息服务概述
14.2.1消息服务简介
14.2.2主要消息服务模式
14.3使用Apache Kafka作为消息服务器
14.3.1Apache Kafka简介
14.3.2下载并启用Kafka服务器
14.3.3KafkaTemplate模板
14.3.4生产者Producer和消费者Consumer
14.3.5Kafka响应式消息发送器和接收器
14.4后端服务模块的基础处理
14.4.1模块的整体结构
14.4.2配置applicationchat.yaml并导入appboot
14.4.3修改build.gradle构建脚本
14.4.4编写MessageDTO类
14.5创建WebSocket服务
14.5.1实现WebSocketHandler接口
14.5.2从Kafka拉取最近的若干条消息
14.5.3发送消息到Kafka
14.5.4群发给其他用户
14.6配置WebSocket服务
14.6.1设置响应标头中的SecWebSocketProtocol
14.6.2将前端请求映射到服务端点
14.7前端视图模块
14.7.1整体结构的设计
14.7.2前端主文件
14.7.3聊天组件weChat
14.7.4加载外部CSS到shadowRoot
14.7.5实现WebSocket监听
14.7.6修改主页导航组件
第15章项目的发布
15.1发布为命令行运行模式
15.2应用容器引擎Docker
15.2.1Docker简介
15.2.2使用Docker CLI
15.2.3自动镜像创建工具Dockerfile
15.3云端管理敏感数据
15.3.1Spring Cloud Vault简介
15.3.2生成安全证书和私钥文件
15.3.3编写Vault配置文件
15.3.4启动Vault服务
15.3.5配置项目的数据库连接信息
15.3.6配置项目的spring.cloud.vault
15.3.7测试Vault运行情况
15.4发布前的准备工作
15.4.1在BOOTINF下存放上传文件
15.4.2处理TAMS项目
15.4.3处理远程服务项目Enroll
15.5将项目发布到Docker
|
內容試閱:
|
当前互联网行业快速发展,给电商平台的系统开发与运行带来新的挑战。在消费淡季,各大电商购物平台的顾客较少,系统负载较低、资源消耗减少; 而每到消费旺季(例如“双十一”购物节)顾客激增,系统负载大幅增加、资源消耗增长很快。一个健壮、稳定的系统,需要确保在负载急剧变化时仍然能够保持即时响应能力。当前大部分系统采用的是传统的命令式编程,代码同步执行,难以根据系统负载变化情况调节吞吐量,也容易导致资源的争用、线程阻塞、响应延迟。
响应式编程就是为了解决传统命令式编程的“痛点”,具有先天的异步非阻塞特性。响应式技术能够大幅提高应用系统的弹性、吞吐量和稳定性,有利于构建有韧性、有弹性、异步非阻塞的企业级应用系统。响应式技术在越来越多的Web应用开发中大显身手,是技术发展的趋势。从RxJS、Vue.js到Spring WebFlux、RxPy和RxJava,响应式开发如火如荼,国内外各大机构或公司纷纷切入: Apache软件基金会、Pivotal、阿里巴巴、腾讯、美团、京东、滴滴等正在逐步将组织服务架构进行响应式代码改造和切换。
关于软件人才培养,业界广泛认可的观点是: 软件开发能力的培养,必须从项目实战中来。许多读者读了不少技术图书,看了很多教程视频,对各种命令、函数和语法非常熟悉,但面对实际项目却往往手足无措、无从下手。如果仅对萝卜、白菜的各种特征了然于胸,纸上谈兵尚可,想做出一道可口的菜肴恐怕很难。要做一名好厨师,首先得学会亲自动手做出第一道菜。
网络上关于响应式前后端开发的讨论非常活跃,但也非常散乱,不成体系。目前市场上专门介绍Vue.js、Spring的书籍很多,但介绍响应式开发的图书较少,至于将前后端响应式技术融合起来,进行响应式项目实战的图书几乎没有。本书基于RxJS Vue.js Spring的黄金组合,以一个源自实际的简化项目作为全书的依托,贯穿全书,并无缝糅合了响应式数据库连接R2DBC、实时流数据处理平台Hazelcast、远程服务gRPC、分布式事件流平台Apache Kafka、云端机密数据管理Spring Cloud Vault、开源容器引擎Docker、状态管理库Pinia、可视化图表库Apache ECharts等市场热门技术。本书无论是知识的讲解还是项目案例的选取,都不追求“大而全”,也尽量避免过于细节化的语法讲解,而是特别注重学以致用。优先掌握“跨进门”的常用知识,让项目先运行起来更为重要。至于那些非常细节化的知识点,更应该从不断的项目锤炼中日积月累。本书项目案例选取了常规、容易浸入的教务辅助管理系统,力求业务逻辑简单清晰、易于理解,摒弃繁杂的业务处理,以免造成对学习响应式技术的不必要干扰。随着章节内容的推进,在功能模块渐进实现中所蕴含的前后端响应式技术,就会被读者不知不觉地熟悉、掌握、浸润。读者如果认真耐心地按照书中内容进行学习实践,一个实际的响应式应用系统将会在你的手中诞生,并会对前后端响应式系统开发有一个清晰的脉络和深入的理解。
本书共15章。第1章简要介绍如何搭建开发平台。第2章详细介绍RxJS响应式扩展库。第3章以Vue.js渐进式框架为主要内容。第4章则重点介绍Spring响应式开发。第5章详细介绍如何基于Gradle构建多模块项目。第6~14章,从前端到后端,完整实现了教务辅助管理系统的各功能模块。第15章介绍基于Docker、Spring Cloud Vault的项目发布方法。在各章节模块的实现中,作者精心设计,力求使用不同的技术方法来实现类似功能,目的就是强调学以致用、融会贯通的编写思想。
如果要看到响应式项目的运行效果,最简单快捷的方法自然是从清华大学出版社网站(www.tup.com.cn)本书相关页面,下载各章配套源代码,然后导入到IntelliJ IDEA中运行,但这不是好方法。编者强烈建议: 请跟随本书章节的推进节奏,自己输入代码,调试运行。在这个过程中,也许会碰到这样或那样的问题。当感觉到“山重水复疑无路”时,才需要去参考本书配套源代码。方法似乎有些“拙”,学习效果却要好很多倍。纸上得来终觉浅,绝知此事要躬行!
本书编写过程中得到清华大学出版社的大力支持,在此深致谢意!感谢家人在编写过程中提供的各种支持,使得编写工作能够流畅完成!
本书可满足各类Web应用系统开发的初学者学习需要,也可作为广大响应式技术开发者的参考用书。编写过程中,编者力求精益求精,但也难免存在一些疏漏或不足,敬请读者批评指正。
如果读者能够在本书的引导下,做出第一道响应式技术大餐,初步体验到响应式技术的奇妙,编者也就感到莫大满足了。感谢您使用本书,希望本书能够成为您的良师益友!
编者
2024年2月
|
|