[go: up one dir, main page]

0% found this document useful (0 votes)
216 views7 pages

Vue The Road To Enterprise Table of Contents

This document provides a table of contents for a book about building scalable applications with Vue. It outlines 10 chapters that will cover topics like project configuration, component patterns, managing application state, performance optimization, and security. The document includes section titles and page numbers for each chapter to give an overview of the book's structure and content.

Uploaded by

Mirna Katičić
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
216 views7 pages

Vue The Road To Enterprise Table of Contents

This document provides a table of contents for a book about building scalable applications with Vue. It outlines 10 chapters that will cover topics like project configuration, component patterns, managing application state, performance optimization, and security. The document includes section titles and page numbers for each chapter to give an overview of the book's structure and content.

Uploaded by

Mirna Katičić
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 7

Contents

Foreword v
0.1 Acknowledgements . . . . . . . . . . . . . . . . . . . . . . . v
0.2 About the author . . . . . . . . . . . . . . . . . . . . . . . . vi
0.3 Contact . . . . . . . . . . . . . . . . . . . . . . . . . . . . . vii

1 Introduction 3
1.1 About this book . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.1.1 Who is this book for? . . . . . . . . . . . . . . . . . . 4
1.1.2 How to follow this book. . . . . . . . . . . . . . . . . 4
1.1.3 The Companion App . . . . . . . . . . . . . . . . . . 5

2 Vue 2 vs Vue 3 and preparing for migration 7


2.1 Notable changes . . . . . . . . . . . . . . . . . . . . . . . . . 7
2.1.1 Reactivity caveats . . . . . . . . . . . . . . . . . . . 8
2.1.2 Tree shaking . . . . . . . . . . . . . . . . . . . . . . 9
2.1.3 App initialisation . . . . . . . . . . . . . . . . . . . . 10
2.1.4 Adding global properties . . . . . . . . . . . . . . . . 11

iii
CONTENTS

2.1.5 Custom directives API . . . . . . . . . . . . . . . . . 12


2.1.6 The v-model directive and two-way data binding . . . 13
2.1.7 Unified slots . . . . . . . . . . . . . . . . . . . . . . 16
2.1.8 createElement . . . . . . . . . . . . . . . . . . . . . . 17
2.1.9 Array refs . . . . . . . . . . . . . . . . . . . . . . . . 19
2.2 Migration guide . . . . . . . . . . . . . . . . . . . . . . . . . 20
2.2.1 Avoid using $on, $off, and $once . . . . . . . . . . . 20
2.2.2 Avoid using filters . . . . . . . . . . . . . . . . . . . 21
2.2.3 Pass classes explicitly via props . . . . . . . . . . . . 22
2.2.4 Data option . . . . . . . . . . . . . . . . . . . . . . . 23
2.2.5 Emits option . . . . . . . . . . . . . . . . . . . . . . 23
2.2.6 Functional components . . . . . . . . . . . . . . . . . 24
2.2.7 KeyCode Modifiers . . . . . . . . . . . . . . . . . . . 25
2.3 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26

3 Project configuration and useful extensions 27


3.1 VS Code extensions . . . . . . . . . . . . . . . . . . . . . . . 27
3.2 Setting up a project . . . . . . . . . . . . . . . . . . . . . . . 33
3.2.1 Vue-CLI . . . . . . . . . . . . . . . . . . . . . . . . 33
3.3 Plugins configuration . . . . . . . . . . . . . . . . . . . . . . 35
3.3.1 PostCSS . . . . . . . . . . . . . . . . . . . . . . . . 35
3.3.2 Stylelint . . . . . . . . . . . . . . . . . . . . . . . . . 37
3.3.3 Prettier . . . . . . . . . . . . . . . . . . . . . . . . . 39
3.3.4 Automatic import of styles and variables . . . . . . . 40

Page iv
CONTENTS

3.4 Vue Devtools . . . . . . . . . . . . . . . . . . . . . . . . . . 41


3.5 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41

4 Scalable project architecture 43


4.1 Architecture for a large project . . . . . . . . . . . . . . . . . 44
4.2 Managing route components by feature . . . . . . . . . . . . 50
4.3 Encapsulating components and business logic . . . . . . . . . 55
4.4 How to manage third-party libraries . . . . . . . . . . . . . . 57
4.5 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59

5 Project and component documentation 61


5.1 Documentation generators . . . . . . . . . . . . . . . . . . . 63
5.2 Component documentation . . . . . . . . . . . . . . . . . . . 64
5.2.1 Vue Styleguidist . . . . . . . . . . . . . . . . . . . . 65
5.2.2 Storybook . . . . . . . . . . . . . . . . . . . . . . . . 73
5.3 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78

6 API layer and managing async operations 79


6.1 Implementing an API layer . . . . . . . . . . . . . . . . . . . 82
6.2 Handling API states . . . . . . . . . . . . . . . . . . . . . . . 87
6.2.1 How to avoid flickering loader . . . . . . . . . . . . . 97
6.2.2 Composition API based pattern . . . . . . . . . . . . 100
6.3 Request cancellation . . . . . . . . . . . . . . . . . . . . . . 103
6.3.1 Abortable function . . . . . . . . . . . . . . . . . . . 104
6.3.2 Abort property . . . . . . . . . . . . . . . . . . . . . 109

Page v
CONTENTS

6.4 Managing API state with Vuex . . . . . . . . . . . . . . . . . 112


6.5 Error logging . . . . . . . . . . . . . . . . . . . . . . . . . . 118
6.6 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . 120

7 Advanced component patterns 121


7.1 Base components . . . . . . . . . . . . . . . . . . . . . . . . 121
7.2 Wrapper components . . . . . . . . . . . . . . . . . . . . . . 124
7.3 Renderless components . . . . . . . . . . . . . . . . . . . . . 130
7.3.1 Toggle Provider . . . . . . . . . . . . . . . . . . . . . 130
7.3.2 Tags Provider . . . . . . . . . . . . . . . . . . . . . . 132
7.4 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141

8 Managing application state 143


8.1 Lifting up the state . . . . . . . . . . . . . . . . . . . . . . . 144
8.2 Stateful services . . . . . . . . . . . . . . . . . . . . . . . . . 153
8.3 Composition API . . . . . . . . . . . . . . . . . . . . . . . . 156
8.3.1 Composables with shared state . . . . . . . . . . . . . 163
8.3.2 StateProvider . . . . . . . . . . . . . . . . . . . . . . 165
8.4 What about Mixins? . . . . . . . . . . . . . . . . . . . . . . . 173
8.5 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . 174

9 Managing application layouts 175


9.1 Route-meta based page layout . . . . . . . . . . . . . . . . . 178
9.2 Dynamic layout with a pageLayoutService . . . . . . . . . . . 184
9.3 Dynamic layout with a useLayout composable . . . . . . . . . 188

Page vi
CONTENTS

9.3.1 useLayoutFactory . . . . . . . . . . . . . . . . . . . . 191


9.4 Products Layout . . . . . . . . . . . . . . . . . . . . . . . . . 193
9.5 Layout Factory . . . . . . . . . . . . . . . . . . . . . . . . . 202
9.6 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . 207

10 Performance optimisation 209


10.1 Lazy loading routes and components . . . . . . . . . . . . . . 209
10.1.1 Splitting application by routes . . . . . . . . . . . . . 209
10.1.2 Lazy loading components . . . . . . . . . . . . . . . 212
10.1.3 Custom LazyLoad component . . . . . . . . . . . . . 225
10.2 Tree-shaking . . . . . . . . . . . . . . . . . . . . . . . . . . 228
10.2.1 First example - Lodash . . . . . . . . . . . . . . . . . 228
10.2.2 Second example - FontAwesome . . . . . . . . . . . . 229
10.2.3 Third example - UI frameworks . . . . . . . . . . . . 230
10.3 PurgeCSS . . . . . . . . . . . . . . . . . . . . . . . . . . . . 230
10.4 Choosing appropriate libraries . . . . . . . . . . . . . . . . . 231
10.4.1 What to look at when choosing libraries and do I even
need one? . . . . . . . . . . . . . . . . . . . . . . . . 233
10.5 Modern mode . . . . . . . . . . . . . . . . . . . . . . . . . . 236
10.6 Static content optimisation with v-once . . . . . . . . . . . . 238
10.7 keep-alive . . . . . . . . . . . . . . . . . . . . . . . . . . . . 238
10.8 Performance option . . . . . . . . . . . . . . . . . . . . . . . 241
10.9 renderTriggered and renderTracked . . . . . . . . . . . . . . . 242
10.10Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . 244

Page vii
CONTENTS

11 Vuex patterns and best practices 245


11.1 When to use Vuex . . . . . . . . . . . . . . . . . . . . . . . . 246
11.2 Vuex tips . . . . . . . . . . . . . . . . . . . . . . . . . . . . 247
11.2.1 Strict mode . . . . . . . . . . . . . . . . . . . . . . . 247
11.2.2 Constant types . . . . . . . . . . . . . . . . . . . . . 247
11.2.3 Don’t create unnecessary actions . . . . . . . . . . . . 249
11.2.4 Naming conventions . . . . . . . . . . . . . . . . . . 249
11.2.5 Separation of Vuex modules and file naming conventions250
11.2.6 Use mapping helpers . . . . . . . . . . . . . . . . . . 250
11.2.7 Access Vuex store state by getters only . . . . . . . . 251
11.3 Automated module registration . . . . . . . . . . . . . . . . . 252
11.4 Automated module scaffolding . . . . . . . . . . . . . . . . . 254
11.5 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . 257

12 Application security 259


12.1 Validate URLs . . . . . . . . . . . . . . . . . . . . . . . . . . 259
12.2 Rendering HTML . . . . . . . . . . . . . . . . . . . . . . . . 261
12.3 Third-party libraries . . . . . . . . . . . . . . . . . . . . . . . 262
12.4 JSON Web Tokens (JWT) . . . . . . . . . . . . . . . . . . . . 263
12.5 Access permissions . . . . . . . . . . . . . . . . . . . . . . . 265
12.6 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . 280

13 Best practices for testing Vue applications 281


13.1 Unit testing Vue components . . . . . . . . . . . . . . . . . . 282
13.1.1 Testing Library . . . . . . . . . . . . . . . . . . . . . 290

Page viii
CONTENTS

13.2 End-to-end testing with Cypress . . . . . . . . . . . . . . . . 294


13.3 Useful testing tips . . . . . . . . . . . . . . . . . . . . . . . . 303
13.4 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . 305

14 Useful patterns, tips and tricks 307


14.1 Single Page Apps and SEO . . . . . . . . . . . . . . . . . . . 307
14.1.1 Static Site Generation (SSG) and Server Side Render-
ing (SSR) . . . . . . . . . . . . . . . . . . . . . . . . 308
14.1.2 How to make use of SSG or SSR? . . . . . . . . . . . 309
14.2 Logging values in SFC template . . . . . . . . . . . . . . . . 310
14.3 Exports/Imports . . . . . . . . . . . . . . . . . . . . . . . . . 311
14.4 Route controlled panel modals . . . . . . . . . . . . . . . . . 313
14.5 Styling child components . . . . . . . . . . . . . . . . . . . . 319
14.5.1 Scoped ::v-deep . . . . . . . . . . . . . . . . . . . . . 321
14.5.2 Style Modules . . . . . . . . . . . . . . . . . . . . . 322
14.6 Vue app does not work in an older browser . . . . . . . . . . 324

Page ix

You might also like