Vue3开发训练营: 从入门到精通,构建企业级应用程序

Vue3开发训练营: 从入门到精通,构建企业级应用程序

你将会学到

  • 构建企业级 Vue 应用程序并部署到生产环境
  • 使用 Vue 3 进行文件上传、测试、PWA、国际化、身份验证
  • 学习像高级开发人员一样构建反应性、高性能、大规模的应用程序
  • 了解 Vue 3 的最新功能,包括 Composition API、Pinia、Vue Router 等
  • 学习使用 TailwindCSS、Sass、CSS 动画和过渡构建漂亮的应用程序
  • 从零开始掌握 Vue 开发者的最新生态系统
  • 成为前 10% 的 VueJS 开发者
  • 在您的应用程序中使用 Pinia(Vuex 的新替代品)进行状态管理
  • 学习在性能和可扩展性方面比较权衡
  • 设置身份验证和用户帐户
  • 使用 Firebase 构建全栈应用程序
  • 通过做出良好的架构决策和帮助团队中的其他人来学习领导 Vue 项目
  • 掌握 Vue 设计模式
  • 使用 Vue 路由器进行路由
  • 将应用程序转换为渐进式 Web 应用程序
  • 使用 Vitest、快照测试甚至 E2E 测试来测试您的应用程序!
  • 使用最新的 ES6/ES7/ES8/ES9/ES10/ES11 JavaScript 编写干净的代码
  • 了解为什么 Vue 在开发人员中的受欢迎程度超过了 React 和 Angular!

资源目录


├── 03 - Project 1 Perspective Playground
│   ├── 002 Copying to the Clipboard_en.srt
│   ├── 003 Extra Exercise Copy Button.html
│   ├── 002 Copying to the Clipboard.mp4
│   ├── external-links.txt
│   ├── 001 Creating a Perspective Playground_en.srt
│   ├── 001 Creating a Perspective Playground.mp4
│   ├── 002 Copying to the Clipboard.srt
│   ├── 001 section-3-1-STARTER.zip
│   ├── 002 section-3-2-COMPLETE.zip
│   ├── 001 Creating a Perspective Playground.srt
│   ├── 002 Clipboard-API.url
├── 17 - Master Project PWA (Progressive Web App)
│   ├── 002 The Manifest File_en.srt
│   ├── 007 Workbox.url
│   ├── 006 Understanding Caching.mp4
│   ├── 001 What are Progressive Web Apps_en.srt
│   ├── 003 Generating the Manifest File.srt
│   ├── 003 Generating the Manifest File_en.srt
│   ├── 008 Firebase Data Persistence.mp4
│   ├── external-links.txt
│   ├── 006 Understanding Caching.srt
│   ├── 009 Handling Offline Uploads_en.srt
│   ├── 004 Configuring the Manifest File.srt
│   ├── 005 Offline Support with Service Workers.mp4
│   ├── 009 music-17-9-COMPLETED.zip
│   ├── 002 The Manifest File.mp4
│   ├── 005 Offline Support with Service Workers_en.srt
│   ├── 007 Workbox.srt
│   ├── 004 Configuring the Manifest File.mp4
│   ├── 002 The Manifest File.srt
│   ├── 008 Firebase Data Persistence.srt
│   ├── 003 Generating the Manifest File.mp4
│   ├── 008 Firebase Data Persistence_en.srt
│   ├── 005 Offline Support with Service Workers.srt
│   ├── 009 Handling Offline Uploads.mp4
│   ├── 004 PWA-Plugin-Manifest-File.url
│   ├── 007 Workbox.mp4
│   ├── 007 Workbox_en.srt
│   ├── 008 Enable-Persistence.url
│   ├── 001 What are Progressive Web Apps.srt
│   ├── 004 Configuring the Manifest File_en.srt
│   ├── 006 Understanding Caching_en.srt
│   ├── 004 Manifest-File.url
│   ├── 002 Install-Criteria.url
│   ├── 009 Handling Offline Uploads.srt
│   ├── 005 Workbox.url
│   ├── 001 What are Progressive Web Apps.mp4
├── 19 - Master Project Deployment + Production
│   ├── 002 Sharing Your Project.html
│   ├── 001 Deploying an App with Vercel.srt
│   ├── 001 Deploying an App with Vercel.mp4
│   ├── 001 Deploying an App with Vercel_en.srt
├── 10 - Master Project Form Validation
│   ├── 018 Setting up the Login Form.mp4
│   ├── 013 Rendering Multiple Error Messages_en.srt
│   ├── 014 Default Values.mp4
│   ├── 012 Scoped-Slots.url
│   ├── 001 Setting up Form Validation.mp4
│   ├── 015 Global-Message-Generator.url
│   ├── 018 Setting up the Login Form_en.srt
│   ├── 007 Validating Emails.srt
│   ├── 017 Showing Alerts.srt
│   ├── 013 Rendering Multiple Error Messages.mp4
│   ├── 007 Validating Emails_en.srt
│   ├── 006 Additional Rules.mp4
│   ├── 008 Validating Numbers.mp4
│   ├── 003 Field-Component.url
│   ├── 015 Custom Error Messages.srt
│   ├── 017 How-we-spent-30k-USD-in-Firebase-in-less-than-72-hours.url
│   ├── 016 Validation Triggers_en.srt
│   ├── 001 Setting up Form Validation.srt
│   ├── 018 music-10-18-COMPLETED.zip
│   ├── 010 Dropdown and Checkbox Fields.mp4
│   ├── 017 Showing Alerts_en.srt
│   ├── 008 Validating Numbers_en.srt
│   ├── 016 Validation Triggers.mp4
│   ├── 001 Setting up Form Validation_en.srt
│   ├── 002 Registering a Plugin.mp4
│   ├── 004 Defining Rules_en.srt
│   ├── 005 Applying Rules.mp4
│   ├── 012 section-10-12-STARTER.zip
│   ├── 005 Applying Rules.srt
│   ├── 003 Validation Components_en.srt
│   ├── 009 Validating Passwords_en.srt
│   ├── 012 Sidebar Slot Properties.srt
│   ├── 009 Validating Passwords.srt
│   ├── 012 section-10-12-COMPLETE.zip
│   ├── 012 Sidebar Slot Properties_en.srt
│   ├── 016 Validation Triggers.srt
│   ├── 003 Validation Components.srt
│   ├── 011 music-10-11-COMPLETED.zip
│   ├── 004 Defining Rules.srt
│   ├── external-links.txt
│   ├── 003 Validation Components.mp4
│   ├── 002 Registering a Plugin.srt
│   ├── 001 Vee-Validate.url
│   ├── 013 Rendering Multiple Error Messages.srt
│   ├── 001 Vuelidate.url
│   ├── 011 Validating the Form.mp4
│   ├── 002 Registering a Plugin_en.srt
│   ├── 012 Sidebar Slot Properties.mp4
│   ├── 015 Custom Error Messages_en.srt
│   ├── 018 Setting up the Login Form.srt
│   ├── 008 Validating Numbers.srt
│   ├── 017 Showing Alerts.mp4
│   ├── 011 Validating the Form_en.srt
│   ├── 004 Defining Rules.mp4
│   ├── 015 Custom Error Messages.mp4
│   ├── 014 Default Values.srt
│   ├── 005 Applying Rules_en.srt
│   ├── 009 Validating Passwords.mp4
│   ├── 007 Validating Emails.mp4
│   ├── 010 Dropdown and Checkbox Fields.srt
│   ├── 011 Validating the Form.srt
│   ├── 006 Additional Rules.srt
│   ├── 004 Vee-Validate-Rules.url
│   ├── 006 Additional Rules_en.srt
│   ├── 010 Dropdown and Checkbox Fields_en.srt
│   ├── 014 Default Values_en.srt
├── 23 - Where To Go From Here
│   ├── 001 Thank You!_en.srt
│   ├── 002 Become An Alumni.html
│   ├── 005 Coding Challenges.html
│   ├── 001 Thank You!.mp4
│   ├── 001 Thank You!.srt
│   ├── 003 Endorsements On LinkedIn.html
│   ├── 004 Learning Guideline.html
├── 09 - Master Project Introduction to Pinia
│   ├── 004 Formatting with ESLint and Prettier.srt
│   ├── 011 Reviewing the Pinia Configuration.srt
│   ├── 009 Loading Assets_en.srt
│   ├── 005 Adding the Template.srt
│   ├── 015 Alternative Mapping Functions_en.srt
│   ├── 010 Understanding State_en.srt
│   ├── 012 Splitting the Template into Components_en.srt
│   ├── 016 Understanding Getters.mp4
│   ├── 015 Alternative Mapping Functions.srt
│   ├── 012 Splitting the Template into Components.mp4
│   ├── 001 The Next Step_en.srt
│   ├── 020 Adding Tabs_en.srt
│   ├── 007 Installing Tailwind.mp4
│   ├── 009 Loading Assets.srt
│   ├── 011 Reviewing the Pinia Configuration_en.srt
│   ├── 007 Installing Tailwind.srt
│   ├── 002 Creating a New Project.mp4
│   ├── 001 The Next Step.mp4
│   ├── 019 Aliases.srt
│   ├── 005 music-template.zip
│   ├── 003 Style-Guide.url
│   ├── 005 Adding the Template.mp4
│   ├── 013 Disabling Vue’s Rules_en.srt
│   ├── 004 Formatting with ESLint and Prettier_en.srt
│   ├── 009 Statics-Assets-Handling.url
│   ├── 014 Working with State.srt
│   ├── 020 music-9-22-COMPLETED.zip
│   ├── 020 Adding Tabs.mp4
│   ├── 017 Using Getters.srt
│   ├── 003 Reviewing the Files.mp4
│   ├── 007 Tailwind-Installation.url
│   ├── 010 Understanding State.srt
│   ├── 020 Adding Tabs.srt
│   ├── 019 Aliases.mp4
│   ├── 002 Creating a New Project_en.srt
│   ├── 008 Practicing with Tailwind_en.srt
│   ├── 003 Reviewing the Files_en.srt
│   ├── 006 Tailwind.url
│   ├── 014 Working with State_en.srt
│   ├── 016 Understanding Getters_en.srt
│   ├── 015 Alternative Mapping Functions.mp4
│   ├── 010 Understanding State.mp4
│   ├── 007 Installing Tailwind_en.srt
│   ├── 003 Reviewing the Files.srt
│   ├── 005 Adding the Template_en.srt
│   ├── 006 What is Tailwind_en.srt
│   ├── 008 Practicing with Tailwind.mp4
│   ├── 012 Splitting the Template into Components.srt
│   ├── 011 Reviewing the Pinia Configuration.mp4
│   ├── 017 Using Getters.mp4
│   ├── 006 What is Tailwind.mp4
│   ├── 016 Understanding Getters.srt
│   ├── 012 Component-Name-Style-Guide.url
│   ├── 009 Loading Assets.mp4
│   ├── 002 Creating a New Project.srt
│   ├── 006 PurgeCSS.url
│   ├── 006 What is Tailwind.srt
│   ├── 018 Closing the Modal.mp4
│   ├── 008 Practicing with Tailwind.srt
│   ├── 019 Aliases_en.srt
│   ├── 018 Closing the Modal.srt
│   ├── external-links.txt
│   ├── 014 Working with State.mp4
│   ├── 001 The Next Step.srt
│   ├── 013 Disabling Vue’s Rules.srt
│   ├── 004 Formatting with ESLint and Prettier.mp4
│   ├── 017 Using Getters_en.srt
│   ├── 018 Closing the Modal_en.srt
├── 20 - Master Project Testing Your Vue App
│   ├── 011 Mocking Methods_en.srt
│   ├── 006 Testing the Inner Content_en.srt
│   ├── 011 Mocking Methods.srt
│   ├── 006 Testing the Inner Content.mp4
│   ├── 018 Writing an E2E Test.mp4
│   ├── 012 Testing Attributes.srt
│   ├── 006 Wrapper-Methods.url
│   ├── 002 Introduction to Vitest.mp4
│   ├── 008 Stubbing Components.mp4
│   ├── 005 Mounting with Vue Test Utils.srt
│   ├── 015 Testing Router Components.srt
│   ├── 017 Cypress.url
│   ├── 013 Testing Pinia Actions.srt
│   ├── 017 E2E Testing Overview.mp4
│   ├── 018 music-20-18-COMPLETED.zip
│   ├── 010 Testing Children Components.mp4
│   ├── 016 Snapshot Testing.srt
│   ├── 010 Testing Children Components.srt
│   ├── 015 Testing Router Components_en.srt
│   ├── 010 Testing Children Components_en.srt
│   ├── 001 Introduction to Testing.srt
│   ├── 004 Writing Our First Test.mp4
│   ├── 002 Jest.url
│   ├── 002 Introduction to Vitest_en.srt
│   ├── 007 Passing Data to Components.mp4
│   ├── 003 Adding the Vitest UI.mp4
│   ├── 005 Mounting with Vue Test Utils.mp4
│   ├── 016 Snapshot Testing.mp4
│   ├── 001 Introduction to Testing_en.srt
│   ├── 009 Avoid Boolean Assertions.srt
│   ├── 007 Passing Data to Components_en.srt
│   ├── 002 Mocha.url
│   ├── 008 Stubbing Components.srt
│   ├── 013 Testing Pinia Actions.mp4
│   ├── 003 Adding the Vitest UI.srt
│   ├── 006 Testing the Inner Content.srt
│   ├── 014 Mocking Promises_en.srt
│   ├── 017 E2E Testing Overview.srt
│   ├── 012 Testing Attributes.mp4
│   ├── 018 Writing an E2E Test.srt
│   ├── external-links.txt
│   ├── 009 Avoid Boolean Assertions_en.srt
│   ├── 004 Writing Our First Test_en.srt
│   ├── 012 Testing Attributes_en.srt
│   ├── 016 Snapshot Testing_en.srt
│   ├── 002 Introduction to Vitest.srt
│   ├── 007 Passing Data to Components.srt
│   ├── 018 Writing an E2E Test_en.srt
│   ├── 017 E2E Testing Overview_en.srt
│   ├── 013 Testing Pinia Actions_en.srt
│   ├── 009 Avoid Boolean Assertions.mp4
│   ├── 001 Introduction to Testing.mp4
│   ├── 008 Stubbing Components_en.srt
│   ├── 004 Writing Our First Test.srt
│   ├── 014 Mocking Promises.srt
│   ├── 015 Testing Router Components.mp4
│   ├── 004 expect-Function.url
│   ├── 003 Adding the Vitest UI_en.srt
│   ├── 005 Mounting with Vue Test Utils_en.srt
│   ├── 014 Mocking Promises.mp4
│   ├── 002 Jasmine.url
│   ├── 011 Mocking Methods.mp4
├── 08 - Project 2 Vue Quiz App
│   ├── 002 Rendering the Questions_en.srt
│   ├── 001 section-8-1-STARTER.zip
│   ├── 002 Rendering the Questions.mp4
│   ├── 004 Finishing Touches.mp4
│   ├── 005 Exercise Imposter Syndrome_en.srt
│   ├── 003 Moving between Questions.mp4
│   ├── 001 Setting up the Quiz Application.srt
│   ├── 003 Moving between Questions.srt
│   ├── 004 section-8-4-COMPLETE.zip
│   ├── 005 Exercise Imposter Syndrome.srt
│   ├── 005 Exercise Imposter Syndrome.mp4
│   ├── 002 Rendering the Questions.srt
│   ├── 001 Setting up the Quiz Application.mp4
│   ├── 004 Finishing Touches.srt
│   ├── 001 Static-Assets-Handling.url
│   ├── external-links.txt
│   ├── 001 Setting up the Quiz Application_en.srt
│   ├── 004 Finishing Touches_en.srt
│   ├── 003 Moving between Questions_en.srt
├── 11 - Master Project Authentication
│   ├── 003 Setting up the Firebase SDK.srt
│   ├── 007 Storing the User Form Data.srt
│   ├── 016 Setting up the Login.mp4
│   ├── 016 signInWithEmailAndPassword-Function.url
│   ├── 005 Handling the Response.mp4
│   ├── 018 Sidebar JSON Web Tokens.srt
│   ├── 013 Connecting the User with their Data.srt
│   ├── 011 Understanding Actions.mp4
│   ├── 017 Signing Out.mp4
│   ├── 017 Signing Out.srt
│   ├── 005 Authentication-SDK.url
│   ├── 018 Base-64-Decode.url
│   ├── 014 Initializing Firebase First.mp4
│   ├── 001 Understanding Authentication.mp4
│   ├── 002 Reviewing the Rules_en.srt
│   ├── 018 music-11-17-COMPLETED.zip
│   ├── 004 User Registration.srt
│   ├── 018 Sidebar JSON Web Tokens.mp4
│   ├── 016 Setting up the Login.srt
│   ├── 012 Using Actions.mp4
│   ├── 014 Initializing Firebase First.srt
│   ├── 003 Setting up the Firebase SDK.mp4
│   ├── 006 Exporting Services.srt
│   ├── 005 Handling the Response.srt
│   ├── 006 Exporting Services_en.srt
│   ├── 009 Firebase-Request-Auth.url
│   ├── 007 Storing the User Form Data.mp4
│   ├── 011 Understanding Actions.srt
│   ├── 009 Understanding Authentication.mp4
│   ├── 010 Logging the user in after Signup.srt
│   ├── 006 Exporting Services.mp4
│   ├── 013 signInWithEmailAndPassword-Function.url
│   ├── 002 Reviewing the Rules.srt
│   ├── 010 Logging the user in after Signup.mp4
│   ├── 003 Firebase-Web-Setup.url
│   ├── 001 Understanding Authentication_en.srt
│   ├── 018 JWT.url
│   ├── 018 Sidebar JSON Web Tokens_en.srt
│   ├── 015 Persisting the User Authentication.mp4
│   ├── 002 Firebase-Rules.url
│   ├── 017 Signing Out_en.srt
│   ├── 004 User Registration_en.srt
│   ├── 013 Connecting the User with their Data_en.srt
│   ├── 004 Firebase-Auth.url
│   ├── 012 Using Actions_en.srt
│   ├── 003 Setting up the Firebase SDK_en.srt
│   ├── 011 Understanding Actions_en.srt
│   ├── 016 Setting up the Login_en.srt
│   ├── external-links.txt
│   ├── 010 Logging the user in after Signup_en.srt
│   ├── 013 Connecting the User with their Data.mp4
│   ├── 002 Reviewing the Rules.mp4
│   ├── 014 Initializing Firebase First_en.srt
│   ├── 009 Understanding Authentication_en.srt
│   ├── 001 Understanding Authentication.srt
│   ├── 012 Using Actions.srt
│   ├── 005 Handling the Response_en.srt
│   ├── 015 Persisting the User Authentication.srt
│   ├── 007 Storing the User Form Data_en.srt
│   ├── 004 User Registration.mp4
│   ├── 001 Firebase.url
│   ├── 015 Persisting the User Authentication_en.srt
│   ├── 009 Understanding Authentication.srt
│   ├── 008 Extra Exercise Add Another Field.html
├── 22 - Component Design Patterns
│   ├── 004 Third-Party Libraries as Controlled Components_en.srt
│   ├── 006 Lipsum.url
│   ├── 002 Controlled Components_en.srt
│   ├── 002 section-22-2-STARTER.zip
│   ├── 005 Moving Beyond Vue’s Event System.srt
│   ├── 002 Controlled Components.srt
│   ├── 004 section-22-4-COMPLETE.zip
│   ├── 003 Separation of Concerns_en.srt
│   ├── 004 Emoji-Button-API-Docs.url
│   ├── 004 Emoji-Button.url
│   ├── 002 Controlled Components.mp4
│   ├── 004 Third-Party Libraries as Controlled Components.mp4
│   ├── 001 Section Overview_en.srt
│   ├── 006 Encapsulating Scrolling_en.srt
│   ├── 007 section-22-7-COMPLETE.zip
│   ├── 004 section-22-4-STARTER.zip
│   ├── 003 Separation of Concerns.mp4
│   ├── 004 Third-Party Libraries as Controlled Components.srt
│   ├── 001 Section Overview.mp4
│   ├── external-links.txt
│   ├── 003 section-22-3-COMPLETE.zip
│   ├── 007 The Teleport Component.mp4
│   ├── 007 The Teleport Component_en.srt
│   ├── 005 Moving Beyond Vue’s Event System_en.srt
│   ├── 006 Encapsulating Scrolling.mp4
│   ├── 003 Separation of Concerns.srt
│   ├── 007 The Teleport Component.srt
│   ├── 005 section-22-5-STARTER.zip
│   ├── 006 Encapsulating Scrolling.srt
│   ├── 001 Section Overview.srt
├── 14 - Master Project Playing Music
│   ├── 022 Creating links with Hash Fragments_en.srt
│   ├── 009 Displaying the Comments_en.srt
│   ├── 014 Storing the song in the State.srt
│   ├── 001 Creating the Home Page.mp4
│   ├── 012 Detecting Query Parameters.srt
│   ├── 013 No-Plus-Plus.url
│   ├── 007 Prepping the Form.mp4
│   ├── 022 Creating links with Hash Fragments.srt
│   ├── 014 Storing the song in the State.mp4
│   ├── 017 Duration and Current Position.mp4
│   ├── 011 Query Parameters_en.srt
│   ├── 009 Displaying the Comments.srt
│   ├── 009 Displaying the Comments.mp4
│   ├── 019 Player Progress Bar.mp4
│   ├── 016 Toggling Audio.srt
│   ├── 008 Finalizing the Comment Form.srt
│   ├── 005 Creating the Song Template.srt
│   ├── 023 Route Transitions.srt
│   ├── 016 Howler-Documentation.url
│   ├── 005 Creating the Song Template.mp4
│   ├── 002 Checking the Scroll Position.mp4
│   ├── 007 Prepping the Form_en.srt
│   ├── 018 Formatting the Time.mp4
│   ├── 010 Updating the Comments List.mp4
│   ├── 003 Infinite Scrolling.mp4
│   ├── 004 Path Parameters_en.srt
│   ├── 011 Query Parameters.mp4
│   ├── 019 Player Progress Bar_en.srt
│   ├── 005 Creating the Song Template_en.srt
│   ├── 022 Creating links with Hash Fragments.mp4
│   ├── 023 Route Transitions_en.srt
│   ├── 006 Validating the Comment.srt
│   ├── 012 Detecting Query Parameters_en.srt
│   ├── 006 Validating the Comment_en.srt
│   ├── 018 Formatting the Time_en.srt
│   ├── 018 Formatting the Time.srt
│   ├── 004 Path Parameters.srt
│   ├── 020 Changing the Audio Position.srt
│   ├── 017 Duration and Current Position_en.srt
│   ├── 016 Toggling Audio_en.srt
│   ├── 020 Changing the Audio Position.mp4
│   ├── 008 Finalizing the Comment Form.mp4
│   ├── 010 Updating the Comments List.srt
│   ├── 008 Finalizing the Comment Form_en.srt
│   ├── 023 music-14-22-COMPLETED.zip
│   ├── 002 Checking the Scroll Position_en.srt
│   ├── 014 Howler.url
│   ├── 013 Updating the Comment Count_en.srt
│   ├── 011 Query Parameters.srt
│   ├── 002 Checking the Scroll Position.srt
│   ├── 014 Storing the song in the State_en.srt
│   ├── 001 Creating the Home Page.srt
│   ├── 015 Playing Audio.mp4
│   ├── 017 Duration and Current Position.srt
│   ├── 013 Updating the Comment Count.mp4
│   ├── 010 Updating the Comments List_en.srt
│   ├── 015 Playing Audio.srt
│   ├── 007 Prepping the Form.srt
│   ├── 004 Dynamic-Route-Matchmaking.url
│   ├── 001 Creating the Home Page_en.srt
│   ├── 003 Infinite Scrolling.srt
│   ├── 023 Route Transitions.mp4
│   ├── 012 Detecting Query Parameters.mp4
│   ├── external-links.txt
│   ├── 013 Updating the Comment Count.srt
│   ├── 015 Playing Audio_en.srt
│   ├── 020 Changing the Audio Position_en.srt
│   ├── 019 Player Progress Bar.srt
│   ├── 004 Path Parameters.mp4
│   ├── 016 Toggling Audio.mp4
│   ├── 003 Infinite Scrolling_en.srt
│   ├── 006 Validating the Comment.mp4
│   ├── 021 Extra Exercise Update the play Button.html
├── 18 - Master Project Performance Optimizations
│   ├── 005 Progress Bar.mp4
│   ├── 003 Perceived Performance.srt
│   ├── 007 Rollup Visualizer_en.srt
│   ├── 003 Perceived Performance_en.srt
│   ├── 007 Rollup-Plugin-Visualizer.url
│   ├── 005 NProgress.url
│   ├── 005 Progress Bar.srt
│   ├── 001 Overview.mp4
│   ├── 007 music-18-7-COMPLETED.zip
│   ├── 006 Code Coverage.srt
│   ├── 002 Lodash.url
│   ├── 007 Rollup Visualizer.srt
│   ├── 001 Overview_en.srt
│   ├── 004 Dynamic Route Imports.mp4
│   ├── 006 Code Coverage.mp4
│   ├── 005 Progress Bar_en.srt
│   ├── 004 Dynamic Route Imports.srt
│   ├── 007 Rollup Visualizer.mp4
│   ├── 006 Code Coverage_en.srt
│   ├── 004 Dynamic Route Imports_en.srt
│   ├── 002 Auto-Registering Global Components.mp4
│   ├── 006 music-18-12-COMPLETED.zip
│   ├── 002 Auto-Registering Global Components_en.srt
│   ├── 001 Overview.srt
│   ├── 003 Perceived Performance.mp4
│   ├── 002 Auto-Registering Global Components.srt
│   ├── external-links.txt
├── 01 - Introduction
│   ├── 001 Course Outline.mp4
│   ├── 004 Vue vs React vs Angular.mp4
│   ├── 004 Vue vs React vs Angular_en.srt
│   ├── 003 Exercise Meet Your Classmates and Instructor.html
│   ├── 001 Course Outline_en.srt
│   ├── 007 Optional Vue Documentary.html
│   ├── 005 Composition vs. Options API.mp4
│   ├── 002 Join Our Online Classroom!.mp4
│   ├── 005 Composition vs. Options API_en.srt
│   ├── 006 ZTM-Vue-Course-Code.zip
│   ├── 006 Complete Course Resources + Code.html
│   ├── 008 Monthly Coding Challenges, Free Resources and Guides.html
│   ├── 006 Vue-Course-Guidebook.pdf
│   ├── 002 Join Our Online Classroom!_en.srt
│   ├── 005 Composition vs. Options API.srt
│   ├── 004 Vue vs React vs Angular.srt
│   ├── 002 Join Our Online Classroom!.srt
│   ├── 001 Course Outline.srt
├── 13 - Master Project Uploading Files
│   ├── 013 Drag-n-Drop-Support.url
│   ├── 004 Enabling Firebase’s Storage Service_en.srt
│   ├── 006 Firebase Rules and Validation.srt
│   ├── 024 Deleting a Song from the StorageDatabase_en.srt
│   ├── 011 File-Metadata.url
│   ├── 017 Querying the Database.srt
│   ├── 024 Deleting a Song from the StorageDatabase.srt
│   ├── 004 Enabling Firebase’s Storage Service.srt
│   ├── 015 music-13-14-COMPLETED.zip
│   ├── external-links.txt
│   ├── 018 Storing the List of Songs.srt
│   ├── 009 Improving the Progress Bar_en.srt
│   ├── 010 Handling Errors and Successful Uploads.srt
│   ├── 007 Adding the Progress Bar.srt
│   ├── 013 Fallback Upload_en.srt
│   ├── 018 Storing the List of Songs.mp4
│   ├── 020 Prop Validation.mp4
│   ├── 017 Querying the Database_en.srt
│   ├── 009 Improving the Progress Bar.mp4
│   ├── 023 Editing a Song.srt
│   ├── 018 Storing the List of Songs_en.srt
│   ├── 016 One more thing about References.mp4
│   ├── 015 Cancelling Uploads with Refs.mp4
│   ├── 008 Making the Progress Bar Dynamic_en.srt
│   ├── 025 Updating the list of songs after an Upload_en.srt
│   ├── 005 Uploading Files with Firebase.mp4
│   ├── 003 HTML5.url
│   ├── 026 Router Leave Guards_en.srt
│   ├── 014 Canceling Uploads.mp4
│   ├── 026 Router Leave Guards.mp4
│   ├── 016 One more thing about References_en.srt
│   ├── 006 Firebase Rules and Validation_en.srt
│   ├── 023 Editing a Song.mp4
│   ├── 002 Handling Drag and Drop Events.srt
│   ├── 006 Firebase-Secure-Rules.url
│   ├── 008 Making the Progress Bar Dynamic.srt
│   ├── 026 music-13-26-COMPLETED.zip
│   ├── 019 Displaying the List of Songs.srt
│   ├── 012 Firebase References and Snapshots.srt
│   ├── 020 Prop Validation_en.srt
│   ├── 012 Firebase References and Snapshots_en.srt
│   ├── 002 Handling Drag and Drop Events_en.srt
│   ├── 010 Error-Codes.url
│   ├── 001 Preparing the Upload Component.srt
│   ├── 008 Making the Progress Bar Dynamic.mp4
│   ├── 001 Preparing the Upload Component_en.srt
│   ├── 011 Storing the File Data in the Database_en.srt
│   ├── 009 Text-Colors.url
│   ├── 019 Displaying the List of Songs.mp4
│   ├── 021 Toggling the Form.srt
│   ├── 001 Preparing the Upload Component.mp4
│   ├── 010 Handling Errors and Successful Uploads_en.srt
│   ├── 023 Editing a Song_en.srt
│   ├── 022 Validating the Song Form.mp4
│   ├── 022 Validating the Song Form_en.srt
│   ├── 016 section-13-16-STARTER.zip
│   ├── 017 Querying the Database.mp4
│   ├── 009 Improving the Progress Bar.srt
│   ├── 005 Uploading Files with Firebase.srt
│   ├── 014 Canceling Uploads_en.srt
│   ├── 020 Prop Validation.srt
│   ├── 010 Handling Errors and Successful Uploads.mp4
│   ├── 013 Fallback Upload.mp4
│   ├── 019 Displaying the List of Songs_en.srt
│   ├── 006 Firebase Rules and Validation.mp4
│   ├── 022 Validating the Song Form.srt
│   ├── 012 Firebase References and Snapshots.mp4
│   ├── 024 Storage-Security-Rules.url
│   ├── 002 Handling Drag and Drop Events.mp4
│   ├── 011 Storing the File Data in the Database.mp4
│   ├── 009 Font-Awesome.url
│   ├── 026 Router Leave Guards.srt
│   ├── 005 Uploading Files with Firebase_en.srt
│   ├── 007 Adding the Progress Bar.mp4
│   ├── 025 Updating the list of songs after an Upload.mp4
│   ├── 013 Fallback Upload.srt
│   ├── 024 Delete-Files.url
│   ├── 003 Handling the File_en.srt
│   ├── 015 Cancelling Uploads with Refs.srt
│   ├── 014 Canceling Uploads.srt
│   ├── 024 Deleting a Song from the StorageDatabase.mp4
│   ├── 003 Handling the File.srt
│   ├── 021 Toggling the Form.mp4
│   ├── 003 Handling the File.mp4
│   ├── 021 Toggling the Form_en.srt
│   ├── 016 One more thing about References.srt
│   ├── 015 Cancelling Uploads with Refs_en.srt
│   ├── 007 Adding the Progress Bar_en.srt
│   ├── 007 Upload-Files.url
│   ├── 025 Updating the list of songs after an Upload.srt
│   ├── 011 Storing the File Data in the Database.srt
├── 06 - Advanced Vue Components
│   ├── 014 Inserting content with slots.srt
│   ├── 016 Dynamic Components.srt
│   ├── 010 The Limitations of Props_en.srt
│   ├── 001 Scaffolding a Vue Project_en.srt
│   ├── 006 Component Styles.srt
│   ├── 014 Inserting content with slots_en.srt
│   ├── 016 Dynamic Components.mp4
│   ├── 015 Slots.url
│   ├── 001 Scaffolding a Vue Project.srt
│   ├── 007 Vue-CLI-CSS.url
│   ├── 011 Emitting Events_en.srt
│   ├── 014 Inserting content with slots.mp4
│   ├── 012 Validating Props.mp4
│   ├── 013 Callback Functions.mp4
│   ├── 002 Sidebar Understanding Servers.srt
│   ├── 005 Child Components_en.srt
│   ├── 015 Named Slots.srt
│   ├── 011 Emitting Events.srt
│   ├── 010 The Limitations of Props.srt
│   ├── 003 Reviewing the Files.srt
│   ├── 001 Scaffolding a Vue Project.mp4
│   ├── 003 Reviewing the Files_en.srt
│   ├── 004 Creating Components.srt
│   ├── 004 Creating Components_en.srt
│   ├── 015 section-6-15-COMPLETE.zip
│   ├── external-links.txt
│   ├── 013 Callback Functions_en.srt
│   ├── 009 Props_en.srt
│   ├── 011 Emitting Events.mp4
│   ├── 016 Dynamic Components_en.srt
│   ├── 002 Sidebar Understanding Servers_en.srt
│   ├── 005 Child Components.mp4
│   ├── 007 Using SASS in Components.srt
│   ├── 007 Using SASS in Components_en.srt
│   ├── 007 Using SASS in Components.mp4
│   ├── 008 Communicating Between Components_en.srt
│   ├── 006 Component Styles_en.srt
│   ├── 013 Callback Functions.srt
│   ├── 010 The Limitations of Props.mp4
│   ├── 013 section-6-13-COMPLETE.zip
│   ├── 016 section-6-16-COMPLETE.zip
│   ├── 015 Named Slots.mp4
│   ├── 003 Vue-Babel-Preset.url
│   ├── 009 Props.srt
│   ├── 015 Named Slots_en.srt
│   ├── 001 Create-Vue.url
│   ├── 003 Reviewing the Files.mp4
│   ├── 009 Props.mp4
│   ├── 012 Validating Props_en.srt
│   ├── 006 Scoped-CSS.url
│   ├── 006 Component Styles.mp4
│   ├── 012 Type-Checks.url
│   ├── 008 Communicating Between Components.srt
│   ├── 004 Creating Components.mp4
│   ├── 008 Communicating Between Components.mp4
│   ├── 005 Child Components.srt
│   ├── 012 Validating Props.srt
│   ├── 002 Sidebar Understanding Servers.mp4
├── 05 - Vue Developer Environment
│   ├── 005 Understanding SASS.srt
│   ├── 005 Understanding SASS.mp4
│   ├── external-links.txt
│   ├── 010 Conclusion_en.srt
│   ├── 009 Webpack_en.srt
│   ├── 010 Conclusion.mp4
│   ├── 001 Overview.mp4
│   ├── 005 Understanding SASS_en.srt
│   ├── 009 section-5-8-COMPLETE.zip
│   ├── 006 PostCSS.mp4
│   ├── 009 Webpack.mp4
│   ├── 003 Introduction to Vite.mp4
│   ├── 006 PostCSS_en.srt
│   ├── 008 Configuring ESLint_en.srt
│   ├── 002 Optional Videos In Appendix.html
│   ├── 007 Installing ESLint_en.srt
│   ├── 001 Overview.srt
│   ├── 006 PostCSS.url
│   ├── 004 Exploring Vite.mp4
│   ├── 010 Conclusion.srt
│   ├── 003 Introduction to Vite.srt
│   ├── 007 Installing ESLint.mp4
│   ├── 008 Configuring ESLint.srt
│   ├── 008 Configuring ESLint.mp4
│   ├── 009 webpack-example.zip
│   ├── 007 ESLint.url
│   ├── 007 Installing ESLint.srt
│   ├── 005 SASS-Color-Functions.url
│   ├── 003 Introduction to Vite_en.srt
│   ├── 004 Exploring Vite_en.srt
│   ├── 008 Configuring-ESLint.url
│   ├── 009 Webpack.srt
│   ├── 004 Exploring Vite.srt
│   ├── 006 PostCSS-Parts.url
│   ├── 008 section-5-7-COMPLETE.zip
│   ├── 001 Overview_en.srt
│   ├── 006 PostCSS.srt
│   ├── 005 SASS.url
├── 15 - Master Project Directives
│   ├── 001 Introduction to Directives.mp4
│   ├── 005 music-15-5-COMPLETED.zip
│   ├── 002 Writing our First Directive_en.srt
│   ├── 005 Registering a Directive Locally.srt
│   ├── 004 Directive Modifiers.mp4
│   ├── 005 Registering a Directive Locally.mp4
│   ├── 004 Directive Modifiers_en.srt
│   ├── 001 Introduction to Directives_en.srt
│   ├── 005 Registering a Directive Locally_en.srt
│   ├── 002 Writing our First Directive.srt
│   ├── 003 Passing Values to Directives.mp4
│   ├── 003 Passing Values to Directives_en.srt
│   ├── 001 Introduction to Directives.srt
│   ├── 004 Directive Modifiers.srt
│   ├── 002 Writing our First Directive.mp4
│   ├── 003 Passing Values to Directives.srt
├── 07 - Transitions & Animations
│   ├── 005 Web-Animations-API.url
│   ├── 008 Fixing the Animation.srt
│   ├── 006 CSS and JavaScript Transitions.srt
│   ├── 002 Fine-tuning Transitions_en.srt
│   ├── 006 CSS and JavaScript Transitions.mp4
│   ├── 002 Transitions.url
│   ├── 005 JavaScript Zoom Animation.mp4
│   ├── external-links.txt
│   ├── 004 Animating with JavaScript.srt
│   ├── 001 Animating with CSS Transitions.srt
│   ├── 004 Animating with JavaScript_en.srt
│   ├── 008 Fixing the Animation_en.srt
│   ├── 002 Fine-tuning Transitions.srt
│   ├── 007 Animating a List.srt
│   ├── 001 section-7-1-STARTER.zip
│   ├── 001 Animating with CSS Transitions.mp4
│   ├── 002 Fine-tuning Transitions.mp4
│   ├── 004 Animating with JavaScript.mp4
│   ├── 005 JavaScript Zoom Animation_en.srt
│   ├── 009 Transition CSS Class Names.mp4
│   ├── 009 section-7-9-COMPLETE.zip
│   ├── 008 Fixing the Animation.mp4
│   ├── 009 Transition CSS Class Names_en.srt
│   ├── 003 Animating with CSS Animations.mp4
│   ├── 009 Animate.css.url
│   ├── 007 Animating a List.mp4
│   ├── 006 CSS and JavaScript Transitions_en.srt
│   ├── 001 Animating with CSS Transitions_en.srt
│   ├── 009 Transition CSS Class Names.srt
│   ├── 003 Animating with CSS Animations_en.srt
│   ├── 009 Animate-CDN.url
│   ├── 007 Animating a List_en.srt
│   ├── 003 Animating with CSS Animations.srt
│   ├── 005 JavaScript Zoom Animation.srt
├── 16 - Master Project Internationalization
│   ├── 001 Introduction to i18n_en.srt
│   ├── 001 Vue-I18N.url
│   ├── 003 Formatting and Pluralization_en.srt
│   ├── 002 Our First Translation.srt
│   ├── 003 Pluralization.url
│   ├── 007 Exercise Translating the Rest of the App_en.srt
│   ├── 006 Changing Locales.srt
│   ├── 004 Number-Localization.url
│   ├── 007 music-16-7-COMPLETED.zip
│   ├── 004 Number Localizations.srt
│   ├── 004 Number Localizations.mp4
│   ├── 003 Formatting and Pluralization.mp4
│   ├── 005 Translating HTML with Component Interpolation.mp4
│   ├── 003 Formatting and Pluralization.srt
│   ├── 001 Language-Codes.url
│   ├── 002 Our First Translation.mp4
│   ├── 007 Exercise Translating the Rest of the App.mp4
│   ├── 001 Introduction to i18n.srt
│   ├── 002 Our First Translation_en.srt
│   ├── 006 Changing Locales_en.srt
│   ├── external-links.txt
│   ├── 006 Changing Locales.mp4
│   ├── 005 Translating HTML with Component Interpolation_en.srt
│   ├── 005 Component-Interpolation.url
│   ├── 004 Number-Format.url
│   ├── 004 Number Localizations_en.srt
│   ├── 005 Translating HTML with Component Interpolation.srt
│   ├── 007 Exercise Translating the Rest of the App.srt
│   ├── 001 Introduction to i18n.mp4
├── 24 - Appendix Extra Bits
│   ├── 008 Types of Modules.mp4
│   ├── 005 Modules In Node.srt
│   ├── 004 Running script.js In Node.mp4
│   ├── 003 Using The TerminalCommand Prompt.srt
│   ├── 007 ES6 Modules In Node.mp4
│   ├── 004 Running script.js In Node.srt
│   ├── 003 Using The TerminalCommand Prompt.mp4
│   ├── 007 ES6 Modules In Node_en.srt
│   ├── 004 Running script.js In Node_en.srt
│   ├── 005 Modules In Node.mp4
│   ├── 007 ES6 Modules In Node.srt
│   ├── 008 Types of Modules.srt
│   ├── 002 For WINDOWS Users ONLY.html
│   ├── 001 Quick Note Upcoming Videos.html
│   ├── 005 Modules In Node_en.srt
│   ├── 006 ES6 Modules.html
│   ├── 008 Types of Modules_en.srt
│   ├── 003 Using The TerminalCommand Prompt_en.srt
├── 25 - BONUS SECTION
│   ├── 001 Bonus Lecture.html
├── 04 - Vue Beyond the Fundamentals
│   ├── 005 Understanding Reactivity with Proxies_en.srt
│   ├── external-links.txt
│   ├── 005 Understanding Reactivity with Proxies.srt
│   ├── 007 Introduction to Components.srt
│   ├── 007 Introduction to Components_en.srt
│   ├── 002 Understanding Lifecycle Hooks.mp4
│   ├── 006 The Vue Compiler_en.srt
│   ├── 006 The Vue Compiler.srt
│   ├── 001 Mounting the Vue Instance_en.srt
│   ├── 001 Mounting the Vue Instance.mp4
│   ├── 004 Virtual DOM_en.srt
│   ├── 004 Virtual DOM.mp4
│   ├── 006 CDNJS.url
│   ├── 002 Understanding Lifecycle Hooks_en.srt
│   ├── 003 section-4-3-COMPLETE.zip
│   ├── 003 Using Lifecycle Hooks.srt
│   ├── 001 Mounting the Vue Instance.srt
│   ├── 001 section-4-1-STARTER.zip
│   ├── 007 section-4-7-COMPLETE.zip
│   ├── 005 Understanding Reactivity with Proxies.mp4
│   ├── 003 Vue-Lifecycle.url
│   ├── 003 Using Lifecycle Hooks_en.srt
│   ├── 004 Virtual DOM.srt
│   ├── 005 Proxy-Object.url
│   ├── 002 Understanding Lifecycle Hooks.srt
│   ├── 006 The Vue Compiler.mp4
│   ├── 007 Introduction to Components.mp4
│   ├── 006 Vue-Builds.url
│   ├── 003 Using Lifecycle Hooks.mp4
│   ├── 005 CodePen.url
├── 02 - Vue Fundamentals
│   ├── 005 Accessing the Instance Data.srt
│   ├── 018 Binding Classes.mp4
│   ├── 012 Passing on Data with Events.srt
│   ├── 002 Vue Dev Tools.mp4
│   ├── 016 Computed Properties_en.srt
│   ├── 001 Vue-Installation.url
│   ├── 022 List-Rendering.url
│   ├── 014 Keyboard Events and Modifiers_en.srt
│   ├── 007 Directives.mp4
│   ├── 023 Maintaining-State.url
│   ├── 009 Binding Attributes.srt
│   ├── 008 Two-way data binding.srt
│   ├── 022 List Rendering.mp4
│   ├── 009 Binding Attributes_en.srt
│   ├── 018 section-2-18-STARTER.zip
│   ├── 002 Vue Dev Tools_en.srt
│   ├── 002 Vue-Dev-Tools-Installation.url
│   ├── 003 Working with Data_en.srt
│   ├── 001 Getting Started.srt
│   ├── 007 Directives.srt
│   ├── 020 Conditional Rendering.srt
│   ├── 005 Accessing the Instance Data.mp4
│   ├── 013 Event Modifiers.srt
│   ├── 010 Outputting Raw HTML_en.srt
│   ├── 012 Passing on Data with Events.mp4
│   ├── 014 Keyboard Events and Modifiers.mp4
│   ├── 020 section-2-20-STARTER.zip
│   ├── 010 Outputting Raw HTML.srt
│   ├── 006 Methods_en.srt
│   ├── 001 section-2-1-COMPLETE.zip
│   ├── 016 Computed-Properties.url
│   ├── 013 Event Modifiers_en.srt
│   ├── 017 Watchers.srt
│   ├── 004 Multiple Vue Instances.srt
│   ├── 020 Conditional Rendering_en.srt
│   ├── 008 Two-way data binding_en.srt
│   ├── 004 Multiple Vue Instances.mp4
│   ├── 012 Passing on Data with Events_en.srt
│   ├── 023 Understanding the role of the key attribute_en.srt
│   ├── 007 Directives_en.srt
│   ├── 013 Event Modifiers.mp4
│   ├── 018 Binding Classes_en.srt
│   ├── 017 Watchers.mp4
│   ├── 001 Getting Started_en.srt
│   ├── 021 section-2-21-COMPLETE.zip
│   ├── 025 Endorsements On LinkedIN.html
│   ├── 015 v-model Modifiers.srt
│   ├── 015 v-model Modifiers_en.srt
│   ├── 001 Getting Started.mp4
│   ├── 004 Multiple Vue Instances_en.srt
│   ├── 016 Computed Properties.srt
│   ├── 017 Watchers_en.srt
│   ├── 023 Understanding the role of the key attribute.mp4
│   ├── 018 Binding Classes.srt
│   ├── 014 Keyboard Events and Modifiers.srt
│   ├── 024 Web Developer Monthly.html
│   ├── 005 Accessing the Instance Data_en.srt
│   ├── 019 Classes-and-Stylings.url
│   ├── 003 Working with Data.srt
│   ├── 011 section-2-11-COMPLETE.zip
│   ├── 017 section-2-17-COMPLETE.zip
│   ├── 019 Binding Styles.srt
│   ├── 013 Event-Modifiers.url
│   ├── 019 section-2-19-COMPLETE.zip
│   ├── 011 Listening to Events.mp4
│   ├── 023 Understanding the role of the key attribute.srt
│   ├── external-links.txt
│   ├── 022 List Rendering_en.srt
│   ├── 001 section-2-1-STARTER.zip
│   ├── 003 Working with Data.mp4
│   ├── 023 section-2-23-COMPLETE.zip
│   ├── 021 Conditional-Rendering.url
│   ├── 021 The v-show Directive.mp4
│   ├── 006 Methods.srt
│   ├── 022 section-2-22-STARTER.zip
│   ├── 022 List Rendering.srt
│   ├── 009 Binding Attributes.mp4
│   ├── 008 Two-way data binding.mp4
│   ├── 002 Vue Dev Tools.srt
│   ├── 021 The v-show Directive_en.srt
│   ├── 010 Outputting Raw HTML.mp4
│   ├── 016 Computed Properties.mp4
│   ├── 021 The v-show Directive.srt
│   ├── 020 Conditional Rendering.mp4
│   ├── 011 Listening to Events_en.srt
│   ├── 009 section-2-9-COMPLETE.zip
│   ├── 019 Binding Styles_en.srt
│   ├── 023 section-2-23-STARTER.zip
│   ├── 006 Methods.mp4
│   ├── 015 v-model Modifiers.mp4
│   ├── 014 Key-Modifiers.url
│   ├── 014 Key-Code.url
│   ├── 011 Listening to Events.srt
│   ├── 019 Binding Styles.mp4
├── 12 - Master Project Routing
│   ├── 011 Guarding Routes.mp4
│   ├── 008 Naming Routes_en.srt
│   ├── 005 Navigating with Links.mp4
│   ├── 005 Navigating with Links_en.srt
│   ├── 001 Understanding Routing.mp4
│   ├── 011 Navigation-Guard.url
│   ├── 015 Route Meta Fields.srt
│   ├── 007 Tailwind Styles for Active Links.mp4
│   ├── 012 Route Specific Guards.mp4
│   ├── 003 Creating Routes_en.srt
│   ├── 002 Reviewing the Router Configuration.mp4
│   ├── 011 Guarding Routes_en.srt
│   ├── 002 Reviewing the Router Configuration_en.srt
│   ├── 012 Route Specific Guards.srt
│   ├── 005 Navigating with Links.srt
│   ├── 006 Custom Links.mp4
│   ├── 014 Redirecting after Logging Out_en.srt
│   ├── 003 Creating Routes.srt
│   ├── 015 Route-Meta-Fields.url
│   ├── 013 Guarding Authentication Only Routes.srt
│   ├── external-links.txt
│   ├── 015 Route Meta Fields.mp4
│   ├── 013 Guarding Authentication Only Routes_en.srt
│   ├── 007 Tailwind Styles for Active Links.srt
│   ├── 008 Naming Routes.mp4
│   ├── 010 Route Alias.srt
│   ├── 004 History Mode_en.srt
│   ├── 006 Custom Links.srt
│   ├── 001 Understanding Routing_en.srt
│   ├── 010 Route Alias.mp4
│   ├── 004 History Mode.mp4
│   ├── 004 History-API.url
│   ├── 013 Guarding Authentication Only Routes.mp4
│   ├── 004 History Mode.srt
│   ├── 009 Setting up “Catch-All” and Redirect Routes.srt
│   ├── 007 API-Reference.url
│   ├── 008 Naming Routes.srt
│   ├── 013 Navigation-Guard.url
│   ├── 011 Guarding Routes.srt
│   ├── 014 Redirecting after Logging Out.mp4
│   ├── 007 Tailwind Styles for Active Links_en.srt
│   ├── 012 Route Specific Guards_en.srt
│   ├── 004 History-Mode.url
│   ├── 002 Reviewing the Router Configuration.srt
│   ├── 015 Route Meta Fields_en.srt
│   ├── 001 Vue-Router.url
│   ├── 003 Creating Routes.mp4
│   ├── 014 Redirecting after Logging Out.srt
│   ├── 001 Understanding Routing.srt
│   ├── 009 Setting up “Catch-All” and Redirect Routes_en.srt
│   ├── 010 Route Alias_en.srt
│   ├── 002 Env-Variables.url
│   ├── 015 music-12-15-COMPLETED.zip
│   ├── 006 Custom Links_en.srt
├── 21 - Composition API
│   ├── 002 Mixins.url
│   ├── 004 The Reactive Function.srt
│   ├── 008 Template Refs.srt
│   ├── 012 section-21-12-COMPLETE.zip
│   ├── 001 The Composition API.mp4
│   ├── 013 Verifying Reactivity_en.srt
│   ├── 001 The Composition API.srt
│   ├── 005 Watchers and Computed Properties.mp4
│   ├── 012 Pinia Hooks_en.srt
│   ├── 013 Verifying Reactivity.srt
│   ├── 014 section-21-14-COMPLETE.zip
│   ├── 009 Emitting Events_en.srt
│   ├── 002 Mixins_en.srt
│   ├── 004 The Reactive Function.mp4
│   ├── 002 section-21-2-STARTER.zip
│   ├── 010 section-21-10-COMPLETE.zip
│   ├── 011 Router Hooks.srt
│   ├── 004 Refs-vs-Reactive.url
│   ├── 008 Template Refs_en.srt
│   ├── 005 Watchers and Computed Properties_en.srt
│   ├── 009 Emitting Events.srt
│   ├── 007 Props.mp4
│   ├── 003 Reactive References.srt
│   ├── 002 Mixins.mp4
│   ├── 012 Pinia Hooks.srt
│   ├── 011 Router Hooks_en.srt
│   ├── 004 The Reactive Function_en.srt
│   ├── 014 The setup Attribute.mp4
│   ├── 014 The setup Attribute_en.srt
│   ├── 007 Props_en.srt
│   ├── 008 Template Refs.mp4
│   ├── 007 Props.srt
│   ├── 009 Emitting Events.mp4
│   ├── 010 Advantages of the Composition API.srt
│   ├── 002 Mixins.srt
│   ├── 011 section-21-11-STARTER.zip
│   ├── 014 The setup Attribute.srt
│   ├── 010 Advantages of the Composition API.mp4
│   ├── 005 Watchers and Computed Properties.srt
│   ├── 003 Reactive References.mp4
│   ├── external-links.txt
│   ├── 006 Lifecycle Functions.mp4
│   ├── 003 section-21-3-STARTER.zip
│   ├── 006 Lifecycle Functions_en.srt
│   ├── 001 The Composition API_en.srt
│   ├── 013 Verifying Reactivity.mp4
│   ├── 003 Reactive References_en.srt
│   ├── 010 Advantages of the Composition API_en.srt
│   ├── 006 Lifecycle Functions.srt
│   ├── 012 Pinia Hooks.mp4
│   ├── 011 Router Hooks.mp4

网盘实图

图片[1]-Vue3开发训练营: 从入门到精通,构建企业级应用程序-青知木杂货铺

以下是本课程将涵盖的内容

1. 基础知识——在本节中,我们将学习 Vue 的基础知识,例如计算属性、方法和观察者。仅使用基础知识,我们就能够使用事件、绑定和条件渲染来操作文档。我们还将学习如何使用官方的 Vue 开发者工具来调试应用程序。

2. 项目:透视游乐场——在本节中,我们将通过创建一个 CSS 透视游乐场来构建我们的第一个项目。这将使我们有机会通过开发一个可视化 CSS 属性如何操纵元素视角的工具来强化我们在上一节中学到的许多基本概念。

3. 超越基础——在本节中,我们将深入了解 Vue 框架的内部工作原理。JavaScript 框架如何增加响应性?Vue 如何将模板编译成虚拟 DOM 对象?这将使我们深入了解 Vue 如何能够为现代应用程序提供框架。我们还将讨论生命周期钩子和组件。

4. 学习工具 –在本节中,我们将退后一步,讨论一些用于开发应用程序的工具。在您的整个职业生涯中,您将需要处理帮助我们开发应用程序的工具(即 Vite、Sass、PostCSS、ESLint)。我们将讨论如何配置这些工具以及为什么它们是必要的。

5. 高级组件 –在本节中,我们将使用 Vite 搭建一个 Vue 项目。Vue 的目标是让开发体验尽可能顺畅和无痛。Vue 可以帮助我们搭建项目、配置工具和运行服务器。这减轻了 Web 开发中许多更繁琐的任务。我们将能够直接跳到组件,看看我们如何通过使用道具、发射事件、插槽和动态呈现内容来构建具有组件的应用程序。

6. 过渡和动画 –在本节中,我们将学习如何通过添加过渡和动画来为应用程序添加一些魅力。动画可以为任何应用程序注入活力。他们还可以通过向用户提供有关其行为的反馈来改善用户体验。我们将讨论如何使用 CSS 和 JavaScript 实现动画。两者都在 Vue 中得到支持。我们甚至会讨论最新的 Web Animations API。

7. 项目:测验应用程序 –在本节中,我们将利用迄今为止所学的一切来开发测验应用程序。测验是让用户参与几乎所有行业的好方法。

8. 主项目:PINIA 简介 –在本节中,我们将开始研究本课程的主项目,这是一个音乐应用程序!不间断地上传、管理和听音乐。我们将使用 TailwindCSS 来帮助我们设计一个漂亮的现代应用程序。前端开发社区正在接受新的孩子。之后,我们将通过使用名为 PINIA 的官方状态库(在较新的代码库中替换 Vuex)来了解状态管理。

9. 主项目:表单验证 –在本节中,我们将执行表单验证以防止提交无效数据。意外发生。确保检查错误是我们的工作。我们将学习如何为各种场景强制执行规则。

10. 主项目:认证 –在本节中,我们将开始认证和注册。用户在注册帐户后将能够立即登录。我们将使用 Firebase 作为管理和验证用户的后端解决方案。

11. 主项目:路由 –在本节中,我们将使用 Vue Router 库处理路由。下面,路由器库使用历史 API 来处理导航。它允许我们在页面之间切换而无需刷新资产。我们将看看如何使用这个库来帮助我们保护路由、添加元字段以及根据当前路由自定义网站的外观。

12. 主项目:上传文件 –在本节中,我们将开始将文件上传到 Firebase。我们使用 Firebase 验证文件至关重要。我们不希望用户在听音乐时意外下载恶意文件。我们将介绍如何使用 Firebase 规则执行验证。这样做之后,我们将在数据库中存储附加信息。我们甚至会介绍如何在拖放不可用的情况下实施后备解决方案。

13. 主项目:播放音乐 –在本节中,我们将开始制作音频播放器。我们将实现基本功能,例如播放/暂停、擦洗和显示当前持续时间。我们将通过允许用户提交评论、浏览音乐和排序数据来使站点的其余部分正常运行。

14. 主项目:指令 –在本节中,我们将简要了解如何编写自定义指令。指令是可以使用附加属性和方法扩展元素的属性。我们将介绍基础知识并研究高级概念,例如修饰符和参数。

15. 主项目:国际化 –在本节中,我们将向项目添加国际化,以便跨多种语言翻译项目。翻译消息有不同的方法。有些消息需要格式化或复数形式。我们还可以翻译数字(即货币)。我们将看看如何用几行代码在语言之间切换。

16. 主项目:PWA –网络已经转向移动优先的方法。在本节中,我们将添加 PWA(渐进式 Web 应用程序)功能,通过使用 Workbox 缓存文件并使用 Firebase 持久化数据,使我们的应用程序对移动设备友好。

17. 主项目:优化 –在本节中,我们将在将我们的应用程序投入生产之前进行一些最终优化。我们将研究各种技术和工具来帮助我们微调我们的应用程序。我们可以使用 Vite 来分块文件和自动注册组件。我们将添加一些功能来帮助用户了解应用正在处理友好用户体验的请求。

18. 主项目:部署 –在本节中,我们将使用一个命令将我们的应用程序部署到 Vercel!快捷方便。

19. 主项目:测试 –在本节中,我们将讨论如何使用 Vitest 测试项目。单元测试允许我们单独测试一个特性。这是您将编写的最常见的测试类型。测试中有一些问题可以通过模拟来解决。通过模拟代码,我们将能够隔离功能并对其进行测试。之后,我们将继续进行快照测试和 E2E 测试,以将所有内容整合在一起。

20. COMPOSITION API –在本节中,我们将讨论 Vue 中引入的最新特性,称为组合 API。这是构建组件的不同方式。虽然 Vue 提供了一个简单的 API 来编写组件,但也有一些缺点。组合 API 解决了这些问题。我们将讨论您为什么要使用组合 API 并了解引入它的原因。

本课程不是让您在不了解原理的情况下编写代码,这样当您完成课程后,除了观看另一个教程之外,您不知道该做什么。不!本课程将推动您并挑战您从 Vue 的绝对初学者转变为 Vue 开发人员中排名前 10% 的人。 

我们向您保证这是最全面的 Vue JS 在线课程!观看课程大纲视频,了解我们将要涵盖的所有主题、我们将要构建的所有项目,以及成为顶级 Vue 开发人员需要学习的所有技术!


——本文章内容已结束——
Vue3开发训练营: 从入门到精通,构建企业级应用程序-青知木杂货铺
Vue3开发训练营: 从入门到精通,构建企业级应用程序
此内容为付费资源,请付费后查看
金币4.99
限时特惠
金币19.99
立即购买
您当前未登录!建议登陆后购买,可保存购买订单
付费资源
已售 22
© 版权声明
THE END
喜欢就支持一下吧
点赞27 分享