新华一城书集店铺主页二维码
新华一城书集 微信认证
上海新华书店官方微信书店
微信扫描二维码,访问我们的微信店铺
你可以使用微信联系我们,随时随地的购物、客服咨询、查询订单和物流...

鸿蒙架构师修炼之道

97.58
运费: ¥ 5.00-20.00
库存: 2 件
鸿蒙架构师修炼之道 商品图0
鸿蒙架构师修炼之道 商品图1
鸿蒙架构师修炼之道 商品图2
鸿蒙架构师修炼之道 商品图3
鸿蒙架构师修炼之道 商品图4
鸿蒙架构师修炼之道 商品缩略图0 鸿蒙架构师修炼之道 商品缩略图1 鸿蒙架构师修炼之道 商品缩略图2 鸿蒙架构师修炼之道 商品缩略图3 鸿蒙架构师修炼之道 商品缩略图4

商品详情

前言introduction

写作背景

自HarmonyOS面世之时,笔者便已经开始关注HarmonyOS的发展。笔者在各大论坛也对HarmonyOS进行过非常多的文章介绍以及技术布道。本书所选用的HarmonyOS NEXT版本也是市面上能看到的最新正式版本。

由于笔者长期从事鸿蒙开发与教学,出版过多本关于鸿蒙的专著,包括《鸿蒙HarmonyOS手机应用开发实战》《鸿蒙HarmonyOS应用开发从入门到精通》《鸿蒙之光HarmonyOS NEXT原生应用开发入门》等,并在长期维护一本开源书《跟老卫学HarmonyOS开发》,因此撰写本书并没有带来太多的困难。本书的内容聚焦于告诉读者鸿蒙架构师是如何修炼的,成为鸿蒙架构师应具备怎样的核心能力和工作方法,包括架构设计思维、架构设计原理、架构设计模式、工具、编程语言、UI设计、线程模型设计、通信设计、持久化设计、安全性、测试、调优调测等。本书不但通过真实案例讲解架构设计流程和经验,还总结了丰富的鸿蒙架构师工作原则和技巧,尤其适合广大鸿蒙开发人员进阶学习。

本书所采用的技术及相关版本

技术的版本是非常重要的,因为不同版本之间存在兼容性问题,而且不同版本的软件所对应的功能也是不同的。本书所列出的技术在版本上相对较新,都是经过笔者大量测试的。这样读者在自行编写代码时,可以参考本书所列出的版本,从而避免版本兼容性所产生的问题。建议读者将相关开发环境设置得跟本书一致,或者不低于本书所列的配置。详细的版本配置如下:

DevEco Studio 5.0.2 Release(5.0.7.210)

HarmonyOS 5.0.2 Release SDK(OpenHarmony SDK 5.0.2.126,API Version 14 Release)

DevEco Studio_Cangjie Plugin 5.0.7.100 Beta1

Cangjie Compiler: 0.53.18 (cjnative)

操作系统:Windows10 64位、Windows11 64位

内存:16GB及以上

硬盘:100GB及以上

分辨率:1280times;800像素及以上

勘误和交流

本书如有勘误,会在以下网址发布:

gt;

书中如有错漏之处,敬请斧正,欢迎读者通过以下方式与笔者联系。

博客: gt;

邮箱:waylau521@gmail.com

微博: gt;

开源: gt;

致谢

感谢北京大学出版社的各位工作人员为本书的出版所做的努力。

感谢家人对我的理解和支持。由于撰写本书,我牺牲了很多陪伴家人的时间。

感谢关心和支持我的朋友、读者、网友。

柳伟卫

1.实战讲解,讲练结合:通过实战项目案例帮助读者掌握鸿蒙架构设计技巧,提升实践能力。

2.鸿蒙与华为技术生态深度结合:从基础工具、编程语言到设计思维、原理与模式,快速掌握专家级架构设计能力。

3.高效编码,深度剖析:提供大量即用型优质代码,可直接参考学习。

4.把握未来,紧随技术自主潮流:探索鸿蒙架构在未来技术发展中的应用潜力,展现其在人工智能、万物互联等领域的前景。

所有程序员都有成为架构师的潜力,只要掌握了架构师的思维方式和工作方法,你也能成长为架构师。鸿蒙操作系统是华为自研的、面向万物互联的全场景分布式操作系统,支持手机、平板、PC 智能穿戴、智慧屏等多种终端设备运行,是提供应用开发、设备开发的一站式服务的平台。随着 HarmonyOS NEXT 正式发布,市面上对于鸿蒙架构设计方面的需求呈井喷之势。

本书以最新的 HarmonyOS NEXT 版本为基石,详细介绍成为鸿蒙架构师应具备和掌握的核心能力和工作方法,包括架构设计思维、架构设计原理、架构设计模式、工具、编程语言、UI 设计、线程模型设计、通信设计、持久化设计、安全性、测试、调优调测等多个主题。

本书不但通过真实案例讲解架构设计流程和经验,还总结了丰富的鸿蒙架构师工作原则和技巧,尤其适合广大鸿蒙程序员进阶学习。同时,学习本书也有助于产品经理、测试人员、运维人员和其他行业从业者理解鸿蒙软件架构设计工作。

柳伟卫,网名老卫、waylau,在IT公司担任项目经理、架构师、高级技术顾问等职位,是CSDM、开源中国、云栖社区等技术社区专家,慕课网特邀讲师。在行业内深耕多年,积累了大量软件开发、系统架构、大数据处理及性能调优等方面的经验。

Contents目录成为鸿蒙架构师 21.1 什么是鸿蒙 21.1.1 万物互联时代的新挑战 21.1.2 什么是 HarmonyOS 31.1.3 鸿蒙生态详解 41.2 鸿蒙开发的两大方向 41.2.1 设备开发 41.2.2 应用开发 51.3 鸿蒙架构师要做什么 51.3.1 技术研究与规划 61.3.2 系统架构设计 61.3.3 开发与指导 61.3.4 项目管理与协调 61.3.5 系统维护与升级 71.4 如何成为团队的架构师 71.4.1 扎实的知识储备 71.4.2 丰富的提升技能 81.4.3 经验的积累 81.4.4 职业素养的培养 8架构设计思维 112.1 架构师设计思维特点 112.1.1 系统性 112.1.2 抽象性 112.1.3 前瞻性 122.1.4 权衡性 122.1.5 逆向性 122.1.6 协作性 132.2 核心思维方式 132.2.1 问题定义思维 132.2.2 数据驱动思维 132.2.3 复用思维 142.2.4 创新思维 142.2.5 风险管理思维 152.3 关键要素 152.3.1 抽象与建模 152.3.2 整体与局部 162.3.3 技术与业务 162.3.4 稳定性与可扩展性 162.3.5 性能与成本 172.3.6 迭代与演进 172.4 实践应用 172.4.1 分层架构设计 172.4.2 微服务架构 182.4.3 缓存机制 182.4.4 数据处理与分析 192.4.5 高可用与容错设计 19架构设计原理 213.1 什么是软件架构 213.1.1 软件架构是数字世界的基石 213.1.2 软件架构的重要性 213.2 B/S 与 C/S 架构 223.2.1 B/S 架构 223.2.2 C/S 架构 233.2.3 富客户端技术 243.3 面向对象的分布式架构 253.3.1 基本概念 253.3.2 基本原理 263.3.3 关键特点 273.3.4 架构组成 283.3.5 应用场景 283.4 面向服务的分布式架构 283.4.1 核心概念 293.4.2 关键特性 293.4.3 架构构成 293.4.4 通信与交互 303.4.5 应用场景 313.4.6 Web 服务的分类 313.5 面向消息的分布式架构 333.5.1 核心概念 333.5.2 关键特性 333.5.3 架构构成 343.5.4 通信与交互 353.5.5 应用场景 353.6 REST 风格的架构 363.6.1 什么是 REST 363.6.2 REST 设计原则 373.6.3 成熟度模型 383.7 微服务架构 393.7.1 什么是微服务架构 393.7.2 微服务架构与 SOA 架构的区别 403.7.3 何时采用微服务架构 443.8 Serverless 架构 443.8.1 什么是 Serverless 架构 453.8.2 Serverless 典型的应用场景 463.8.3 Serverless 架构原则 483.9 Cloud Native 架构 483.9.1 为什么需要使用 Cloud Native 483.9.2 Cloud Native 与微服务架构的关系 493.9.3 Cloud Native 与 Serverless 架构的关系 493.9.4 Cloud Native 优点 493.9.5 Cloud Native 不是银弹 513.9.6 面临的挑战 51架构设计模式 534.1 什么是架构设计模式 534.1.1 架构设计模式的定义 534.1.2 架构设计模式的重要性 534.1.3 架构设计模式的选择与应用 544.2 分层模式 544.2.1 分层模式的基本概念 554.2.2 分层模式的优势 554.2.3 分层模式的应用场景 564.2.4 分层模式的实现要点 564.2.5 分层模式的局限性与挑战 574.3 端口适配器模式 574.3.1 端口适配器模式的基本概念 584.3.2 端口适配器模式的优势 594.3.3 端口适配器模式的应用场景 594.3.4 端口适配器模式的实现要点 604.3.5 端口适配器模式的局限性与挑战 604.4 管道过滤器模式 604.4.1 管道过滤器模式的基本概念 614.4.2 管道过滤器模式的优势 614.4.3 管道过滤器模式的应用场景 624.4.4 管道过滤器模式的实现要点 624.4.5 管道过滤器模式的局限性与挑战 634.5 主从模式 634.5.1 主从模式的基本概念 634.5.2 主从模式的优势 644.5.3 主从模式的应用场景 654.5.4 主从模式的实现要点 654.5.5 主从模式的局限性与挑战 664.6 发布订阅模式 664.6.1 发布订阅模式的定义与基本概念 664.6.2 发布订阅模式的优势 674.6.3 发布订阅模式的应用场景 684.6.4 发布订阅模式的实现要点 684.6.5 发布订阅模式的局限性与挑战 694.7 共享数据模式 694.7.1 共享数据模式的基本概念 694.7.2 共享数据模式的优势 704.7.3 共享数据模式的应用场景 704.7.4 共享数据模式的实现要点 714.7.5 共享数据模式的局限性与挑战 714.8 能力中心模式 724.8.1 能力中心模式的基本概念 724.8.2 能力中心模式的优势 734.8.3 能力中心模式的应用场景 744.8.4 能力中心模式的实现要点 744.8.5 能力中心模式的局限性与挑战 754.9 开源贡献模式 754.9.1 开源贡献模式的核心概念 764.9.2 开源贡献模式的优势 764.9.3 开源贡献模式的主要类型 774.9.4 开源贡献模式的实践流程 774.9.5 开源贡献模式面临的挑战与解决方案 784.10 鸿蒙架构模式 784.10.1 鸿蒙架构模式的核心概念 794.10.2 鸿蒙架构模式的优势 804.10.3 鸿蒙架构模式的应用场景 804.10.4 鸿蒙架构模式的技术实现要点 814.10.5 鸿蒙架构模式面临的挑战与应对策略 814.11 鸿蒙应用开发架构选型 824.11.1 鸿蒙应用开发架构概述 824.11.2 常见架构模式详细分析 834.11.3 架构选型考虑因素 844.11.4 架构选型案例分析 84工具 875.1 理解问题的常用方法 875.1.1 观察法 875.1.2 访谈法 875.1.3 文档分析法 885.1.4 思维导图法 885.1.5 鱼骨图法 885.1.6 标杆分析法 895.1.7 模拟与实验法 895.1.8 总结 905.2 探索解决方案的常用方法 905.2.1 头脑风暴法 905.2.2 逆向思维法 915.2.3 类比法 915.2.4 分治法 915.2.5 文献研究法 925.2.6 专家咨询法 925.2.7 原型法 935.2.8 总结 935.3 展示设计的常用方法 935.3.1 可视化图表法 945.3.2 故事板法 955.3.3 对比分析法 955.3.4 案例分析法 965.3.5 交互式展示法 965.3.6 文档说明法 965.3.7 总结 975.4 评估设计方案的常用方法 975.4.1 功能完整性评估法 975.4.2 性能评估法 985.4.3 可维护性评估法 985.4.4 可扩展性评估法 995.4.5 安全性评估法 995.4.6 成本效益评估法 995.4.7 风险评估法 1005.4.8 总结 1005.5 DevEco Studio 工具简介 1015.5.1 DevEco Studio 特点 1015.5.2 应用 / 元服务开发流程 1015.5.3 下载、安装 DevEco Studio 1025.5.4 启动 DevEco Studio 1045.5.5 创建虚拟机 1055.6 Command Line Tools 工具简介 1095.6.1 命令行工具获取 1095.6.2 配置环境变量 1105.6.3 代码检查 codelinter 1105.6.4 三方库的包管理 ohpm 1115.6.5 命令行解析 hstack 1125.6.6 编译构建 hvigorw 1135.7 ohpm_repo 工具简介 1135.7.1 安装 ohpm_repo 工具 1135.7.2 启动 ohpm_repo 1145.8 仓颉插件 1155.8.1 DevEco Studio Cangjie Plugin 概述 1155.8.2 设置安装目录 1155.8.3 安装本地插件 1165.8.4 验证 1195.9 代码管理工具 Git 介绍 1195.9.1 Git 的诞生与发展 1195.9.2 Git 的核心概念 1195.9.3 Git 的基本操作 1215.9.4 Git 在团队协作中的优势 1225.9.5 Git 的进阶应用 1225.10 敏捷开发方法论 1235.10.1 敏捷开发方法论的诞生与发展 1235.10.2 敏捷开发的核心原则 1245.10.3 常见的敏捷开发框架 1245.10.4 敏捷开发在团队中的实施要点 1265.10.5 敏捷开发的优势与挑战 126编程语言 1296.1 常用鸿蒙编程语言 1296.1.1 鸿蒙编程语言发展史 1296.1.2 鸿蒙编程语言的选择 1296.2 初识 ArkTS 1306.2.1 ArkTS 与 JS/TS 的关系 1306.2.2 ArkTS 与 TS 的差异 1316.2.3 ArkTS 对于 UI 的支持 1326.2.4 ArkTS 特性 1326.3 实战:编写第一个 ArkTS 应用 1336.3.1 选择创建新项目 1346.3.2 选择模板 1346.3.3 配置项目的信息 1356.3.4 自动生成工程代码 1366.3.5 预览项目 1376.3.6 运行项目 1376.4 初识仓颉 1386.4.1 仓颉特性 1396.4.2 高效编程 1406.4.3 安全可靠 1416.4.4 轻松并发 1416.4.5 卓越性能 1426.5 实战:编写第一个仓颉应用 1436.5.1 选择创建新项目 1436.5.2 选择模板 1446.5.3 配置项目的信息 1446.5.4 自动生成工程代码 1456.5.5 使用本地模拟器运行应用 1466.6 方舟编译器原理 1476.6.1 OpenArkCompiler 版本 1476.6.2 编译工具链 1486.6.3 运行时 1486.6.4 运行时设计特点 149UI 设计 1527.1 鸿蒙 UI 设计理念 1527.1.1 One 万物归一回归本源 1527.1.2 Harmonious 一生为二平衡共生 1527.1.3 Universe 三生万物演化自如 1527.2 声明式 UI 开发框架 1537.2.1 ArkUI 基本概念 1537.2.2 ArkUI 主要特征 1547.2.3 基于 ArkTS 的声明式开发范式 1557.3 视觉风格 1567.3.1 色彩 1567.3.2 字体排印 1577.3.3 应用图标 1587.3.4 系统图标 1597.3.5 实战:使用系统图标 1597.4 布局 1657.4.1 窗口状态 1667.4.2 像素单位 1667.4.3 断点 1677.4.4 栅格系统 1687.4.5 响应式布局 1697.5 实战:ArkUI 容器组件开发 1717.5.1 Column 和 Row 1717.5.2 ColumnSplit 和 RowSplit 1727.5.3 Flex 1747.5.4 Grid 和 GridItem 1757.5.5 GridRow 和 GridCol 1767.5.6 List、ListItem 和 ListItemGroup 1777.5.7 Navigator 1787.5.8 RelativeContainer 1827.5.9 Stack 1837.5.10 Swiper 1847.5.11 Tabs 和 TabContent 1857.6 实战:使用 ArkUI 实现 ;计算器 1867.6.1 新增 Calculator.ets 的文件 1867.6.2 实现递归运算 1867.6.3 实现输入字符串转为字符串数组 1887.6.4 新增 CalculatorButtonInfo.ets 的文件 1887.6.5 实现 CalculatorButton 组件 1897.6.6 构造整体页面 1907.6.7 运行 1917.7 控件 1927.8 实战:ArkUI 基础组件开发 1937.8.1 Button 1937.8.2 Checkbox 1947.8.3 CheckboxGroup 1957.8.4 Image 1967.8.5 LoadingProgress 1987.8.6 Progress 1987.8.7 Radio 1997.8.8 RichText 2007.8.9 ScrollBar 2017.8.10 Select 2027.8.11 Slider 2037.8.12 Text 2047.8.13 TextArea 2067.8.14 TextInput 2077.9 多设备响应式设计 2087.9.1 背景 2087.9.2 定义及目标 2097.9.3 基础知识 2107.10 实战:开发一多图片查看器 2117.10.1 UX 设计 2127.10.2 架构设计 2137.10.3 pictureView 模块实现 2177.10.4 base 模块实现 2277.10.5 default 模块实现 229线程模型设计 2328.1 Stage 模型开发概述 2328.1.1 Stage 模型的设计思想 2328.1.2 Stage 模型的基本概念 2328.2 Stage 模型应用组件 2348.2.1 应用 / 组件级配置 2348.2.2 UIAbility 组件 2348.2.3 ExtensionAbility 组件 2398.2.4 AbilityStage 组件容器 2398.2.5 应用上下文 Context 2418.2.6 组件启动规则 2428.3 应用间跳转 2438.3.1 应用场景 2438.3.2 应用跳转的两种类型 2448.4 实战:通过应用链接拉起指定应用 2448.4.1 应用链接 2448.4.2 应用链接分类 2448.4.3 拉起指定应用 2458.5 进程模型 2488.6 线程模型 2498.6.1 主线程 2508.6.2 TaskPool Worker 线程 2508.6.3 Worker 线程 2508.6.4 TaskPool 和 Worker 的对比 2518.6.5 实战:使用 EventHub 进行线程内通信 2528.7 并发概述 2548.8 异步并发 2558.8.1 Promise 2558.8.2 async/await 2568.8.3 实战:异步并发的例子 2578.9 多线程并发 2588.9.1 内存共享模型 2588.9.2 Actor 模型 2598.9.3 实战:使用 TaskPool 2598.9.4 实战:使用 Worker 261通信设计 2669.1 本地过程调用 2669.1.1 本地过程调用的概念 2669.1.2 本地过程调用的实现 2669.2 远程过程调用 2689.2.1 远程过程调用原理 2689.2.2 如何实现远程过程调用 2709.2.3 远程过程调用 API 2739.2.4 远程过程调用发展历程 2739.3 常用网络 I/O 模型 2749.3.1 阻塞 I/O 模型 2749.3.2 非阻塞 I/O 模型 2759.3.3 I/O 复用模型 2769.3.4 信号驱动 I/O(SIGIO)模型 2779.3.5 异步 I/O 模型 2779.3.6 几种 I/O 模型的比较 2789.4 I/O 操作中的常用术语 2799.4.1 阻塞和非阻塞 2799.4.2 同步与异步 2799.4.3 总结 2809.5 事件驱动 2809.5.1 事件驱动编程 2809.5.2 事件循环(Event Loop)的实现 2819.5.3 Reactor 模型 2819.5.4 Proactor 模型 2839.6 公共事件概述 2849.6.1 公共事件的分类 2859.6.2 公共事件的开发 2869.7 实战:订阅、发布、取消公共事件 2879.7.1 添加按钮 2879.7.2 添加 Text 显示接收的事件 2889.7.3 设置按钮的点击事件方法 2889.7.4 运行 2909.8 并发线程间通信 2919.8.1 实战:TaskPool 任务与宿主线程通信 2919.8.2 Worker 和宿主线程的即时消息通信 2939.9 Emitter 概述 2949.9.1 订阅 2959.9.2 取消订阅 2959.9.3 发送事件 2959.10 实战:使用 Emitter 进行线程间通信 2969.10.1 添加按钮 2969.10.2 添加 Text 显示接收的事件 2979.10.3 设置按钮的点击事件方法 2979.10.4 运行 2989.11 HTTP 数据请求概述 2999.11.1 HTTP 请求方法 2999.11.2 HTTP 状态码 2999.12 实战:通过 HTTP 请求数据 3009.12.1 准备一个 HTTP 服务接口 3009.12.2 添加使用 Button 组件来触发点击 3009.12.3 发起 HTTP 请求 3019.12.4 增加权限 3029.12.5 运行 3029.13 Web 组件概述 3039.13.1 加载本地网页 3039.13.2 加载在线网页 3049.13.3 隐私模式加载在线网页 3049.13.4 网页缩放 3059.13.5 文本缩放 3059.13.6 Web 组件事件 3069.13.7 Web 和 JavaScript 交互 3069.13.8 处理页面导航 3109.14 实战:Web 组件加载在线网页 3119.14.1 准备一个在线网页地址 3119.14.2 声明网络访问权限 3119.14.3 发起 HTTP 请求 3129.14.4 运行 312持久化设计 31510.1 分布式数据服务概述 31510.1.1 分布式数据服务基本概念 31510.1.2 分布式数据服务运作机制 31710.1.3 分布式数据服务约束与限制 31810.2 分布式数据服务开发步骤 31910.2.1 导入模块 31910.2.2 构造分布式数据库管理类实例 31910.2.3 获取 / 创建分布式数据库 32010.2.4 订阅分布式数据库数据变化 32010.2.5 将数据写入分布式数据库 32110.2.6 查询分布式数据库数据 32110.3 关系型数据库概述 32210.3.1 基本概念 32210.3.2 运作机制 32310.3.3 默认配置与限制 32310.4 实战:关系型数据库开发 32410.4.1 操作 RdbStore 32410.4.2 账目信息的表示 32710.4.3 操作账目信息表 32810.4.4 设计界面 33010.4.5 运行 33210.5 用户首选项概述 33310.5.1 用户首选项运作机制 33310.5.2 约束与限制 33410.6 实战:用户首选项开发 33410.6.1 操作 Preferences 33510.6.2 账目信息的表示 33710.6.3 设计界面 33710.6.4 运行 339安全性 34211.1 基本概念 34211.1.1 安全威胁、策略和机制 34211.1.2 密码与数字签名 34311.2 加密算法 34411.2.1 对称加密 34411.2.2 使用对称密钥加密的数字签名 34511.2.3 非对称加密 34511.2.4 使用公钥加密的数字签名 34611.3 安全通道 34711.3.1 SSL/TLS 34711.3.2 SSL 握手过程 34711.3.3 HTTPS 35111.4 访问控制概述 35111.4.1 防火墙 35111.4.2 堡垒机 35211.4.3 拒绝服务 35211.4.4 访问控制的模型 35311.5 HarmonyOS 的访问控制 35411.5.1 权限包含的基本概念 35411.5.2 权限等级说明 35611.5.3 权限类型 35611.5.4 访问控制开发步骤 35611.6 实战:访问控制授权 35811.6.1 场景介绍 35911.6.2 声明访问的权限 35911.6.3 申请授权 user_grant 权限 36011.6.4 运行 361测试 36412.1 应用测试概述 36412.2 单元测试 36412.2.1 单元测试框架功能特性 36412.2.2 基础流程 36512.2.3 断言库 36612.2.4 自定义断言 36912.3 UI 测试 37112.3.1 UI 测试框架功能特性 37112.3.2 Driver 使用说明 37212.3.3 On 使用说明 37312.3.4 Component 使用说明 37412.3.5 UiWindow 使用说明 37512.4 实战:UI 测试 37612.4.1 编写 UI 测试脚本 37612.4.2 运行 UI 测试脚本 378调优调测 38113.1 Performance Analysis Kit 简介 38113.1.1 使用场景 38113.1.2 能力范围 38113.1.3 特性 38113.1.4 故障分析 38213.2 HiLog 使用指导 38213.2.1 接口说明 38213.2.2 实战:HiLog 开发示例 38313.3 HiAppEvent 使用指导 38513.3.1 接口说明 38513.3.2 实战:HiAppEvent 使用示例 38613.4 HiTraceMeter 使用指导 38813.4.1 基本概念 38813.4.2 接口说明 38913.4.3 实战:HiTraceMeter 使用示例 38913.5 HiTraceChain 使用指导 39213.5.1 基本概念 39213.5.2 实战:HiTraceChain 使用示例 392模拟器与真机的差异参考文献

新华一城书集店铺主页二维码
新华一城书集 微信公众号认证
上海新华书店官方微信书店
扫描二维码,访问我们的微信店铺
随时随地的购物、客服咨询、查询订单和物流...

鸿蒙架构师修炼之道

手机启动微信
扫一扫购买

收藏到微信 or 发给朋友

1. 打开微信,扫一扫左侧二维码

2. 点击右上角图标

点击右上角分享图标

3. 发送给朋友、分享到朋友圈、收藏

发送给朋友、分享到朋友圈、收藏

微信支付

支付宝

扫一扫购买

打开微信,扫一扫

或搜索微信号:xhbookmall
新华一城书集微书店官方微信公众号

收藏到微信 or 发给朋友

1. 打开微信,扫一扫左侧二维码

2. 点击右上角图标

点击右上角分享图标

3. 发送给朋友、分享到朋友圈、收藏

发送给朋友、分享到朋友圈、收藏