Vue.js是一个渐进式的JavaScript 框架,与其他重量级框架不同的是,Vue 采用自底向上增量开发的设计。Vue 的核心库只关注视图层,它不仅易于上手,还便于与第三方库或既有项目整合。作为2016年社区*火的前端框架,越来越多的公司都在尝试用Vue来开发自己的项目。本书主要以项目维度,站在实战的角度,从项目的搭建,项目开发,到项目的优化,结合实际,多维度介绍了Vue.js。本书从实战场景出发,结合各种实用demo,结合开发环境构建,从无到有,剖析原理,全面介绍Vue2.0的实用技巧。后面几章重点讲解Vue内部实现机制,针对各种业务形态的支持以及网站调优方等等,是Vue技术体系追随者不可多得的实战宝典。
目 录
- 第1章 搭建开发环境 1
- 1.1 本地Node环境 1
- 1.1.1 Node.js 1
- 1.1.2 npm 7
- 1.1.3 yarn 12
- 1.1.4 npm vs yarn 17
- 1.2 ide相关配置 17
- 1.2.1 常用ide 17
- 1.2.2 Sublime text 17
- 1.2.3 Atom 20
- 1.2.4 WebStorm 22
- 1.2.5 VSCode 23
- 1.3 本章小结 27
- 第2章 从零搭建Vue工程 28
- 2.1 本地开发需要哪些工具 28
- 2.2 搭建Vue工程 29
- 2.2.1 Vue-cli 29
- 2.2.2 脚手架项目构成分析 30
- 2.3 webpack配置 32
- 2.3.1 webpack简介 32
- 2.3.2 webpack配置解析 33
- 第3章 API详解 45
- 3.1 全局变量 45
- 3.1.1 silent 45
- 3.1.2 optionMergeStrategies 45
- 3.1.3 devtools 46
- 3.1.4 errorHandler 48
- 3.1.5 ignoredElements 48
- 3.1.6 keyCodes 49
- 3.1.7 performance 49
- 3.1.8 productionTip 49
- 3.2 模板语法 50
- 3.3 指令 50
- 3.3.1 v-text 51
- 3.3.2 v-html 51
- 3.3.3 v-pre 51
- 3.3.4 v-cloak 52
- 3.3.5 v-once 53
- 3.3.6 v-if 54
- 3.3.7 v-else 54
- 3.3.8 v-else-if 55
- 3.3.9 v-show 55
- 3.3.10 v-for 56
- 3.3.11 v-bind 64
- 3.3.12 v-model 70
- 3.3.13 v-on 74
- 3.3.14 自定义指令 77
- 3.4 过滤器 79
- 3.5 计算属性 80
- 3.5.1 基础例子 80
- 3.5.2 计算属性vs Methods 81
- 3.5.3 计算属性缓存 81
- 3.5.4 Computed属性vs Watched属性 82
- 3.5.5 计算setter 83
- 3.6 观察者Watchers 84
- 3.7 组件的功能与使用 86
- 3.7.1 使用组件 86
- 3.7.2 组件开发 88
- 3.7.3 非Props属性 92
- 3.7.4 自定义事件 92
- 3.7.5 Slots内容分发 96
- 3.7.6 动态组件 99
- 3.7.7 组件的其他知识 100
- 3.8 继承与混合 104
- 3.8.1 Vue.extend 105
- 3.8.2 options里的extends 105
- 3.8.3 源码分析 105
- 3.8.4 合并策略 106
- 3.9 插件plugin 111
- 第4章 Vue组件库 115
- 4.1 Element 115
- 4.1.1 Element的设计 115
- 4.1.2 Element的UI 116
- 4.1.3 Element的优缺点 117
- 4.2 Mint UI 118
- 4.2.1 Mint UI的特性 118
- 4.2.2 Mint UI的优缺点 119
- 4.3 iView 119
- 4.3.1 iView简介 120
- 4.3.2 iView的优缺点 120
- 4.4 Vux 121
- 4.4.1 Vux简介 121
- 4.4.2 Vux优缺点 122
- 4.5 XCUI 122
- 4.5.1 XCUI简介 122
- 4.5.2 XCUI优缺点 123
- 第5章 官方周边库 124
- 5.1 Axios 124
- 5.1.1 功能 124
- 5.1.2 安装 124
- 5.1.3 Example 125
- 5.1.4 Axios API 126
- 5.1.5 请求配置 127
- 5.1.6 响应结构 130
- 5.1.7 配置的默认值/defaults 131
- 5.1.8 拦截器 132
- 5.1.9 错误处理 133
- 5.1.10 取消 134
- 5.1.11 Promises 135
- 5.1.12 TypeScript 135
- 5.2 Vuex的使用 135
- 5.2.1 State 135
- 5.2.2 Getters 137
- 5.2.3 Mutations & Actions 138
- 5.2.4 Modules 141
- 5.2.5 模块重用 145
- 5.3 Vue-router使用 146
- 5.3.1 安装 146
- 5.3.2 开始 146
- 5.3.3 动态路由匹配 147
- 5.3.4 编程式导航 151
- 5.3.5 命名路由 152
- 5.3.6 命名视图 153
- 5.3.7 重定向和别名 153
- 5.3.8 HTML5 History模式 154
- 5.3.9 后端配置例子 155
- 5.3.10 警告 155
- 5.3.11 导航钩子 156
- 5.3.12 过渡动效 159
- 5.3.13 数据获取 160
- 5.3.14 滚动行为 163
- 5.3.15 懒加载 164
- 第6章 Vue项目优化 166
- 6.1 状态过渡 166
- 6.1.1 过渡的概念 166
- 6.1.2 CSS过渡 166
- 6.1.3 Javascript钩子 167
- 6.2 Vue项目的自动化测试 170
- 6.2.1 unit tests 172
- 6.2.2 e2e测试 175
- 6.3 Typescript Support 179
- 6.3.1 Typescript 179
- 6.3.2 安装Typescript 180
- 6.3.3 Typescript和Vue结合 180
- 6.4 MPA 186
- 6.4.1 关于MPA的优劣势 187
- 6.4.2 如何实现MPA 187
- 6.5 Vue的异构 190
- 6.5.1 不属于异构的情况 191
- 6.5.2 通过封装成Vue组件的方式实现异构 192
- 6.5.3 通过directive的方式实现异构 194
- 6.5.4 循环嵌套Vue组件 197
- 6.6 服务端渲染 198
- 6.6.1 服务端渲染的概念 198
- 6.6.2 用Vue-ssr的意义 198
- 6.6.3 Vue-ssr的作用 198
- 6.6.4 Vue-ssr学习难度 198
- 6.6.5 技术栈 199
- 6.6.6 前后端数据策略 199
- 6.6.7 性能影响 199
- 6.6.8 安装 200
- 6.6.9 渲染一个Vue实例 200
- 6.6.10 一个例子 202
- 6.7 Vue的pre-render 204
- 第7章 原理解析 206
- 7.1 Virtual DOM原理 206
- 7.1.1 DOM 206
- 7.1.2 Virtual DOM算法 209
- 7.2 Vue精髓之响应式数据流 210
- 7.2.1 数据流演进史 210
- 7.2.2 Vue和React介绍 211
- 7.2.3 Vue的响应式数据流的优势 211
- 7.2.4 Object.defineProperty与订阅发布设计模式 213
- 7.2.5 Vue源码 214
- 7.2.6 Vue的render函数就是Watcher的expOrFn 218
- 7.3 Vuex2.0源码解析 219
- 7.3.1 Vuex的含义 219
- 7.3.2 源码分析 220
- 7.3.3 Vuex API分析 233
- 7.3.4 辅助函数 235
- 7.3.5 插件 239
- 7.3.6 一些函数的封装 242
- 7.4 Vue-router原理 244
- 7.4.1 Vue-router 244
- 7.4.2 Vue-router应用举例 244
- 7.4.3 Vue-router原理 245
- 第8章 进军WEEX 256
- 8.1 搭建WEEX基础环境 256
- 8.1.1 初始化:hello world 256
- 8.1.2 dotwe 257
- 8.2 分析首个WEEX工程代码 258
- 8.2.1 目录结构 258
- 8.2.2 通过serve起服务 258
- 8.2.3 webpack配置 259
- 8.2.4 页面开发 260
- 8.3 debug WEEX代码 260
- 8.3.1 web端调试 260
- 8.3.2 手机端调试 261
- 8.4 集成WEEX到已有应用 263
- 8.4.1 集成到Android 263
- 8.4.2 集成到iOS 268
- 8.5 使用WEEXpack构建移动应用 271