2018.9.6 关于对前端框架Vue.js的理解

晚上19.35又是一个安静的夜晚,趁着安静,赶紧过来csdn总结一下今天学到vue的知识。

首先了解一个新的东西,必须了解它是什么,能干什么。这是我比较深刻的体会。

什么是Vue.js:

 *** vue.js:是目前最火的框架(关注的人是最多的),而react是目前最流行的框架(使用的人数是最多的),React除了可以开发网站,还可以开发手机APP,Vue也是可以开发手机APP 的,但是需要借助Weex。

  ***Vue.js 是前端的**主流框架之一**,和Angular.js、React.js 一起,并成为前端三大主流框架!

  ***Vue.js 是一套构建用户界面的框架,**只关注视图层**,它不仅易于上手,还便于与第三方库或既有项目整合。(Vue有配套的第三方类库,可以整合起来做大型项目的开发。

  ***前端的主要工作?主要负责MVC中的V这一层;主要工作就是和界面打交道,来制作前端页面效果;

为什么要学习前端框架Vue.js:

  ***在企业中为了提高开发效率,从而来使用框架进行提神开发的效率。

  ***能够帮助我们减少不必要的DOM操作;提高渲染效率;双向数据绑定的概念通过框架提供的指令,我们前端程序员只需要关心数据的业务逻辑,不再关心DOM是如何渲染的了。

  ***在Vue中,一个核心的概念,就是让用户不再操作DOM元素,解放了用户的双手,让程序员可以更多的时间去关注业务逻辑;

框架和库的区别

  ***框架:是一套完整的解决方案;对项目的入侵较大,项目如果需要更换框架,则需要重新架构整个项目。

  ***库:其实就是插件,提供一些小的功能,对项目入侵比较小,如果有的库完成不了某些需求,可以很容易的切换到其他的实现需求。

Node(后端)中的MVC与前端中MVVM之间有什么区别:

  ***MVC 是后端的分层开发概念。

  ***MVVM是前端视图层的概念,主要关注在于视图层进行分离,也就是说:MVVM把前端的视图层分为了三部分 Model,View, ViewModel.

如何使用Vue.js呢:如下

关于标签 v-cloak还有v-text理解:

v-cloak:能够解决所有差值表达式因为网速慢导致表达式闪烁的问题,也可以在msg的前后添加任何的数据,不会进行覆盖。

v-text:本身就默认没有闪烁问题的,但是因为v-text在标签里面,当解析到这里的时候,会先执行标签里的内容,导致123倍覆盖

v-html:能够把转义的标签(就是字符串)变成html的标签

举个小栗子:

  var vm=new Vue({

  el:'#app',

  data:{

  msg:'<h1>哈哈哈,记得每天保持好心情哦!</h1>'

}

})

//接下来使用v-html来进行得到h1标签,而不是字符串:

<div id="app">

<div v-html="msg"></div>

</div>

这样就会在客户端显示出h1标题的打字了 

要是没有使用v-html的话输出是这样子的:<h1>哈哈哈,记得每天保持好心情哦!</h1> 的字符串

v-bind:可以用来绑定属性指令的变量;

举个小栗子:

  var vm=new Vue({

  el:'#app',

  data:{

  mytitle:'这是我自定义的标签’

}

})

<div id="#app">

<input type="button" value="按钮" v-bind:title="mytitle+'强哥'/>

</div>

结果在在页面上有一个按钮,鼠标放上去会显示一句话:这是我自定义标签强哥。

此外v-bind还可以进行简写:<input type="button" value="按钮"  :title="mytitle+'强哥'/>

<!--v-bind:指令可以被简写为 :要绑定的属性-->

<!--v-bind 中可以写合法的js表达式-->

先小小的总结一下:

  ***1.如何定义一个基本的Vue代码结构

       ***首先先导入架包<script src="./vue-2.4.0.js"></script>

       ***然后在创建Vue 的最基本的结构:

            ***var vm=new Vue({

                  el:'#app' ,   //表示要控制的区域

                 data:{   //data存放的是我们el中要使用的数据

                         msg:'welcome'

                        },

                   methods:{  //它用来定义Vue属性可用的方法

                                 show:function(){

                                                                  alert("hello!")

                                                                  }

                                  }

})

***2.差值表达式{{}} 和v-text

***3.v-cloak

***4.v-html

***5.v-bind  Vue提供事件绑定机制   缩写是  :

***6.v-on    Vue提供方法绑定机制    缩写是  @:

2018.9.7 晚上八点整 接上

Vue的事件修饰符:

  *** .stop:阻止冒泡(就是指一层一层的进行显示)

       <input type="button" value="点我" @click.stop="onclick">    //这个按钮点击后就不会再往外执行啦 这就是阻止冒泡

  *** .prevent:阻止默认事件

       <a href="www.baidu.com" @click.stop="onclick">百度一下,你就知道!</a>    //这个阻止默认事件就是 不会再去访问百度

  *** .capture :添加事件监听器的时候使用事件捕获模式

       <div class="inner" @click.capture></div>     //这个是添加监听器时默认使用监听器的捕获模式

  *** .self :只当事件在该元素(比如不是子元素)触发时进行回调

       <div class="inner" @click.self="divHeader"></div>

  ***  .once:事件只触发一次

vue的双向绑定 v-model

  ***首先需要说明的是v-bind无法进行双向的绑定,只能从M到V 

  ***v-model:就可以实现双向数据的绑定,但是v-model只能用于表单数据中input(radio,text,address,email......) select checkbox textarea等元素。

 示例代码:<input type="text" v-model="msg" style="width:100%">

现在使用v-model来写一个简易的计算器:

  ***界面如图所示(里面有水印,不要在意那些细节)

代码实现:

<html>

<head>

  <script src="./vue-.2.4.0.js"><scritp>

</head>

<body>

<div id="app">

  <input type="text" v-model="n1">

  <select v-model="opt">

               <option value="+">+</option>

               <option value="-">-</option>

               <option value="*">*</option>

                <option value="/">/</option>

  </select>

   <input type="text" v-model="n2">

  <input type="button" name="="   :click="jisuan">

  <input type="text" v-model="result">

</div>

  var vm=new Vue({

         el:'#app',

         data:{

                n1:'0',

                opt:'+',

               n2:'0',

             result:'0'

                },

         methods:{

                      jisuan(){ 

                                 switch(this.opt)

                                                      case:+

                                                             this.result=parseInt(this.n1)+parseInt(this.n2)

                                                         break;

                                }

                  }

}) 

</body>

</html>

在vue中使用格式

### 使用class样式

1. 数组
<h1 :class="['red', 'thin']">这是一个邪恶的H1</h1>

2. 数组中使用三元表达式
<h1 :class="['red', 'thin', isactive?'active':'']">这是一个邪恶的H1</h1>

3. 数组中嵌套对象
<h1 :class="['red', 'thin', {'active': isactive}]">这是一个邪恶的H1</h1>

4. 直接使用对象
<h1 :class="{red:true, italic:true, active:true, thin:true}">这是一个邪恶的H1</h1>

### 使用内联样式
1. 直接在元素上通过 `:style` 的形式,书写样式对象
<h1 :style="{color: 'red', 'font-size': '40px'}">这是一个善良的H1</h1>

2. 将样式对象,定义到 `data` 中,并直接引用到 `:style` 中 + 在data上定义样式:
data: {
        h1StyleObj: { color: 'red', 'font-size': '40px', 'font-weight': '200' }
}
 + 在元素中,通过属性绑定的形式,将样式对象应用到元素中:
<h1 :style="h1StyleObj">这是一个善良的H1</h1>

3. 在 `:style` 中通过数组,引用多个 `data` 上的样式对象
 + 在data上定义样式:
data: {
        h1StyleObj: { color: 'red', 'font-size': '40px', 'font-weight': '200' },
        h1StyleObj2: { fontStyle: 'italic' }
}
 + 在元素中,通过属性绑定的形式,将样式对象应用到元素中:
<h1 :style="[h1StyleObj, h1StyleObj2]">这是一个善良的H1</h1>


## Vue指令之`v-for`和`key`属性

  ***1.进行迭代对象中的属性

       ***<div v-for="(value,key,i)" in userInfo>键是:{{key}}---值是:{{value}} ---索引下标是:{{i}}   //进行遍历对象属性身上的属性

  ***2.进行迭代数组

       ***<p v-for="(item,i)in list">index:{{i}}--------value:{{item}}</p>

  ***3.用来迭代数字

      ***<p v-for="i in 10">这是第{{i}}个标签</p>

  ***2.2.0+ 的版本里,**当在组件中使用** v-for 时,key 现在是必须的。通过key来唯一标识。


## Vue指令之`v-if`和`v-show`

> 一般来说,v-if 有更高的切换消耗而 v-show 有更高的初始渲染消耗。因此,如果需要频繁切换 v-show 较好,如果在运行时条件不大可能改变 v-if 较好。

猜你喜欢

转载自blog.csdn.net/HANGSOME123/article/details/82466876