内容介绍
本书以Vue.js 2为基础,以项目实战的方式来引导读者渐进式学习Vue.js。本书分为基础篇、进阶篇和实战篇三部分。基础篇主要是对 Vue.js 核心功能的介绍;进阶篇主要讲解前端工程化Vue.js的组件化、插件的使用;实战篇着重开发了两个完整的示例,所涉及的内容涵盖Vue.js绝大部分API。通过阅读本书,读者能够掌握Vue.js框架主要API的使用方法、自定义指令、组件开发、单文件组件、Render函数、使用webpack开发可复用的单页面富应用等。 本书示例丰富、侧重实战,适用于刚接触或即将接触Vue.js的开发者,也适用于对Vue.js有过开发经验,但需要进一步提升的开发者。
关联推荐
Vue.js作者尤雨溪作推荐序,业界前端大腕(TalkingData 研发副总裁,马骥;w3cplus.com站长,大漠;在线回声前端技术专家,justjavac(迷渡);laravel-china.org站长,Summer)联袂推荐! Vue社区iView组件贡献者,前端大神梁灏执笔编撰,突出实战,应用为王。
目录
目 录 D1篇 基础篇 D1章 初识Vue.js 3 1.1 Vue.js是什么 3 1.1.1 MVVM模式 3 1.1.2 Vue.js有什么不同 4 1.2 如何使用Vue.js 5 1.2.1 传统的前端开发模式 5 1.2.2 Vue.js的开发模式 5 D2章 数据绑定和D一个Vue应用 8 2.1 Vue实例与数据绑定 9 2.1.1 实例与数据 9 2.1.2 生命周期 10 2.1.3 插值与表达式 11
目 录
D1篇 基础篇
D1章 初识Vue.js 3
1.1 Vue.js是什么 3
1.1.1 MVVM模式 3
1.1.2 Vue.js有什么不同 4
1.2 如何使用Vue.js 5
1.2.1 传统的前端开发模式 5
1.2.2 Vue.js的开发模式 5
D2章 数据绑定和D一个Vue应用 8
2.1 Vue实例与数据绑定 9
2.1.1 实例与数据 9
2.1.2 生命周期 10
2.1.3 插值与表达式 11
2.1.4 过滤器 13
2.2 指令与事件 15
2.3 语法糖 18
D3章 计算属性 19
3.1 什么是计算属性 19
3.2 计算属性用法 20
3.3 计算属性缓存 23
D4章 v-bind及class与style绑定 25
4.1 了解v-bind指令 25
4.2 绑定class的几种方式 26
4.2.1 对象语法 26
4.2.2 数组语法 27
4.2.3 在组件上使用 29
4.3 绑定内联样式 30
D5章 内置指令 32
5.1 基本指令 32
5.1.1 v-cloak 32
5.1.2 v-once 33
5.2 条件渲染指令 33
5.2.1 v-if、v-else-if、v-else 33
5.2.2 v-show 36
5.2.3 v-if与v-show的选择 36
5.3 列表渲染指令v-for 37
5.3.1 基本用法 37
5.3.2 数组更新 41
5.3.3 过滤与排序 43
5.4 方法与事件 44
5.4.1 基本用法 44
5.4.2 修饰符 46
5.5 实战:利用计算属性、指令等知识开发购物车 47
D6章 表单与v-model 55
6.1 基本用法 55
6.2 绑定值 61
6.3 修饰符 63
D7章 组件详解 65
7.1 组件与复用 65
7.1.1 为什么使用组件 65
7.1.2 组件用法 66
7.2 使用props传递数据 70
7.2.1 基本用法 70
7.2.2 单向数据流 72
7.2.3 数据验证 74
7.3 组件通信 75
7.3.1 自定义事件 75
7.3.2 使用v-model 77
7.3.3 非父子组件通信 79
7.4 使用slot分发内容 83
7.4.1 什么是slot 83
7.4.2 作用域 84
7.4.3 slot用法 85
7.4.4 作用域插槽 87
7.4.5 访问slot 89
7.5 组件GJ用法 90
7.5.1 递归组件 90
7.5.2 内联模板 92
7.5.3 动态组件 93
7.5.4 异步组件 94
7.6 其他 95
7.6.1 $nextTick 95
7.6.2 X-Templates 96
7.6.3 手动挂载实例 97
7.7 实战:两个常用组件的开发 98
7.7.1 开发一个数字输入框组件 98
7.7.2 开发一个标签页组件 106
D8章 自定义指令 118
8.1 基本用法 118
8.2 实战 121
8.2.1 开发一个可从外部关闭的下拉菜单 121
8.2.2 开发一个实时时间转换指令v-time 126
D2篇 进阶篇
D9章 Render函数 133
9.1 什么是Virtual Dom 133
9.2 什么是Render函数 136
9.3 createElement用法 140
9.3.1 基本参数 140
9.3.2 约束 143
9.3.3 使用代替模板功能 147
9.4 函数化组件 153
9.5 JSX 157
9.6 实战:使用Render函数开发可排序的表格组件 159
9.7 实战:留言列表 172
9.8 总结 183
D10章 使用webpack 184
10.1 前端工程化与webpack 184
10.2 webpack基础配置 187
10.2.1 安装webpack与webpack-dev-server 187
10.2.2 J是一个js文件而已 188
10.2.3 逐步完善配置文件 191
10.3 单文件组件与vue-loader 194
10.4 用于生产环境 201
D11章 插件 206
11.1 前端路由与vue-router 207
11.1.1 什么是前端路由 207
11.1.2 vue-router基本用法 208
11.1.3 跳转 212
11.1.4 GJ用法 213
11.2 状态管理与Vuex 216
11.2.1 状态管理与使用场景 216
11.2.2 Vuex基本用法 217
11.2.3 GJ用法 221
11.3 实战:ZY事件总线插件vue-bus 227
D3篇 实战篇
D12章 iView经典组件剖析 235
12.1 级联选择组件Cascader 236
12.2 折叠面板组件Collapse 249
12.3 iView内置工具函数 257
D13章 实战:知乎日报项目开发 261
13.1 分析与准备 261
13.2 推荐列表与分类 265
13.2.1 搭建基本结构 265
13.2.2 主题日报 267
13.2.3 每日推荐 271
13.2.4 自动加载更多推荐列表 276
13.3 文章详情页 278
13.3.1 加载内容 278
13.3.2 加载评论 281
13.4 总结 286
D14章 实战:电商网站项目开发 288
14.1 项目工程搭建 288
14.2 商品列表页 290
14.2.1 需求分析与模块拆分 290
14.2.2 商品简介组件 291
14.2.3 列表按照价格、销量排序 297
14.2.4 列表按照品牌、颜色筛选 306
14.3 商品详情页 309
14.4 购 物 车 313
14.4.1 准备数据 314
14.4.2 显示和操作数据 316
14.4.3 使用优惠码 320
14.5 总结 324
D15章 相关开源项目介绍 325
15.1 服务端渲染与Nuxt.js 325
15.1.1 是否需要服务端渲染 325
15.1.2 Nuxt.js 326
15.2 HTTP库axios 327
15.3 多语言插件vue-i18n 329
显示全部信息
在线试读
D5章 内置指令回顾一下D2.2节,我们已经介绍过指令(Directive)的概念了,Vue.js的指令是带有特殊前缀“v-”的HTML特性,它绑定一个表达式,并将一些特性应用到DOM上。其实我们已经用到过很多 Vue内置的指令,比如v-html、v-pre,还有上一章的v-bind。本章将继续介绍 Vue.js中更多常用的内置指令。5.1 基本指令5.1.1 v-cloakv-cloak不需要表达式,它会在Vue实例结束编译时从绑定的HTML元素上移除,经常和CSS的display: Dne; 配合使用: {{ message }} 这时虽然已经加了指令v-cloak,但其实并没有起到任何作用,D网速较慢、Vue.js文件还没加载完时,在页面上会显示{{ message }}的字样,直到Vue创建实例、编译模板时,DOM才会被替换,所以这个过程屏幕是有闪动的。只要加一句 CSSJ可以解决这个问题了:[v-cloak] { display: Dne;}在一般情况下,v-cloak是一个解决初始化慢导致页面闪动的ZJ实践,对于简单的项目很实用,但是在具有工程化的项目里,比如后面进阶篇将介绍 webpack和vue-router时,项目的HTML结构只有一个空的div元素,剩余的内容都是由路由去挂载不同组件完成的,所以不再需要v-cloak。5.1.2 v-oncev-once 也是一个不需要表达式的指令,作用是定义它的元素或组件只渲染一次,包括元素或组件的所有子节点。1次渲染后,不再随数据的变化重新渲染,将被视为静态内容,例如:
{{ message }} {{ message }} v-once在业务中也很少使用,D你需要进一步优化性能时,可能会用到。5.2 条件渲染指令5.2.1 v-if、v-else-if、v-else 与的条件语句if、else、else if类似,Vue.js的条件指令可以根据表达式的值在DOM中渲染或销毁元素/组件,例如:
Dstatus为1时显示该行
Dstatus为2时显示该行
否则显示该行
v-else-if 要紧跟v-if,v-else 要紧跟v-else-if或v-if,表达式的值为真时,D前元素/组件及所有子节点将被渲染,为假时被移除。如果一次判断的是多个元素,可以在Vue.js内置的
元素上使用条件指令,Z终渲染的结果不会包含该元素,例如: 这是一段文本
这是一段文本
这是一段文本
Vue在渲染元素时,出于效率考虑,会尽可能地复用已有的元素而非重新渲染,比如下面的示例: 如图5-1和图5-2所示,键入内容后,点击切换按钮,虽然DOM变了,但是之前在输入框键入的内容并没有改变,只是替换了placeholder的内容,说明 元素被复用了。 显示全部信息
Vue.js实战:深度探索前端开发新范式 在飞速发展的数字浪潮中,前端开发技术革新日新月异,而Vue.js作为一款渐进式JavaScript框架,以其易学易用、高效灵活的特性,迅速成为众多开发者青睐的首选。本书《Vue.js实战》并非简单堆砌API文档的罗列,而是致力于为读者构建一个全面、深入且实践导向的学习路径,帮助您真正掌握Vue.js的精髓,并将其转化为解决实际前端问题的强大武器。 本书的核心理念在于“实战”,强调理论与实践的紧密结合。我们深知,仅仅理解框架的概念是远远不够的,真正的成长来源于在真实的项目中运用所学知识,解决遇到的挑战。因此,本书从基础概念的梳理开始,逐步深入到复杂的应用场景,每一个知识点都辅以详实的示例代码和清晰的解释,力求让读者在理解原理的同时,能够立即动手实践,感受Vue.js的魅力。 一、 精雕细琢,从零构建Vue.js认知体系 在本书的开篇,我们将带领读者踏上Vue.js的学习之旅,从最基础的概念入手,为您打下坚实的理论基础。 1. Vue.js核心概念剖析 响应式数据绑定(Reactivity):这是Vue.js最核心也是最令人称道的特性之一。我们将深入讲解Vue.js是如何通过`Object.defineProperty`(Vue 2)或`Proxy`(Vue 3)来实现数据变化的自动检测和视图更新的。理解这一机制,是掌握Vue.js的关键。我们将详细分析响应式系统的设计原理,探讨其性能优化策略,并演示如何通过`Vue.set`和`Vue.delete`等API来处理一些特殊情况。 组件化开发(Components):现代前端开发的基石。本书将详细阐述组件的定义、注册、Props传值、事件派发($emit)以及作用域插槽(Scoped Slots)等核心概念。您将学习如何将复杂的UI拆分成独立的、可复用的组件,从而提高代码的可维护性和开发效率。我们还将探讨组件间通信的多种模式,包括父子组件通信、兄弟组件通信以及跨级通信。 模板语法(Template Syntax):Vue.js提供了简洁直观的模板语法,使数据绑定和DOM操作变得轻而易举。本书将全面讲解指令(Directives)的使用,如`v-bind`、`v-model`、`v-if`、`v-for`、`v-on`等,并深入探讨自定义指令(Custom Directives)的创建和应用,让您能够实现更灵活的DOM操作。 生命周期钩子(Lifecycle Hooks):每个Vue实例都有一个生命周期,从创建到销毁,伴随着一系列钩子函数。本书将详尽介绍`beforeCreate`、`created`、`beforeMount`、`mounted`、`beforeUpdate`、`updated`、`beforeDestroy`、`destroyed`等钩子函数的用途和执行时机,帮助您在合适的时机执行相应的操作,更好地管理组件的行为。 2. 构建第一个Vue.js应用 理论结合实践,我们将引导您从零开始构建一个简单的Vue.js应用。从项目初始化、基础组件的创建到数据绑定和事件处理,每一步都将清晰明了。您将亲手体验Vue.js带来的开发便捷性。 二、 深入探索,掌握Vue.js高级特性与最佳实践 在打好基础之后,本书将带领您深入探索Vue.js的更多高级特性,并分享业界推崇的最佳实践,让您的Vue.js开发水平更上一层楼。 1. 路由管理(Vue Router) 现代单页应用(SPA)离不开路由。本书将详细讲解`Vue Router`的使用,包括路由的定义、嵌套路由、参数传递、路由守卫(Navigation Guards)的应用,以及如何实现页面跳转和导航。您将学习如何构建复杂的SPA应用,实现流畅的用户体验。 2. 状态管理(Vuex) 对于大型应用,状态管理变得尤为重要。本书将深入剖析`Vuex`,作为Vue.js官方的状态管理库。您将学习`state`、`mutations`、`actions`、`getters`和`modules`等核心概念,并掌握如何在复杂应用中统一管理和更新应用状态,确保数据的一致性和可预测性。我们将提供实际项目中的状态管理设计模式,帮助您构建健壮的应用。 3. 组件通信的进阶之道 除了基础的Props和$emit,本书还将探讨更高级的组件通信模式,如`Provide/Inject`、`Event Bus`(尽管在Vue 3中不推荐过度使用,但理解其原理仍有价值)以及如何结合Vuex进行全局状态的共享。您将根据不同的场景选择最合适的通信方式,优化组件间的协作。 4. 性能优化策略 性能是前端开发的生命线。本书将分享一系列Vue.js的性能优化技巧,包括: 代码分割与懒加载(Code Splitting & Lazy Loading):如何通过`webpack`或`Vite`等构建工具实现组件和路由的懒加载,减小首屏加载时间。 列表渲染优化:`key`属性的重要性,以及如何避免不必要的DOM更新。 计算属性(Computed Properties)与侦听器(Watchers)的合理使用:理解它们的区别和适用场景,避免性能损耗。 虚拟滚动(Virtual Scrolling):处理大量列表数据时的性能提升方案。 SSR(Server-Side Rendering)与预渲染(Pre-rendering):提升SEO和首屏加载速度的高级技术。 5. 现代Vue.js开发工具与生态 构建工具(Webpack / Vite):理解这些工具在Vue.js项目中的作用,如何配置和优化。 TypeScript支持:如何将TypeScript引入Vue.js项目,提升代码的可维护性和健壮性。 Vue CLI / Vite CLI:掌握脚手架的使用,快速启动和管理项目。 组件库(Element Plus / Ant Design Vue等):学习如何高效利用成熟的UI组件库,加速开发进程。 6. 测试Vue.js应用 一个健壮的应用离不开完善的测试。本书将介绍如何使用`Vue Test Utils`和`Jest`等工具对Vue.js组件和应用进行单元测试、集成测试,确保代码的正确性和稳定性。 三、 案例驱动,解决真实世界的开发难题 理论的海洋再广阔,也需要实践的船只才能抵达彼岸。本书的每一章节都将伴随精心设计的案例,这些案例模拟了真实项目开发中遇到的常见场景和挑战。 构建一个功能完善的待办事项列表应用:贯穿基础到进阶,学习响应式数据、组件化、事件处理、本地存储等。 开发一个用户管理系统:涉及路由、表单验证、API请求、数据表格展示等。 实现一个简单的电商产品展示页面:学习组件间通信、状态管理、图片懒加载等。 构建一个响应式博客平台:深入理解路由守卫、路由懒加载、Markdown渲染等。 通过这些案例,读者不仅能够巩固所学知识,更能学会如何将Vue.js的各种特性灵活组合,解决实际问题,逐步形成独立解决复杂前端问题的能力。 四、 展望与进阶 在本书的结尾,我们将对Vue.js的未来发展进行展望,并为读者提供进一步学习和深入研究的建议,包括学习Vue 3的新特性、了解Composition API、探索Serverless与Vue.js的结合等,帮助您在前端开发的道路上持续前行。 《Vue.js实战》旨在成为您学习Vue.js过程中最贴心、最可靠的伙伴。无论您是初次接触Vue.js的新手,还是有一定经验但希望系统提升的前端开发者,本书都将为您提供宝贵的指导和实践经验。我们相信,通过本书的学习,您将能够自信地运用Vue.js构建出优雅、高效、可维护的现代Web应用。
说实话,在购买《Vue.js实战》之前,我曾阅读过不少关于Vue.js的入门教程,但总觉得有些浅尝辄止,对于如何构建大型、可维护的项目缺乏系统性的指导。这本书的“实战”二字,让我看到了希望。我期待它能带领我从零开始,一步步搭建一个功能完善的应用,在这个过程中,我会关注它是否能详细解释项目架构的设计思路,比如如何组织文件目录、如何进行组件划分,以及如何处理复杂的业务逻辑。