Vue全家桶系列【vue3更新中.....】

摘要:
Vue2.x:官方网站地址:https://cn.vuejs.org/GitHub地址:https://github.com/vuejs/vueCDN地址:https://cdn.jsdelivr.net/npm/vue/dist/vue.jsVue3.x:官方网站地址:https://v3.cn.vuejs.org/GitHub地址:https://github.com/vuejs/vue-nextCDN地址:2.MVVM模型。MVC和MVVM都是软件架构,但整个设计都受其启发。3.Vue2快速入门。代码实践{{message}}varapp=newVue({el:'#app',数据:{message:'HelloVue2!

一. 简介

 1. 说明

  Vue (读音 /vjuː/,类似于 view) 是一套用于构建用户界面的渐进式框架。与其它大型框架不同的是,Vue 被设计为可以自底向上逐层应用。Vue 的核心库只关注视图层,不仅易于上手,还便于与第三方库或既有项目整合。另一方面,当与现代化的工具链以及各种支持类库结合使用时,Vue 也完全能够为复杂的单页应用提供驱动。

Vue2.x :

  官网地址:https://cn.vuejs.org/

  GitHub地址:https://github.com/vuejs/vue

  CDN地址:https://cdn.jsdelivr.net/npm/vue/dist/vue.js

Vue3.x:

  官网地址:https://v3.cn.vuejs.org/  

  GitHub地址:https://github.com/vuejs/vue-next

  CDN地址:<script src="https://unpkg.com/vue@next"></script>

2. MVVM模型

(1). MVC和MVVM都是一种软件的体系结构

 MVC是Model – View –Controller的简称,是在前期被使用非常框架的架构模式,比如iOS、前端;

 MVVM是Model-View-ViewModel的简称,是目前非常流行的架构模式;

(2). 通常情况下,我们也经常称Vue是一个MVVM的框架。

 Vue官方其实有说明,Vue虽然并没有完全遵守MVVM的模型,但是整个设计是受到它的启发的  (Dom部分是View,Script部分中代码是Model,Vue是VM)

Vue全家桶系列【vue3更新中.....】第1张

3. Vue2快速入门

(1). 代码实操

<body>
    <div id="app">
        {{message}}
    </div>
    <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script> 
    <script>
        var app = new Vue({
            el: '#app',
            data: {
                message: 'Hello Vue2!'
            }
        })
    </script>
</body>

(2). 运行结果

Vue全家桶系列【vue3更新中.....】第2张

3. Vue3快速入门

(1). 代码实操

<body>
    <div id="app">{{message}}</div>
    <script src="https://unpkg.com/vue@next"></script> 
    <script>
         Vue.createApp({
             data() {
                return {
                  message: 'Hello Vue3!'
                }
             }
         }).mount('#app');        
    </script>
</body>

(2). 运行结果

 Vue全家桶系列【vue3更新中.....】第3张

二. 走向Vue3

1.  源码

(1). 源码通过monorepo的形式来管理源代码:

 Mono:单个

 Repo:repository仓库

 主要是将许多项目的代码存储在同一个repository中;

 这样做的目的是多个包本身相互独立,可以有自己的功能逻辑、单元测试等,同时又在同一个仓库下方便管理;

 而且模块划分的更加清晰,可维护性、可扩展性更强;

(2). 源码使用TypeScript来进行重写:

 在Vue2.x的时候,Vue使用Flow来进行类型检测;

 在Vue3.x的时候,Vue的源码全部使用TypeScript来进行重构,并且Vue本身对TypeScript支持也更好了;

2. 性能

(1). Vue3 使用Proxy进行数据劫持

 在Vue2.x的时候,Vue2是使用Object.defineProperty来劫持数据的getter和setter方法的;这种方式一致存在一个缺陷就是当给对象添加或者删除属性时,是无法劫持和监听的;所以在Vue2.x的时候,不得不提供一些特殊的API,比如$set或$delete,事实上都是一些hack方法,也增加了开发者学习新的API的成本;

 而在Vue3.x开始,Vue使用Proxy来实现数据的劫持,这个API的用法和相关的原理我也会在后续讲到;

(2). 删除了一些不必要的API:

 移除了实例上的$on, $off 和 $once;

 移除了一些特性:如filter、内联模板等;

(3). 包括编译方面的优化:

 生成Block Tree、Slot编译优化、diff算法优化;

3. 新Api

(1). 由Options API 到 Composition API:

 在Vue2.x的时候,我们会通过Options API来描述组件对象;Options API包括data、props、methods、computed、生命周期等等这些选项;存在比较大的问题是多个逻辑可能是在不同的地方:比如created中会使用某一个method来修改data的数据,代码的内聚性非常差;

 在Vue3.x的时候,Composition API可以将 相关联的代码 放到同一处 进行处理,而不需要在多个Options之间寻找;

(2). Hooks函数增加代码的复用性:

 在Vue2.x的时候,我们通常通过mixins在多个组件之间共享逻辑;但是有一个很大的缺陷就是 mixins也是由一大堆的Options组成的,并且多个mixins会存在命名冲突的问题;

 在Vue3.x中,我们可以通过Hook函数,来将一部分独立的逻辑抽取出去,并且它们还可以做到是响应式的;

 如何从Vue2迁移到Vue3,详见下面官方文档:

  https://v3.cn.vuejs.org/guide/migration/introduction.html

三. 目录

阶段一:Vue2.x用法

  第一节:Vuejs入门之各种指令

  第二节:  Vuejs常用特性1

  第三节:Vuejs常用特性2和图书案例

  第四节:Vuejs组件及组件之间的交互

  第五节:  前后端交互之Promise用法和Fetch用法

  第六节:前后端交互之axios用法及async异步编程

  第七节:Vuejs路由交互及后台系统路由案例

  第八节:Vue Cli简介/安装、两种Create项目的方式、相关配置说明

  第九节:Vuex简介、基本使用、核心功能(State、Mutation、Action、Getter) 和 案例实战演练

  第十节:基于Vuex实现数据的增删改查的案例剖析分享

  第X节:XXXXXXXXXXXXXXXXXXXXXXXXXXXX

 

阶段二:Vue2.6.11 + Vue-Router3.2 + ElementUI2.15.1 + Vuex 全家桶

  第一节:项目初始化(ElementUI、axios)、Git版本管理、基本环境搭建

  第二节:基础配置(路由、less、静态资源、axios、ESLint)、基础组件(Form、Message) 之登录页面搭建

  第三节:基础组件(Container布局、NavMenu导航) 之 系统主页面搭建

  第四节:基础组件(Breadcrumb、Card、Input、Dialog、Switch、Select、MessageBox) 之 用户管理

  第五节:基础组件(Table、Pagination、Tree、Tag) 之 角色/权限管理

  第六节:基础组件(Cascader/Tab/Steps/Upload/TimeLine/alert) 之 参数/商品/订单

  第七节:扩展组件(lodash/富文本/echart/nprogress) 和 帮助类(日期格式化)

  第八节:项目优化上线之打包、报告分析、删除console、webpack配置、CDN、首页定制、路由懒加载、Express部署和管理

  第X节:XXXXXXXXXXXXXXXXXXXXXXXXXXXX

  第X节:XXXXXXXXXXXXXXXXXXXXXXXXXXXX

阶段三:Vue3.x全家桶(进行中。。。。)

  第一节:代码片段制作、template几种写法、各种场景下的this剖析

  第二节:Vue3向下兼容1(Mustcache v-once text html pre cloak v-bind v-on v-if v-show等等)

  第三节:Vue3向下兼容2(v-for、数组方法、v-model、计算属性、监听器)

  第四节:从源码角度剖析key在diff算法中的作用和Computed源码剖析--未完

  第五节:补充引用类型赋值、浅拷贝、深拷贝、判断中的隐式转化

  第六节:Vue Cli的使用复习 和 Vite入门使用

  第七节:组件入门使用、组件通讯剖析(父传子、子传父、爷传孙、兄弟/任意组件)、对比Vue2.x的传值

  第八节:插槽的基本用法、剖析具名插槽、作用域插槽的使用

  第九节:动态组件和keep-alive缓存、webpack分包和异步组件、引用元素/组件($ref)、组件生命周期、组件v-model

  第十节:复习mixin/extends 和 开启Vue3的Composition Api(setup、reactiveApi、refApi、readonly)

  第十一节:Vue3的Composition Api(toRefs/toRef、customerRef、computed、watchEffect【setup中获取ref】、watch)

  第十二节:Vue3的Composition Api(生命周期、provide/Inject、综合练习-hook封装) 和 setup顶层开发模式

  第十三节:Vue3高级之 render/h函数、jsx、自定义指令、teleport、插件

  第十四节:VueRouter4.x简介、基本用法、路由懒加载(打包分析)、动态路由、路由嵌套、相关Api

  第十五节:VueRouter4.x用法之router-link/router-view的v-slot、动态增删路由、路由导航守卫

  第十六节:Vuex4.x 简介及state、getters、mutations、actions详解(OptionApi 和 CompositionApi)

  第十七节:Vuex4.x 之Module详解(局部状态、命名空间、辅助函数等) 和 补充nexttick用法

  第X节:XXXXXXXXXXXXXXXXXXXXXXXXXXXX

  第X节:XXXXXXXXXXXXXXXXXXXXXXXXXXXX

阶段四:Webpack5系列

  第一节:Webpack简介、安装-配置-打包、常用loader的使用(css/style/less/postcss-loader)

  第二节:Webpack资源模块(替代file/url-loader)、插件使用(Clean/Html/Define/Copy)、mode的配置说明

  第三节:Babel的使用、Webpack集成Babel、单文件Vue打包

  第四节:Webpack本地服务器搭建、剖析devServer的HRM热替换和其它配置、resolve模块解析、区分开发/生产环境方案实战

  第X节:XXXXXXXXXXXXXXXXXXXXXXXXXXXX

  第X节:XXXXXXXXXXXXXXXXXXXXXXXXXXXX

!

  • 作       者 : Yaopengfei(姚鹏飞)
  • 博客地址 : http://www.cnblogs.com/yaopengfei/
  • 声     明1 : 如有错误,欢迎讨论,请勿谩骂^_^。
  • 声     明2 : 原创博客请在转载时保留原文链接或在文章开头加上本人博客地址,否则保留追究法律责任的权利。
 

免责声明:文章转载自《Vue全家桶系列【vue3更新中.....】》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇前端工程化,组件化,模块化,层次化Let's GO(四)下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

前端 vue表格数据导出Excel 文件实现

实现思路 使用json2csv将后台json数据转化为csv格式数据 采用创建Blob(二进制大对象)的方式来存放缓存数据;生成下载链接; 创建一个a标签,设置href和download属性 触发a标签的点击事件实现下载 实现如下: 表格为 <Table :columns="columns" :data="listdata"></Ta...

Vue 计数器

首先.我们先导入vue插件: <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>  然后建立一个<div> <div id="app"> <button>-</button>...

最新的一波Vue实战技巧,不用则已,一用惊人

在Vue中,不同的选项有不同的合并策略,比如 data,props,methods是同名属性覆盖合并,其他直接合并,而生命周期钩子函数则是将同名的函数放到一个数组中,在调用的时候依次调用 在Vue中,提供了一个api, Vue.config.optionMergeStrategies,可以通过这个api去自定义选项的合并策略。 在代码中打印 consol...

Javassist/ASM 框架比较

Javassist: Javassist (Java编程助手)使操作Java字节码变得简单。它是一个用于编辑Java字节码的类库;跟其他类似的字节码编辑器不同的是,它使Java程序能够在运行时定义一个新类,并在JVM加载类文件时修改它。 Javassist提供了两种级别的API:源级别和字节码级别。如果用户使用源代码级API,他们可以不需要了解Jav...

Vue 基础篇二

Vue 组件 组件(Component)是Vue.js最强大的功能之一. 组件可以扩展HTML元素,封装可重用的代码,是可复用的Vue实例. 组件的注册 // html 代码 <div id="app"> <my-component></my-component> </div> // js 代码 Vu...

Vue之项目搭建

  一、Vue自动化工具的安装 nvm:nodejs 版本管理工具。 也就是说:一个 nvm 可以管理很多 node 版本和 npm 版本。 nodejs:在项目开发时的所需要的代码库 npm:nodejs 包管理工具。 在安装的 nodejs 的时候,npm 也会跟着一起安装,它是包管理工具。 npm 管理 nodejs 中的第三方插件   1,安装nv...