vue学习总结

一,相关技术

1.NodeJs

 Node.js 的出现吸引了很多前端开发人员开始用 JavaScript 开发服务器代码,其异步编程风格也深受开发人员的喜爱。Node.js 的伟大不仅在于拓展了 JavaScript 在服务器端的无限可能,更重要的是它构建了一个庞大的生态系统

2.MVVM模式

M:Model,模型,包括数据和一些基本操作

V:View,视图,页面渲染结果

VM:View-Model,模型与视图间的双向操作(无需开发人员干涉)

在MVVM之前,开发人员从后端获取需要的数据模型,然后要通过DOM操作Model渲染到View中。而后当用户操作视图,我们还需要通过DOM获取View中的数据,然后同步到Model中。而MVVM中的VM要做的事情就是把DOM操作完全封装起来,开发人员不用再关心Model和View之间是如何互相影响的:

只要我们Model发生了改变,View上自然就会表现出来。

当用户修改了View,Model中的数据也会跟着改变。

把开发人员从繁琐的DOM操作中解放出来,把关注点放在如何操作Model上.

3.主流前端框架

Vue:vue.js以轻量易用著称

React.js:vue.js和React.js发展速度最快, 集web前端与app于一身技术

AngularJS:曾经很火

二,Vue

1.介绍

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

Vue渐进式的理解:http://www.bslxx.com/a/vue/2017/1205/1490.html

Vue只关注视图层。

Vue通过新的属性(自定义)和{{表达式}}扩展了 HTML。

Vue的目标是通过尽可能简单的 API 实现响应的数据绑定和组合的视图组件。

Vue学习起来非常简单。

2.特性

轻量:Vue.js库的体积非常小的,并且不依赖其他基础库。

数据绑定:对于一些富交互、状态机类似的前端UI界面,数据绑定非常简单、方便。

指令:内置指令统一为(v—*),也可以自定义指令,通过对应表达值的变化就可以修改对应的DOM。

插件化:Vue.js核心不包含Router、AJAX、表单验证等功能,但是可以非常方便地根据需要加载对应插件。

组件化:组件可以扩展 HTML 元素,封装可重用的代码。允许我们使用小型、自包含和通常可复用的组件构建大型应用

 

3.入门

3.1 以本地js或csn直接引入到页面中

3.2 在npm引入vue 命令:npm install vue

4.vue实例对象

4.1  el属性

每个Vue实例通过el配置挂载的标签,该标签可以通过id或者是class挂载。  实例上的属性和方法只能够在当前实例挂载的标签中

使用。

4.2  data属性

Vue实例的数据保存在配置属性data中, data自身也是一个对象

通过Vue实例直接访问和修改data对象中的数据,及时同步的页面上

4.3  methods属性

Vue实例的方法保存在配置属性methods中,methods自身也是一个对象. 该对象中值都是方法体

方法都是被Vue对象调用,所以方法中的this代表Vue对象

4.4  vue的生命周期

每个 Vue 实例在被创建时都要经过一系列的初始化过程 :创建实例,装载模板,渲染模板等等。Vue为生命周期中的每个状态都设置了钩子函数(监听函数)。每当Vue实例处于不同的生命周期时,对应的函数就会被触发调用

5.vue表达式

VueJS表达式写在双大括号内:{{ expression }}。

VueJS表达式把数据绑定到 HTML

VueJS将在表达式书写的位置"输出"数据

VueJS表达式 很像 JavaScript 表达式:它们可以包含文字、运算符和变量实例 {{ 5 + 5 }} 或 {{ firstName + " " + lastName }}

实例 {{ 5 + 5 }} 或 {{ firstName + " " + lastName }}。

6.vue指令

6.1 什么是指令

指令是一个带有v-前缀的特殊标签属性, 指令属性的值预期是单个JavaScript表达式

6.2常见的指令

v-model=“表达式” 数据双向绑定

v-text=“表达式”  设置标签中的文本

V-html=“表达式”  设置标签中的html

V-html=“表达式”  设置标签中的html

V-for=“表达式”   循环

V-on=“表达式”    注册事件

6.3指令的使用

v-model=“表达式” 数据双向绑定:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script src="node_modules/vue/dist/vue.js"></script>
</head>
<body>
    <div id="myDiv">
        <input v-model="hello">

        游泳:<input type="checkbox" v-model="checkboxValue" value="游泳">
        健身:<input type="checkbox" v-model="checkboxValue" value="健身">
        data中的值:{{checkboxValue}}<hr/>

        篮球:<input type="radio" v-model="radioValue" value="篮球">
        乒乓:<input type="radio" v-model="radioValue" value="乒乓">
        data中的值:{{radioValue}}<hr/>


        文本域:<textarea v-model="textAreaValue" value="是什么让你如此自行"></textarea>
        data中的值:{{textAreaValue}}<hr/>

        我精通:<select v-model="skills">
        <option value="java">java</option>
        <option value="php">php</option>
        <option value="python">python</option>
        </select>
        data中的值:{{skills}}<hr/>
    </div>

    <script>
        var myDiv = new Vue({
            el: '#myDiv',
            data: {
                hello:'每个对象都有这么一句话',
                checkboxValue:["游泳"],
                radioValue:'篮球',
                textAreaValue:'寒风刺骨',
                skills:'python'
            }
        });
    </script>
</body>
</html>

v-text=“表达式” 和v-html  设置标签中的文本:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script src="node_modules/vue/dist/vue.js"></script>
</head>
<body>
    <div id="myDiv">
        <!--设置标签中的内容-->
        <span v-text="word"></span>
        <!--设置标签中的内容,如果字符串中存在html标签,能够解析出来-->
        <span v-html="whtml"></span>
    </div>

    <script>
        var myDiv = new Vue({
            el:"#myDiv",
            data:{
                word:"你好啊,朋友们",
                whtml:'<p style="color: blue">恩很</p>'
            }
        })
    </script>
</body>
</html>

 

V-for=“表达式”   循环

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script src="node_modules/vue/dist/vue.js"></script>
</head>
<body>
    <div id="myDiv">
        <ul v-for="(pro) in bird">
            <li>
                {{pro}}
            </li>
        </ul>
        <!--一个属性代表值;两个参数一个是key一个是值;三个参数一个是下标,一个是key,衣蛾是值-->
        <ul v-for="(index,bir) in bird">
            <li>
                {{index}} ----{{bir}}
            </li>
        </ul>
        <ul v-for="(pro,key,index) in bird">
            <li>
                {{index}} --{{key}}--{{pro}}
            </li>
        </ul>
        <ul v-for="(key,index) in bird">
            <li>
                {{index}} --{{key}}
            </li>
        </ul>
        <ul v-for="(key) in bird">
            <li>
                {{key}}
            </li>
        </ul>

        <table v-for="student in students">
            <tr>
                <td>编号</td>
                <td>名字</td>
                <td>年龄</td>
                <td>性别</td>
            </tr>
            <tr>
                <td>{{student.id}}</td>
                <td>{{student.name}}</td>
                <td>{{student.age}}</td>
                <td>{{student.sex}}</td>
            </tr>
        </table>
    </div>

    <script>
        var myDiv = new Vue({
            el: '#myDiv',
            data: {
                hello:'每个对象都有这么一句话',
                bird:{
                    name:'百灵鸟',
                    age:2,
                    sex:'ci'
                },
                hobby:['篮球','足球','排球','高尔夫球'],
                students:[
                    {id:1,name: "松江", age: 9, sex: "熊"},
                    {id:2,name: "流浪狗", age: 5, sex: "次"},
                    {id:3,name: "白虎", age: 6, sex: "次"}
                ]
            }
        });
    </script>
</body>
</html>

v-bind 设置标签中属性的值:

<!DOCTYPE html>
<html lang="en" xmlns:v-bind="http://www.w3.org/1999/xhtml">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script src="node_modules/vue/dist/vue.js"></script>
</head>
<body>
    <!--v-bind:设置标签中属性的值-->
    <div id="myDiv">
        <img v-bind:src="headImage">
        <!--v-bind="" 批量设置标签的属性-->
        <input v-bind="nene"/>
    </div>

    <script>
        var app = new Vue({
            el:"#myDiv",
            data:{
                title:"这是我这只的标题",
                headImage:'images/12.jpg',
                nene:{
                    type:'text',
                    name:'username'
                }
            }
        })
    </script>
</body>
</html>

v-show 设置标签是否显示

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script src="node_modules/vue/dist/vue.js"></script>
</head>
<body>

    <div id="myDiv">
        <span v-show="show">回答</span>
        <span v-show="hide">滴滴滴</span>
        <span v-show="v>50">啊啊啊啊</span>
    </div>

    <script>
        var myDiv = new Vue({
            el:"#myDiv",
            data: {
                show: true,
                hide: false,
                v: 75
            }
        })
    </script>
</body>
</html>

v-if,v-else-if,v-else,条件判断:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script src="node_modules/vue/dist/vue.js"></script>
</head>
<body>

    <!--<div id="myDiv">
        <div v-if="show">在这里</div>
        <div v-if="hide">看不见啊</div>
        <div v-if="v>80">是吗</div>
    </div>-->
    <div id="myDiv">
        <div v-if="v<18">年轻正好</div>
        <div v-else-if="v > 18 && v < 40">正值奋斗</div>
        <div v-else-if="v > 40 && v < 60">别太拼了</div>
        <div v-else>老年人</div>
    </div>
    <script>
        var myDiv = new Vue({
            el:"#myDiv",
            data: {
                show: true,
                hide: false,
                v: 100
            }
        })
    </script>
</body>
</html>

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值