首页 > 其他分享 >Vue2--入门学习

Vue2--入门学习

时间:2023-05-09 16:44:52浏览次数:38  
标签:index vue 入门 -- 实例 Vue2 new world hello

看了慕课网的教学视频,觉得挺不错的,在此做个随堂记录,有兴趣的可以去看视频

vue版本:2.5

文档链接:https://v2.cn.vuejs.org/v2/guide/installation.html

视频链接:https://www.imooc.com/video/16976

 

在vue官网下载开发版本的vue.js,并复制其代码到编译器中创建的vue.js文件中

 

然后在创建index.html文件,在head部引用这个文件,就可以了

 

1、第一个vue实例

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Vue入门</title>
  <script src="./vue.js"></script>      <!--引用js库文件-->
</head>
<body>
    <div id="root">                     <!--vue实例的挂载点-->
        <h1>{{msg}}</h1>              <!--{{变量名}}:插值表达式,接收data里对应变量名的值-->
    </div>
    <script>
        new Vue({               //使用new创建实例
            el: "#root",        //接收id=root的元素,将实例与模板进行绑定
            //template: '<h1>{{msg}}</h1>', 模板内容,等同于<div>里的内容
            data:{              //vue实例内的数据板块
                msg: "hello world"
            }
        })
    </script>
</body>
</html>

效果展示:

 2、挂载点,模板,实例之间的关系/数据,事件与方法

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>挂载点,模板,实例之间的关系/数据,事件与方法</title>
  <script src="./vue.js"></script>      <!--引用js库文件-->
</head>
<body>
    <div id="root">                     <!--vue实例的挂载点,里面的数据为模板内容-->
        <h1>hello {{msg}}</h1>          <!--{{变量名}}:插值表达式,接收实例data里对应变量名的值-->
        <h2 v-text="content"></h2>      <!--v-text:接收后面的变量值-->
        <h4 v-html="content"></h4>      <!--与v-text的区别在于:v-html不会转义-->
        <div v-on:click="handleClick">{{contents}}</div>    <!--鼠标点击,引发事件,方法为handleClick-->
        <div @click="handleClick">{{contents}}</div>        <!--v-on的简写-->
    </div>
    <script>
        new Vue({                       //使用new创建实例
            el: "#root",                //接收id=root的元素,将实例与模板进行绑定
            data:{                      //vue实例内的数据板块
                msg: "hello world",
                content: "<h1>hello</h1>",
                contents: "hello"
            },
            methods:{                   //vue实例内的函数板块
                handleClick: function () {  //handleClick方法的具体函数
                    this.contents = "world" //为vue实例里data下的contents变量,重新赋值
                }
            }
        })
    </script>
</body>
</html>

效果展示:点击最下面两个hello,会变成world

 

3、属性绑定和双向数据绑定

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>属性绑定和双向数据绑定</title>
    <!--单向绑定:数据决定页面的内容,但页面不可改变数据内容;双向绑定:页面亦可改变数据内容-->
    <script src="./vue.js"></script>
</head>
<body>
    <div id="root">
    <!--<div title="this is hello world">hello world</div>;title: 鼠标放在hello world上时展示的提示语;-->
        <div :title="title">hello world</div>   <!--v-bind:属性与数据向绑定;可缩写为:-->
        <input v-model="content"/>              <!--v-model:模板指令,当页面的content改变时,数据data里的content也相应改变-->
        <div>{{content}}</div>                  <!--为双向绑定做验证,页面上应跟v-model的数据一致-->
    </div>
    <script>
        new Vue({
            el:"#root",
            data:{
                title:"this is hello world",
                content:"this is content"
            }
        })
    </script>
</body>
</html>

效果展示:修改表框内的数据,其下一行会随着改变

 

4、计算属性与侦听器

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>计算属性与侦听器</title>
    <script src="./vue.js"></script>
</head>
<body>
    <div id="root">
        姓:<input v-model="firstName"/>
        名:<input v-model="lastName"/>
        <div>{{fullName}}</div>
        <div>{{count}}</div>
    </div>
    <script>
        new Vue({
            el:"#root",
            data:{
                firstName: '',
                lastName: '',
                count: 0
            },
            computed:{                  <!--计算属性:一个属性由其他属性计算得来;当其他属性无变化时,fullName不会变更,会使用上一次计算的缓存,只有当其他属性有变化时才变化-->
                fullName: function (){
                    return this.firstName + ' ' + this.lastName
                }
            },
            watch:{                     <!--侦听器,监听属性的变化-->
                firstName: function (){ <!--当firstName属性变化时,做下面的动作-->
                    this.count ++
                },
                lastName: function (){
                    this.count ++
                }
            }
        })
    </script>
</body>
</html>

效果展示:随着输入姓名的次数变化,最下面的计数值也会随着增加

 

5、v-if,v-show,v-for指令

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>v-if,v-show,v-for 指令</title>
    <script src="vue.js"></script>
</head>
<body>
    <div id="root">
        <div v-if="show">hello world</div>               <!--通过点击按钮,显示或隐藏文本;show=ture时才会显示-->
        <div v-show="show">hello world</div>             <!--跟v-if的区别:v-show是用css标签来隐藏div,而if是直接删除此div标签,如果需要频繁显示与隐藏的话,建议使用v-show,其他用v-if-->
        <button @click="handleClick">toggle</button>     <!--button:标记一个按钮-->
        <ul>
            <li v-for="(item, index) of list" :key="index">{{item}}</li>       <!--循环获取list的数值和下标,对应变量item,index,并展示item;需要添加:key属性来提升性能,key值不能相同,若需频繁对列表进行表更,则不适用index-->
        </ul>
    </div>
    <script>
        new Vue({
            el:"#root",
            data: {
                show: true,
                list: [1,2,3]
            },
            methods: {
                handleClick: function () {
                    this.show = !this.show;
                }
            }
        })
    </script>
</body>
</html>

效果展示:点击toggle按钮,显示或隐藏hello world

 

6、TodoList

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>TodoList</title>
    <script src="vue.js"></script>
</head>
<body>
    <div id="root">
        <div>
            <input v-model="inputValue"/>                <!--v-model:模板指令,双向绑定-->
            <button @click="handleSubmit">提交</button>   <!--鼠标点击,引发事件,方法为handleSubmit-->
        </div>
        <ul>
            <!--使用组件,通过content 属性传递数值;@delete:监听子组件的变化-->
            <todo-item v-for="(item, index) of list"
                       :key="index"
                       :content="item"
                       :index="index"
                       @delete="handleDelete"
            ></todo-item>
        </ul>
    </div>
    <script>

        //创建一个组件:全局组件,一个组件就是一个vue实例
        Vue.component('todo-item', {
            props: ['content','index'],             //接收传递的数值,index为下标
            template: '<li @click="handleClick">{{content}}</li>',
            methods: {
                handleClick: function () {
                    //alert('clicked')              //弹窗提示
                    this.$emit('delete',this.index) //向外触发名称为delete的事件,对应值为index,与父组件形成发布--订阅模式,
                }
            }
        })

        //定义一个局部组件
        // var TodoItem = {
        //     template: '<li>{{item}}</li>'
        // }


        new Vue({
            el:"#root",
            // components: {
            //     'todo-item': TodoItem   //使用局部组件时,需绑定
            // },
            data: {
                inputValue: '',
                list: []
            },
            //若没有定义模板template,则挂载点下所有的实例为模板
            methods: {
                handleSubmit: function () {     <!--将提交的数据inputValue赋值到list中,并清空输入的值-->
                    this.list.push(this.inputValue)
                    this.inputValue = ''
                },
                handleDelete: function (index) {
                    this.list.splice(index,1)   //删除list中对应下标index的数值
                }
            }
        })
    </script>
</body>
</html>

效果展示:

  在页框内输入数据,点击提交,将会展示在列表中,并清空页框内的数据

  鼠标点击列表数据,将会进行删除

 

标签:index,vue,入门,--,实例,Vue2,new,world,hello
From: https://www.cnblogs.com/Xinenhui/p/17385510.html

相关文章

  • SaaS化开源项目之HouseKeeper云上部署实践
    摘要:华为云DTSE技术专家从源码构建、应用部署到系统调测,详细解读云原生SaaS应用构建的全过程。本文分享自华为云社区《HouseKeeper云上部署实践》,作者:华为云DTSE。HouseKeeper是华为云开发者团队基于SaaS项目技术支持实践,采用微服务架构(SpringCloud),结合华为云服务能力开发的SaaS......
  • unity Sprite中的Pixels Per Unit
    unity中最小的网格就是1unit。1unit默认是1米。1Unityunit=1meter(100cm)对于一个16*16像素的图片,如果我们将其PixelsPerUnit设置为16,那么这张图片的长宽都是1unit。在unity中刚好契合最小的格子。......
  • 前端面试题-常见的水平垂直居中实现方案
    方案一:<!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><metahttp-equiv="X-UA-Compatible"content="IE=edge"><metaname="viewport"content="w......
  • 通过创新增长取得成功:避免“增长痛苦”的 5 种策略
    公司在开发和孵化新业务计划方面进行了大量投资,但很少有公司遵循严格的途径来扩大新业务规模。虽然80%的公司声称构思和孵化新企业,但只有16%的公司成功扩大了规模。典型案例是百思买在许多失败倒闭的扩大新业务取得了成功。它经历了建立新业务所需的3个阶段:先提出了一个解决客户......
  • MBN:Mutual Boost Network for Attributed Graph Clustering
    论文阅读07-MBN:MutualBoostNetworkforAttributedGraphClustering论文信息论文地址:https://papers.ssrn.com/sol3/papers.cfm?abstract_id=4195979代码地址:https://github.com/Xiaoqiang-Yan/MBN1.存在问题存在问题现有区分表示的方法受到节点和结构特征之间差异......
  • how to configure blackbox.yml
    modules:http_2xx:prober:httphttp:follow_redirects:truehttp_post_2xx:prober:httphttp:method:POSTfollow_redirects:trueheaders:Content-Type:application/jsonbody_size_limit:10MB......
  • CentOS安装Git记录
    一.二进制方式 yum-yinstallgit 简单粗暴,一句话搞定,弊端就是版本太低,看看版本:git--version一般是1.8.x版本,据最新的2.40.x版本还是差挺多的 二.源代码方式 CentOS7环境建议选择v2.35以下版本,否则在编译的时候会出现错误。yuminstall-ycurl-develexp......
  • CF1824B
    一种不同于官方题解的\(O(n)\)做法考虑一个点在什么情况下能作为答案。发现应当满足这个点为根时,他的每个儿子的字数内点数均不超过\(\frac{k}{2}\)。若\(k\)为奇数,那么这样的点唯一;否则这样的点将形成一条链(实际上不需要用到这一性质)。设这个点若干子树大小分别为\(x_1......
  • uniapp 中的 rich-text 富文本 怎样编辑修改 样式
    1.首先在HTML中 <rich-text:nodes="formatRichText(newObjc)"></rich-text>2.在 methods中写入方法formatRichText(html){//html就是你要传进来地富文本参数//去掉img标签里的style、width、height属性......
  • Django REST framework创建api
    我们将创建一个简单的允许管理员用户查看和编辑系统中的用户和组的API。项目设置创建一个名为 tutorial 的新django项目,然后启动一个名为 quickstart 的新app。#创建项目目录mkdirtutorialcdtutorial#创建一个virtualenv来隔离我们本地的包依赖关系virtualenvenv......