前端知识点总结-vue

一.  框架和库的区别

  框架(framework) :有着自己的语法特点,都有对应的各个模块。

  库(library):专注于一点

  框架的好处:

     提高代码的质量,开发速度

   提高代码的复用率

    降低模块之间的耦合度(高内聚低耦合)

二 .  Vue的概述

  1. what 是一个渐进式的构建用户界面的js框架

  2. where 小道的简单的表单处理,大到复杂的数据操作比较频繁的单页面应用程序

  3. why 

    方便阅读的中文文档

    容易上手(学习曲线比较缓和)

    体积小

    基于组件化的开发方式

    代码的可读性、可维护性得到了提高

4.how 工作方式:可以通过丰富的指令扩展模板,可以通过各种各样的插件来增强功能

三. 环境的搭建

  方式一:

  全局安装:npm install --global vue-cli

  创建一个基于webpack模板的新项目:

    npm init webpack my-project  

    cd my-project

    npm install

    npm run dev

  方式二:直接引入对应的js文件

四. vue中的基础知识

  1. 双花括号(模板语法)

    mustache/interpolation(插值表达式)

    <any> {{表达式}} </any>

    作用:将表达式执行的结果输出当前调用元素的innerHTML中,还可以将数据绑定到视图

    注意:出现会出现双花括号闪烁问题。页面还没有加载到数据的时候就显示了原花括号

    解决:

      1. <any v-cloak>{{表达式}}</any> 结合css  [v-cloak] {display:none} 

      2. <any v-text=‘变量’></any>

      3. <any v-html='变量'></any>

  2. 指令

    2.1 循环指令

     基本语法1: <any v-for='tmp in arr '></any>

     基本语法2:<any v-for='(value,index) in array'></any>

     作用:在遍历array这个集合时,将临时变量保存在tmp中,创建多个any标签,也可以遍历对象。

    2.2 选择指令

     语法:

     <any v-if='表达式'></any>

     <any v-else-if='表达式'></any>

     <any v-else></any>

     作用:根据表达式执行的结果的真假,来决定是否要将当前的这个元素挂载到DOM数上,还有v-show,v-if是重新渲染,v-show只控制显示和隐藏

    2.3 事件绑定  

     基本语法:<any v-on:eventName='handleEvent'></any>

     补充,支持简写:<any @eventName='handleEvent'></any>

     作用:给指定的元素将handleEvent的方法绑定给指定的eventName事件上

    2.4 属性绑定

     基本语法:<any v-bind:myProp='表达式'></any>

     补充,支持简写:<any :myProp='表达式'></any>

     作用:将表达式执行的结果绑定到当前的元素myProp属性上

    2.5 动态样式绑定

     <any :style='{backgroudColor:myBGColor}'>动态样式绑定</any>

     <any :class='{myRed:false}'></any>

    2.6 双向数据绑定

      方向1:数据绑定到视图

      方向2: 将视图中(表单元素)用户操作的结果绑定到数据中

      基本语法:<表单元素 v-model='变量'></表单元素>

      原理:就是使用访问器属性的getter和setter方法

 3. 组件化

  组件:组件就是可被反复使用的,带有特定功能的视图。

  所谓的组件化,就像玩积木一样,把封装的组件进行复用,把积木(组件)拼接在一起,构成一个复杂的页面应用程序。

  组件数就是各个组件构成的一种数据结构,他存在的意义是为了帮梳理应用程序。  

  3.1 组件的创建

    全局组件: Vue.component('my-com',{

          template:`<div>我是全局组件</div>`

         })

    局部组件:new Vue({

          components:{

            'my-com':{

              template:''

            }

          }

         })

  3.2 组件使用

    作为普通的标签使用<my-com></my-com>

  3.3 注意事项

    组件的id和使用方式:遵循烤串式命名方式:a-b-c

    如果一个组件要渲染多个元素,将多个元素放在一个顶层标签中,比如div,form

    全局组件可以用在id为example的范围内的任何一个组件内部,直接调用即可,但是局部组件只能在父模板中直接调用。  

4. 自定义指令

 创建:

 Vue.directive('change',{

  bind(el,binding){

    首次调用

  },

  inserted(el,binding){

    被绑元素插入父元素

  },

  update(el,binding){

    只要是有数据变化,都会调用

  },

  unbind(el,binding){

    解绑

  }

 })

 使用:<any v-change></any>

5. 过滤器

  过滤器是针对一些数据,进行筛选、过滤、格式化等相关的处理,变成我们想要的数据,过滤器的本质就是一个带有参数返回值的方法,vue1.*支持内置的过滤器,但是Vue2.*就不再内置过滤器,但是支持自定义过滤器。

  5.1 创建

    Vue.filter('myFilter',(myInput)=>{

      //myInput是在调用过滤器时,管道前表达式的执行结果吗、

      //针对myInput,按照业务需求做处理

      //返回 return '处理后的结果'

    })

  5.2. 使用

     <any>{{expression | myFilter}}</any>

  5.3 如何在调用过滤器时,完成参数的发送和接受

    发送:<any>{{expression | myFilter('参数1','参数2')}}</any>

    接受:Vue.filter('myFilter',(myInput,参数1,参数2)=>{

                        return  处理后的结果

       })

6. 生命周期

 四个阶段:

  create : 准备工作(数据的初始化)

  mount : 挂载前后针对元素进行的操作

  update : 数据发生变化

  destroy : 清理工作(关闭定时器,集合清空)

  beforeCreate / created

  beforeMount / mounted

  beforeUpdate / updated

  beforeDestroy / destroyed

7. 常用属性

  7.1 watch 

    表单元素的双向数据绑定 v-model='myValue'

    监听:

    watch:{

      myValue(newVal,oldVal){ }

    }

  7.2 computed

    计算属性是用于在模板中,搞定复杂的业务逻辑,因为有依赖缓存

    指定计算属性:

    computed:{

      myHandle(){

         return '返回的数据'

      }

    }

    调用:<any> {{myHandle}} </any>

8. 组件间通信

  8.1 父与子通信 (props down)

    发送 <son myName='zhangsan'></son>

    接受到son组件:

      Vue.component('son',{

        props:['myName'],

        template:`<p>{{myName}}</p>`

      })    

  8.2 子与父通信 (events up)

    绑定

    methods:{

      handleEvent:function(msg){}

    }

    <son @customEvent="handleEvent"></son>

    触发

    子组件内部 : this.$emit(‘customEvent’,100);

  8.3 ref(reference 引用/参考 外号)

    帮助在父组件中得到子组件中的数据、方法。

    1. 指定ref属性 <son ref="mySon"></son>

    2.根据ref得到子组件实例 this.$refs.mySon

  8.4 $parent

    this.$parent得到父组件的实例

  8.5 兄弟组件通信

    var bus = new Vue();

    接收方 bus.$on('eventName',function(msg){})

    发送方 bus.$emit('eventName',123);

9. 补充组件的创建方式

  9.1 全局组件

     Vue.component

  9.2 局部组件

     components:{

       'my-footer':{template:``}

     }  

  9.3 .vue结尾的文件

    <template></template>

    <script></script>

    <style></style>

  9.4  单独指定一个模板内容

    <script type='text/x-template' id =''my-content'></script>

    Vue.component( 'my-contnet',{

      template:'#my-content'

    })

五. 路由模块

  路由模块的本质 就是建立起url和页面之间的映射关系。

  5.1  SPA的工作原理

    SPA:single page application 单一页面应用程序,只有一个完整的页面;它在加载页面时,不会加载整个页面,而是只更新某个指定的容器中内容,比如Gmail、移动的webApp。

    工作原理:

      解析地址栏:完整的页面地址、路由地址

      根据路由地址从路由词典中找到真正的要加载的页面

      发起ajax请求:请求要加载的页面

      指定的容器中插入加载来的页面

   5.2 路由模块的基本功能

    专业术语:        

       router路由器

               route路由

               routes 路由数组(路由词典)

   5.3 基本使用

       1. 引入vue-route.js 或者npm install vue-route

     2. 指定路由出口:<router-view></router-view>

               3. 创建业务所需要的组件类 Vue.component(),或者import进来

     4. 配置路由词典

      const routes=[

        {path:'/login',component:myLogin}

      ] ;

      const myRouter = new VueRouter({routes})

      new Vue({

        el:' #container',

         router: myRouter

      })

     5. 测试:修改地址栏中的url,测试看加载的组件是否正确

     6. 使用路由来进行页面跳转的方式

      直接修改地址栏中的url

      使用this.$touter.path('路由地址')

      <router-link to='路由地址'></router-link>

     7. 如何完成参数的传递

      在页面之间跳转的时候,在有些场景下,需要同时指定参数

      明确发送方和接收方:list --20--> detail

      配置接收方的路由地址:/detail --》 /detail/:index   this.$route.params.index

      发送: routerLink to="/detail/20"   this.$router.push('/detail/20')

     8. 路由的嵌套

      在一个路由中,path对应一个component,如果这个component需要根据不同的url再加载其他的component,称之为路由的嵌套

      举例:比如A组件现在需要根据不同的url,加载B组件或者C组件

      1. 给A组件指定一个容器 

       <router-view><router-view>

      2. [

        {

          path: ' ',

          component:myLogin,

          children:[

            path:'/child',

            component:myChild

          ]

        }

       ]

      

     

 

  

    

    

 

  

 

  

转载于:https://www.cnblogs.com/xiezaizheli/p/8542843.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值