vue篇1:vuejs简单入门及案例

1.Vuejs概述与快速入门

1.1Vuejs介绍

vue.js是一个构建数据驱动的web界面的渐进式框架。vue.js的目标是通过尽可能简单的API实现响应的数据绑定和组合的视图组件。不仅易于上手,还便于与第三方库或既有项目整合。

1.2MVVM模式

MVVm模式Model-View-ViewModel的简写。它本质就是MVC的改进版。MVVM就是讲其中的view的状态和行为抽象化,让我们讲视图UI和业务逻辑分开。

MVVM模式和MVC模式一样,主要目的是分离视图和模型。

vue.js是一个提供MVVM风格的双向数据绑定的JavaScript库,专注于VIew层,他的核心是MVVM中的VM,也就是ViewModel,ViewModel负责连接view和model层,保证数据和视图的一致,这种轻量级的架构让前端开发更加高效快捷。

过度为:

2.简单案例

2.1

vue.js 下载地址:https://vuejs.org/v2/guide/installation.html

(1)创建项目

(2)

(3)

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>快速入门</title>
    <script src="js/vue.js"></script>
</head>
<body>
    <div id="app">
        {{message}} <!-- //vue插值表达式 -->
    </div>
</body>
<script>
    //view model
    //创建vue对象
    new Vue({
        el:"#app",//由vue接管id为app区域
        data:{
            message:"Hello Vue easy"//不加分号
        }
    });
</script>
</html>

(4)

2.2挂载点,模板,实例之前的关系

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>vue入门</title>
<!-- 引入vue.min.js文件,直接引用这个文件就行了,不用引用jquery.js文件的 -->
<script type="text/javascript" src="./vue.min.js"></script>
</head>
<body>


<!-- 挂载点,模板,实例之前的关系 -->

<!-- 此div标签被称为vue1实例的挂载点。vue1会处理该挂载点下面的内容。 -->
<!-- 挂载点内部的内容被称为模板,模板内容也可以写到template标签里面,切记template值需要使用html元素包含起来。 -->
<div id="app"></div>

<!-- 此div标签被称为vue2实例的挂载点 -->
<div id="app2">{{message}}</div>

<script type="text/javascript">
    //创建一个Vue的实例,让这个实例去接管id为app的这个元素
    //实例vue1,创建了一个Vue实例。
    var vue1 = new Vue({
        el: "#app", //el关键字是element单词的缩写,代表元素。#app是id为app。el的值等于#app代表和那个dom节点的id做绑定。
        template: '<h1>I am biehl,{{message}}</h1>', //template标签的值被称为模板内容。
        data:{        //data关键字是存放的需求数据。去处理id等于app这一块区域的内容。
            message:"hello vue!"    //message名称可以根据自己需求起名称。
        }
    });

    var vue2 = new Vue({
        el:"#app2",
        data:{
            message:"你好,vue框架"
        }

    });
</script>
</body>
</html>

2.3Vue中方法的使用以及属性的改变,Vue实例中的数据,事件,方法

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>vue入门</title>
<!-- 引入vue.min.js文件,直接引用这个文件就行了,不用引用jquery.js文件的 -->
<script type="text/javascript" src="./vue.min.js"></script>
</head>
<body>


<!-- 挂载点,模板,实例之前的关系 -->

<!-- 此div标签被称为vue1实例的挂载点。vue1会处理该挂载点下面的内容。 -->
<!-- 挂载点内部的内容被称为模板,模板内容也可以写到template标签里面,切记template值需要使用html元素包含起来。 -->
<div id="app"></div>

<!-- 此div标签被称为vue2实例的挂载点 -->
<div id="app2">{{message}}</div>

<!-- {{number}}、{{msg}}被称为插值表达式 -->
<!-- <div id="app3">{{number}},{{msg}}</div> -->

<!-- v-text是vue的一个属性指令,值是一个变量,代表了h4要显示的变量就是number的值,等同于v-html属性命令,此命令将html进行转义,v-text不转义。 -->
<div id="app3">
    <!-- <h4 v-text="number"></h4> -->
    <div v-on:click="()=>{alert('world vue!!!')}">{{msg}}</div>
    <div v-on:click="handleClick">{{msg}}</div>
    <!-- v-on:的简写是@这个符号 -->
    <div @click="handleClick2">{{msg}}</div>
</div>


<script type="text/javascript">
    //创建一个Vue的实例,让这个实例去接管id为app的这个元素
    //实例vue1,创建了一个Vue实例。
    var vue1 = new Vue({
        el: "#app", //el关键字是element单词的缩写,代表元素。#app是id为app。el的值等于#app代表和那个dom节点的id做绑定。
        template: '<span>I am biehl,{{message}}</span>', //template标签的值被称为模板内容。
        data:{        //data关键字是存放的需求数据。去处理id等于app这一块区域的内容。
            message:"hello vue!"    //message名称可以根据自己需求起名称。
        }
    });

    var vue2 = new Vue({
        el:"#app2",
        data:{
            message:"你好,vue框架"
        }
    });

    var vue3 = new Vue({
        el:"#app3",
        data:{
            number:123,            //vue中改变数据的显示,设法改变数据即可,即可完成数据的改变。
            msg:"hello vue!"
        },
        methods:{
            handleClick:function(){
                console.log("world vue!!!!!!!!");
                alert("world vue!!!!!!!!");
                this.msg = "world vue!!!";    //在vue的methods中改变data里面的数据,如此调用即可完成数据的改变
            },
            handleClick2:function(){
                this.msg = "hello vue!!!";
            },
        }
    });
</script>
</body>
</html>

 

2.4vue中属性绑定和双向数据绑定。1)、v-bind:等同于:。2)、v-on:等同于@。3)、双向绑定v-model。

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>vue入门</title>
<!-- 引入vue.min.js文件,直接引用这个文件就行了,不用引用jquery.js文件的 -->
<script type="text/javascript" src="./vue.min.js"></script>
</head>
<body>

<!-- vue中属性绑定和双向数据绑定。1、v-bind:等同于:。2、v-on:等同于@。 -->
<div id="app1">
    <div v-bind:title="title">{{msg}}</div>
    <div :title="'I am biehl , ' + title">{{msg}}</div>
    <!-- v-bind:value等价于:value。 -->
    <input type="text" name="userName" v-bind:value="content">
    <div>{{content}}</div>
    <!-- 双向绑定v-model,指定data的password的值 -->
    <input type="password" name="password" v-model="password">
    <div>{{password}}</div>

</div>


<script type="text/javascript">
    var vue1 = new Vue({
        el:"#app1",            //el的值是id,所以一定记得加上#,例如#app1
        data:{
            msg:"hello vue!",
            title:"this is hello vue!!!",
            content:"this is content!!!",
            password:"123456",
        }
    });

</script>
</body>
</html>

2.5Vue中计算属性和侦听器。

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>vue入门</title>
<!-- 引入vue.min.js文件,直接引用这个文件就行了,不用引用jquery.js文件的 -->
<script type="text/javascript" src="./vue.min.js"></script>
</head>
<body>

<!-- Vue中计算属性和侦听器 -->
<div id="app2">
    姓:<input type="text" name="firstName" v-model="firstName" /><br/>
    名:<input type="text" name="lastName" v-model="lastName" />    <br/>
    <!-- 冗余的显示 -->
    姓名:<span>{{firstName}}{{lastName}}</span>    <br/>
    姓名:<span>{{fullName}}</span><br/>

    <div>{{count}}</div>
    <div v-text="count"></div>
    <div v-html="count"></div>

    <!-- 监听器的使用 -->


</div>


<script type="text/javascript">
    /* Vue中计算属性和侦听器 */
    var vue2 = new Vue({
        el:"#app2",
        data:{
            firstName:"张",
            lastName:"三三",
            count:0,
        },
        //vue计算属性computed
        computed:{
            fullName:function(){
                return this.firstName + ' ' + this.lastName;
            },
        },
        //监听器,监听某一个数据的变化,当某一个数据变化,就执行自己的逻辑。
        watch:{
            /*firstName:function(){
                this.count++;
            },
            lastName:function(){
                this.count++;
            },*/
            fullName:function(){
                this.count++;
                //alert("什么鬼......");
            }
        }
    });
</script>
</body>
</html>

2.5Vue中的v-if、v-for、v-show命令。

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>vue入门</title>
<!-- 引入vue.min.js文件,直接引用这个文件就行了,不用引用jquery.js文件的 -->
<script type="text/javascript" src="./vue.min.js"></script>
</head>
<body>

<!-- Vue中的v-if、v-for、v-show命令 -->
<div id="app1">
    <!-- v-if会让div标签消失 -->
    <div v-if="show">{{msg}}</div>
    <button type="button" @click="handleClick">toggle</button>

    <br/><br/>

    <!-- v-show标签是将div的样式display属性设置为none的,style="display: none;" -->
    <div v-show="show">{{msg}}</div>
    <button type="button" @click="handleClick2">toggle</button>

    <!-- v-for标签进行循环操作 -->
    <ul>
        <!-- 将list的值放到item里面,然后将item展示出来。:key加强渲染,但是循环值必须不同。 -->
        <li v-for="(item,index) of list" :key="item">{{item}}</li>
    </ul>
</div>

<script type="text/javascript">
    var vue1 = new Vue({
        el:"#app1",
        data:{
            msg:"您好,vue!",
            show:true,
            list:[11,22,33,44,55,66]
        },
        methods:{
            handleClick:function(){
                // this.show = !this.show,表示取show得反。这种思路很巧妙。
                this.show = !this.show
            },
            handleClick2:function(){
                // this.show = !this.show,表示取show得反。这种思路很巧妙。
                this.show = !this.show
            }
        }
    });

</script>
</body>
</html>

2.6Vue的全局组件、局部组件。

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>vue入门</title>
<!-- 引入vue.min.js文件,直接引用这个文件就行了,不用引用jquery.js文件的 -->
<script type="text/javascript" src="./vue.min.js"></script>
</head>
<body>

<div id="app1">
    <div>
        <!-- v-model数据交互 -->
        <input type="text" name="userName" v-model="inputValue"/>
        <!-- 点击事件 -->
        <button @click="handleClick">提交</button>
        <!-- <ul>
            循环遍历输出结果
            <li v-for="(item,index) of list" :key="index">{{item}}</li>
        </ul> -->

        <!-- 全局组件 -->
        <!-- <ul>
            <todo-item v-for="(item,index) of list" :key="index" :content="item">{{item}}</todo-item>
        </ul> -->

        <!-- 局部组件 -->
        <ul>
            <todo-item v-for="(item,index) of list" :key="index" :content="item">{{item}}</todo-item>
        </ul>

    </div>
</div>


<script type="text/javascript">
    // 组件的拆分。全局组建
    /*Vue.component('todo-item',{
        props:['content'],
        template:'<li>{{content}}</li>'
    });*/

    // 局部组件
    var toDoItem = {
        props:['content'],
        template:'<li>{{content}}</li>'
    };

    // vue实例
    var vue1 = new Vue({
        el:"#app1",
        //局部组件
        components:{
            'todo-item':toDoItem
        },
        data:{
            msg:"hello vue!",
            inputValue:'',
            list:[],
        },
        methods:{
            handleClick:function(){
                // vue的思路围绕着数据进行操作的,之前都是操作的dom.
                // 判断是否不为空且不为空字符串。
                if(this.inputValue != null && this.inputValue != ''){
                    // 将输入框里面的值加到数组里面,展示在下面的列表里面
                    this.list.push(this.inputValue),
                    // 将输入框里面的值设置为空
                    this.inputValue = ''
                }
            }
        }
    });

</script>
</body>

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值