05_Vue基础入门

这篇具有很好参考价值的文章主要介绍了05_Vue基础入门。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

vue的作用

渐进式的前端框架(里面的框架按需获取)

vue特点

1.解耦视图和数据

2.双向数据绑定

3.可复用的组件:常用的按钮和表格

4.前端路由数据:页面跳转

5.状态管理

6.虚拟DOM

引入方式

1.使用CDN连接引入,加载速度更快

    <script src="https://cdn.jsdelivr.net/npm/vue@2/dist/vue.js"></script>

2.下本地载源码引入

将文件保存到项目中,拖到引用的js文件中

3.使用NPM

使用npm将依赖下载到Node中

vue初始用
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <!--下载引入文件-->
    <script src="https://cdn.jsdelivr.net/npm/vue@2/dist/vue.js"></script>
</head>
<body>
<div id="app">
    <h1>{{msg}}</h1>
    <h1>{{msg}}</h1>
</div>
</body>
<script>
    let v=new Vue({
        el:"#app",  //指定将元素挂在到哪里,前面的el是固定的
        data:{      //data是固定的
            msg:"我是一个app"
        }
    })
</script>

**el属性:**指定将元素挂载到那个元素上,可以使用id,class,标签属性

data属性:里面存储的数据,可以是多个对象多个数组

**{{msg}}😗*插值表达式,避免了数据写死,里面可以写三元运算表达式

MVVM模型

是一种前端的思想

**含义:**数据模型改变视图模型也会跟着改变

三层模型

view层:展示信息

Model层:数据层

VM:视图模型,是view层和model层的桥梁

插值表达式

作用的地方:在文本内容中

防止文本数据写死

 <script src="https://cdn.jsdelivr.net/npm/vue@2/dist/vue.js"></script>
</head>
<body>
<div id="app">
   <h1>{{msg}}</h1>
  <div>
    {{name}}-{{age>18?'成年':'未成年}}
    {{phone.substring(0,3)+'****'+phone.substring(7)}}
  </div>
</div>
</body>
<script>
  new Vue({
    el:"#app",  //指定将元素挂在到哪里,前面的el是固定的
    data:{      //data单词 是固定的
      msg:"我是一个app",
      name:"张三",
      age:21,
      phone:123456789132
    }
  })
</script>
v-bind属性

作用的地方:在标签中

数据的单向绑定

只有数据的变动影响视图,视图的变动不能影响数据

语法:

	v-bind:标签属性名="data中的属性名称"

简写的方式

	:标签属性名="data中的属性名称"

示例

 <script src="https://cdn.jsdelivr.net/npm/vue@2/dist/vue.js"></script>
</head>
<body>
<div id="app">
  <h1>{{title}}</h1>
  <!--path绑定数据,里面已经有vue 的属性,不需要增加{}-->
  <img v-bind:src="path" width="100px">
  <!--path绑定数据,简写方式-->
  <img v-bind:src="path" width="100px"><br>
  <a :href="code">叩丁狼</a>

</div>
</body>
<script>
  new Vue({
    el:"#app",  //指定将元素挂在到哪里,前面的el是固定的
    data:{      //data是固定的
      msg:"我是一个app",
      title:"单向绑定",
      path:"../imgs/2.png",
      code:"https://www.wolfcode.cn"
    }
  })
</script>
v-on属性

作用的地方:写在标签中

作用:事件绑定

语法:

v-on:事件类型="methods中的回调函数"

简写方式

@:事件类型="methods中的回调函数"

**methods:**用于写处理函数和方法,也是一个对象

注意事项:

1.里面的this表示的vue对象,不是这个事件源

2.获取事件源对象:e(事件源).currentTarget

3.事件对象

3.1 直接在绑定事件处, 传⼊ $event(固定) 对象即可

3.2 绑定事件时, 直接绑定响应处理函数的引⽤, ⽽不是调⽤该函数
<body>
<div id="app">
    <h1>{{title}}</h1>
    <!--事件绑定,这里不是调用函数-->
    <button v-on:click="deleteConfirm()">删除</button>
    <!--事件绑定简写:   @事件名="回调函数"  -->
    <button @click="deleteConfirm($event,2)">删除2</button>
    <!--鼠标移入移出事件-->
    <div style="height: 100px;width:400px;background: red "
         @mouseover="over()" @mouseout="out()"></div>

</div>
</body>
<script>
    let v = new Vue({
        el: "#app",  //指定将元素挂在到哪里,前面的el是固定的
        data: {      //data是固定的
            title: "单向绑定"
        },
        methods: {//添加方法,函数,也是一个对象
            deleteConfirm: function (e, id) {
                console.log("删除确认");
                //this表示的是vue的这个对象,不是一个事件源
                console.log(this)
                //通过事件对象拿事件源
                console.log(e.currentTarget)
                //获取传递过来的的自定义参数
                console.log(id)
            },
            over: function () {
                console.log("鼠标移入");
            },
            out: function () {
                console.log("鼠标移出");
            }
        }
    })
</script>
v-if和v-show属性

作用:用于元素的显示和隐藏,写在标签里面

区别:

v-if:当值设为false的时候,浏览器中会将这个标签进行删除达到隐藏的效果

​ **v-show:**将值设为false的时候,使用css中的样式style-display:none隐藏标签

<div id="app">
    <h1>元素的显示和隐藏</h1>
    <!--
    v-if:若是false,从页面上删除该标签
    v-show:如果是false,则使用css中的样式style=display:none隐藏标签
    -->
    <button v-if="true">删除</button>
    <button v-show="collect" @click="change(false)">点击收藏</button>
    <button v-show="!collect" @click="change(true)">取消收藏</button>


</div>
</body>
<script>
    let v = new Vue({
        el: "#app",  //指定将元素挂在到哪里,前面的el是固定的
        data: {      //data是固定的
            title: "元素的显示和隐藏",
            collect: "true"
        },
        methods: {
            change:function (collect)  {
                //修改data中的collect的值
                //访问data中的数据:this.属性名
                this.collect = collect;
            }
        }
    })

区别

v-for循环遍历

**作用地方:**写在标签当中,对数组或者对象进行遍历

**数组遍历:**可以得到数组的元素和索引值

**对象遍历:**的到对象的属性值和属性名

语法:

 v-for=(遍历后的别名,索引) in 遍历的对象

示例:

<div id="app">
  <h1>{{title}}</h1>
 <table width="50px" border="1">
   <tr>
     <th>编号</th>
     <th>姓名</th>
     <th>年龄</th>
     <th>邮箱</th>
   </tr>
   <!--格式是 v-for=(遍历后的别名,索引) in 遍历的对象-->
   <tr v-for="(stu,index) in students">
    <!-- 正常书写
       <th>{{stu.id}}</th>
     <th>{{stu.name}}</th>
     <th>{{stu.age}}</th>
     <th>{{stu.email}}</th>
         -->
     <!--简写方式,对遍历后的对象再进行遍历-->
     <td v-for="(value,name) in stu">{{value}}</td>
   </tr>
 </table>
</div>
</body>
<script>
  let v=new Vue({
    el:"#app",  //指定将元素挂在到哪里,前面的el是固定的
    data:{      //data是固定的
      title:"循环遍历",
      students:[{id:1, name:"张三", age:"25", email:"zhangsan.com"},
        {id:2, name:"张三2", age:"26", email:"zhangsan2.com"},
        {id:3, name:"张三2", age:"27", email:"zhangsan3.com"}
      ]
    }
  }
</script>
v-model数据双向绑定

作用地方:只能作用于表单元素(input,select,button…)

**过程:**改变视图数据的时候model的数据也会改变,model数据改变的时候视图数据会改变

语法:

<表单元素  v-model="数据的名称">
<div id="app">
    <h1>{{title}}</h1>
    账号:<input type="text" v-model="formData.username"><br>
    地址:
    <select v-model="forData.address">
        <option value="sc">四川</option>
        <option value="sc">广东</option>
        <option value="sc">沈阳</option>
    </select>
</div>
</body>
<script>
    let v = new Vue({
        el: "#app",  //指定将元素挂在到哪里,前面的el是固定的
        data: {      //data是固定的
            title: "数据双向绑定",
            formData: {
                username: "admin",
                address: "gd"
            }

        }
    })
</script>
vue组件化开发

**作用:**达到代码复用,责任分离,可维护性高

​ 1.将页面拆分成一个个小的,可复用的组件

​ 2.组件化的代码更加方便组织和管理,扩展性更强

1.全局组件

这个组件在全局的任何地方都可以进行调用(首先这个调用的标签元素必须得挂载,否则使用无效)

步骤:

1.将写好的html标签代码作为模板,放在组件中,需要使用的地方就直接进行调用

2.先写好html标签之后再将其放在全局组件中,使用的Vue.component,都写在

 /*注册全局组件*/
//全局组件 Vue.component('组件别名', {配置对象});
    Vue.component("mybtn", {
        template: ' <button style="width: 100px;height: 40px;background:skyblue">按钮</button>'
    })

3.添加了组件之后,仍然需要挂载元素

let v = new Vue({
    el: "#app",  //指定将元素挂在到哪里,前面的el是固定的
    data: {      //data是固定的
        title: "全局组件",
    }
});

4.在使用的地方进行调用,使用别名这个标签进行调用

<div id="app">
    <h1>{{title}}</h1>
    <mybtn></mybtn>
</div>
2.局部组件

注意事项:

​ 1.在挂载元素里面引用组件

​ 2.引用的名称不能使用大写字母

步骤

​ 1.定义组件(只能使用tempate标签定义)

<!--定义组件-->
<template id="mytable">
    <table border="1">
        <tr>
            <th>ID</th>
            <th>名称</th>
            <th>年龄</th>
            <th>操作</th>
        </tr>
        <tr>
            <td>1</td>
            <td>xiaoliu</td>
            <td>18</td>
            <td>
                <a href="#">编辑</a> |
                <a href="#">删除</a>
            </td>
        </tr>
    </table>
</template>

​ 2.使用template属性注册组件,let命名无规定

//注册组件
   let tableTemp={
       template: "#mytable"
   }

​ 3.挂载元素并且引用组件(components)

//挂载元素
	let v=new Vue({
		el:"#app",
		data:{
		title:"全局组件"
		},
		//引用组件,在挂载里面使用进行引用
		components:{
			mytable:tableTemp
		}
	})

​ 4.在元素中调用组件

<div id="app">
    <h1>{{title}}</h1>
<!--    调用组件-->
<mytable></mytable>
</div>
组件通讯
父组件传子组件(操作步骤和局部组件一样)

父组件可以传递多个props给子组件

在注册组件的时候,使用props来获取父组件的数组或者对象,要指定父组件的类型

//注册组件
let tableTemp = {
    template: "#mytable",
    //获取父组件的数组或者对象,指定父组件的类型
    props: {
        list: Array
    }
}

必须对父组件和子组件进行绑定

<div id="app">
    <h1>{{title}}</h1>
    <!--将父组件中的数据绑定到子组件里面    必须绑定-->
    <mytable :list="students"></mytable>
</div>
子组件传父组件

子组件就是一个表格,点击删除按钮的时候会触发自定义事件,子组件将id传递给父组件,父组件接收到参数后执行相应的处理

具体的步骤

​ 1.通过点击删除按钮执行自定义点击事件,并执行函数传入id

<a href="JavaScript:;" @click="del(stu.id)">删除</a>

​ 2.在注册组件的时候定义一个方法用于接收id并执行相应的,里面使用this.$emit(“自定义事件名称”,id)

//注册组件
let tableTemp = {
    template: "#mytable",
    //获取父组件的数组或者对象,指定父组件的类型
    props: {
        list: Array
    },
    //子组件定义一个函数
    methods:{
        del:function (id) {
            console.log("子组件的id:"+id);
            
            //触发的事件类型,触发指定的事件,将id传给父组件,id就是响应函数的参数
            this.$emit('ondelete',id);

        }
    }
}

3.使用绑定事件将id传递给父组件(必须进行绑定),父组件根据id调用相应的函数

<!--绑定事件-->
<mytable :list="students" @ondelete="doDelete"></mytable>

​ 4.父组件在Vue中执行相应的函数文章来源地址https://www.toymoban.com/news/detail-516199.html

 ,methods: {
            doDelete:function(id){
                console.log("父组件接收到子组件的参数:"+id)
            }
        }

到了这里,关于05_Vue基础入门的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Vue | Vue.js 全家桶 Pinia状态管理

    🖥️ Vue .js专栏:Node.js Vue.js 全家桶 Pinia状态管理 🧑‍💼 个人简介:一个不甘平庸的平凡人🍬 ✨ 个人主页:CoderHing的个人主页 🍀 格言: ☀️ 路漫漫其修远兮,吾将上下而求索☀️ 👉 你的一键三连是我更新的最大动力❤️ 目录 一、Pinia和Vuex的对比 什么是Pinia呢? Pina和

    2024年01月16日
    浏览(53)
  • vue­-router路由和前端状态 管理

    vue­-router路由基本加载 可以分为四步 :具体流程如下 : 安装 在命令行中 进入到自己的项目目录输入一下命令 安装依赖: npm install --save vue-router 在需要用到路由跳转的模块中引用(本文是在在入口文件 main.js 进行设置) import router from ‘vue-router’ Vue.use(router) 配置路由文件,

    2024年02月02日
    浏览(47)
  • Vue + Element UI 前端篇(八):管理应用状态

    1. 引入背景 像先前我们是有导航菜单栏收缩和展开功能的,但是因为组件封装的原因,隐藏按钮在头部组件,而导航菜单在导航菜单组件,这样就涉及到了组件收缩状态的共享问题。收缩展开按钮触发收缩状态的修改,导航菜单需要根据收缩状态来设置导航栏的宽度。这样就

    2024年02月09日
    浏览(62)
  • VueSupercharge 精通指南:构建超级状态管理 Vue.js 应用

    Vuex 是一个专为 Vue.js 应用程序开发的状态管理模式 + 库。它采用集中式存储管理应用的所有组件的状态,并以相应的规则保证状态以一种可预测的方式发生变化。 这个状态自管理应用包含以下几个部分: 状态,驱动应用的数据源; 视图,以声明方式将状态映射到视图;

    2024年01月20日
    浏览(40)
  • vue 全局状态管理(简单的store模式、使用Pinia)

    多个组件可能会依赖同一个状态时,我们有必要抽取出组件内的共同状态集中统一管理,存放在一个全局单例中,这样任何位置上的组件都可以访问其中的状态或触发动作 通过自定义一个store模式实现全局的状态管理,实例如下 有两个组件a、b共享store和store2两个状态,我们

    2024年02月13日
    浏览(51)
  • 【Vue】Vue 前端设计模式梳理

    一、什么是设计模式? 设计模式是一套被反复使用、多数人知晓、经过分类编目的、代码设计经验的总结。它是为了可重用代码,让代码更容易的被他人理解并保证代码的可靠性。 设计模式实际上是“拿来主义”在软件领域的贯彻实践,它是一套现成的工具,拿来即用。下

    2024年02月01日
    浏览(49)
  • 前端(四)——vue.js、vue、vue2、vue3

    😊博主:小猫娃来啦 😊文章核心: vue.js、vue、vue2、vue3从全局到局部 Vue.js是一款流行的JavaScript框架 vue,vue2,vue3都是vue.js的不同版本。 Vue:Vue.js的第一个版本,也称为Vue 1.x。它于2014年首次发布,并获得了广泛的应用和认可。 Vue2:Vue.js的第二个版本,也称为Vue 2.x。它在Vu

    2024年02月12日
    浏览(79)
  • 【前端技术】Vue3 01:初识 Vue.js

    Vue 可以说是非常流行了,至少在国内是这样,他是个轻量级的 JavaScript 框架,非常适合构建大型和中小型的 Web 应用程序,如果想和前端打交道,应该绕不过这个框架吧。 目录 1 Vue.js 介绍 2  IDE 选择 2.1 vscode 2.2 WebStorm 2.3 Eclipse 3  创建 Vue 应用 3.1 本地脚手架创建 ① 安装

    2024年02月02日
    浏览(64)
  • vue3 快速入门系列 —— 状态管理 pinia

    其他章节请看: vue3 快速入门 系列 vue3 状态管理这里选择 pinia。 虽然 vuex4 已支持 Vue 3 的 Composition API,但是 vue3 官网推荐新的应用使用 pinia —— vue3 pinia redux、mobx、vuex、pinia都是集中式状态管理工具。与之对应的就是分布式。 Pinia 符合直觉 的 Vue.js 状态管理库 甚至让你忘

    2024年04月26日
    浏览(37)
  • 前端开发 5: Vue.js 框架

    在前端开发中,Vue.js 是一个流行且灵活的 JavaScript 框架,用于构建用户界面。它采用了组件化的开发方式,使得前端开发更加模块化和可维护。在本篇博客中,我将为你介绍 Vue.js 的基础知识和常用技巧,帮助你更好地掌握前端开发中的框架部分。 Vue.js 是一个轻量级的 Jav

    2024年01月19日
    浏览(45)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包