Vue前端+快速入门【详解】

news2024/11/15 13:34:40

目录

1.Vue概述

2. 快速入门

3. Vue指令

4.表格信息案例    

5. 生命周期


1.Vue概述

        1.MVVM思想

        原始HTML+CSS+JavaScript开发存在的问题:操作麻烦,耦合性强

        为了实现html标签与数据的解耦,前端开发中提供了MVVM思想:即Model-View-ViewModel:

  • Model: 数据模型,指要展示到页面上的数据。在web开发中通常从服务端获取到数据,再把这些数据展示出来

  • View: 视图,用于展示数据的各种html标签

  • ViewModel: 视图模型控制中心,负责把Model数据显示到View里,也负责从View里收集数据到Model里。Vue框架就承担了这个角色

        2.Vue框架简介

                Vue.js(读音 /vjuː/, 类似于 view) 是一套构建用户界面的 渐进式框架,它实现了MVVM思想         

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

                框架即是一个半成品软件,是一套可重用的、通用的、软件基础代码模型。基于框架进行开发,更加快捷、更加高效。

2. 快速入门

        1.开发步骤:

                1.编写html页面,引入vue框架的js类库

                2.在html页面里,使用Vue 把"hello vue"到页面上

        

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Vue-快速入门</title>
    
</head>
<body>

    <div id="app">
        <!-- 使用插值表达式,把数据区域里message的数据插入进来 -->
        {{message}}
    </div>
</body>
<script src="js/vue.js"></script>    
<script>
    //定义Vue对象
    new Vue({
        //vue接管id为app的标签区域
        el: "#app", 
        //数据区域,就是MVVM里的Model
        data:{
            message: "Hello Vue"
        },
        //方法区域,Vue里用到的所有方法都要写到这里,否则调用不到
        methods:{
            
        }
    })
</script>
</html>

3. Vue指令

        指令:HTML 标签上带有 v- 前缀的特殊属性,不同指令具有不同功能作用。

        

        1.v-bind和v-model: 

    

v-bind使用示例:

        

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>v-bind</title>
</head>
<body>
    <div id="app">
    <!-- 
        v-bind:用于把数据区域里的数据,绑定到 html标签的属性上
        语法:
            完整写法:  v-bind:属性名="数据名"
            简单写法:        :属性名="数据名"
        单向绑定:数据区域 ===> 页面视图(标签的属性上)
     -->
     <a v-bind:href="siteUrl">{{siteTitle}}</a> <br>
     <a :href="siteUrl">{{siteTitle}}</a>

    </div>

    <script src="./js/vue.js"></script>
    <script>
        new Vue({
            el: "#app",
            data: {
                siteUrl: "http://www.baidu.com",
                siteTitle: "百度"
            },
            methods:{

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

v-model使用示例

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>v-model</title>
</head>
<body>
    <div id="app">
       <!-- 
        v-model:用于实现 数据区域 和 页面上表单项的 双向绑定。
            注意:仅适用于表单项,input, select, textarea
            语法: v-model="数据名称"
            效果:
                数据区域 ==> 页面表单项上: 数据区域里的数据变化,页面表单项上会随之变化
                页面表单项上 ==> 数据区域: 在页面上输入了表单项的数据,数据区域也会随之变化
        -->

        帐号:<input type="text" v-model="username"> <br>
        性别:<input type="radio" name="gender" value="male" v-model="sex">男
            <input type="radio" name="gender" value="female" v-model="sex">女  <br>


            数据区域里值:{{username}} , {{sex}}
    </div>

    <script src="./js/vue.js"></script>
    <script>
        new Vue({
            el: "#app",
            data: {
                username: "tom",
                sex: "male"
            },
            methods:{

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

        2.  v-on

        v-on: 用来给html标签绑定事件。

                完整写法:v-on:事件名="函数名(实参列表)"

                简写形式:@事件名="函数名(实参列表)"

        注意事项:

                v-on语法给标签的事件绑定的函数,必须在Vue的方法区域中

                v-on语法绑定事件时,事件名不写on。例如:onclick=""在vue里写成v-on:click=""

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Vue-指令-v-on</title>
    <script src="js/vue.js"></script>
</head>
<body>
    <div id="app">

        <input type="button" value="点我一下" v-on:click="handle()">

        <input type="button" value="点我一下" @click="handle()">

    </div>
</body>
<script>
    //定义Vue对象
    new Vue({
        el: "#app", //vue接管区域
        data:{
           
        },
        methods: {
            handle: function(){
                alert("你点我了一下...");
            }
        }
    })
</script>
</html>

        3.v-if和v-show

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Vue-指令-v-if与v-show</title>
    <script src="js/vue.js"></script>
</head>
<body>
    <div id="app">
        
        年龄<input type="text" v-model="age">经判定,为:
        <span v-if="age <= 35">年轻人(35及以下)</span>
        <span v-else-if="age > 35 && age < 60">中年人(35-60)</span>
        <span v-else>老年人(60及以上)</span>

        <br><br>

        年龄<input type="text" v-model="age">经判定,为:
        <span v-show="age <= 35">年轻人(35及以下)</span>
        <span v-show="age > 35 && age < 60">中年人(35-60)</span>
        <span v-show="age >= 60">老年人(60及以上)</span>

    </div>
</body>
<script>
    //定义Vue对象
    new Vue({
        el: "#app", //vue接管区域
        data:{
           age: 20
        },
        methods: {
            
        }
    })
</script>
</html>

             4.v-for

                v-for: 从名字我们就能看出,这个指令是用来遍历的。注意:需要循环哪个标签,v-for 指令就写在哪个标签上。

                完整语法:

                <标签 v-for="(变量名,索引变量) in 集合模型数据">
                    <!--索引变量是从0开始,所以要表示序号的话,需要手动的加1-->
                   {{索引变量 + 1}} {{变量名}}
                </标签>

                简写形式:

                <标签 v-for="变量名 in 集合模型数据">
                    {{变量名}}
                </标签>

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Vue-指令-v-for</title>
    <script src="js/vue.js"></script>
</head>
<body>
     <div id="app">
         <div v-for="addr in addrs">{{addr}}</div>
         <hr>
         <div v-for="(addr,index) in addrs">{{index + 1}} : {{addr}}</div>
    </div>
</body>
<script>
    //定义Vue对象
    new Vue({
        el: "#app", //vue接管区域
        data:{
           addrs:["北京", "上海", "西安", "成都", "深圳"]
        },
        methods: {
            
        }
    })
</script>
</html>

   4.表格信息案例    

        

步骤:

  • 使用v-for的带索引方式添加到表格的<tr>标签上

  • 使用{{}}插值表达式展示内容到单元格

  • 使用索引+1来作为编号

  • 使用v-if来判断,改变性别和等级这2列的值

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Vue-指令-案例</title>
    <script src="js/vue.js"></script>
</head>
<body>
    
    <div id="app">
        
        <table border="1" cellspacing="0" width="60%">
            <tr>
                <th>编号</th>
                <th>姓名</th>
                <th>年龄</th>
                <th>性别</th>
                <th>成绩</th>
                <th>等级</th>
            </tr>

            <tr align="center" v-for="(user,index) in users">
                <td>{{index + 1}}</td>
                <td>{{user.name}}</td>
                <td>{{user.age}}</td>
                <td>
                    <span v-if="user.gender == 1">男</span>
                    <span v-if="user.gender == 2">女</span>
                </td>
                <td>{{user.score}}</td>
                <td>
                    <span v-if="user.score >= 85">优秀</span>
                    <span v-else-if="user.score >= 60">及格</span>
                    <span style="color: red;" v-else>不及格</span>
                </td>
            </tr>
        </table>

    </div>

</body>

<script>
    new Vue({
        el: "#app",
        data: {
            users: [{
                name: "Tom",
                age: 20,
                gender: 1,
                score: 78
            },{
                name: "Rose",
                age: 18,
                gender: 2,
                score: 86
            },{
                name: "Jerry",
                age: 26,
                gender: 1,
                score: 90
            },{
                name: "Tony",
                age: 30,
                gender: 1,
                score: 52
            }]
        },
        methods: {
            
        },
    })
</script>
</html>

5. 生命周期

        vue的生命周期:指的是vue对象从创建到销毁的过程。vue的生命周期包含8个阶段:每触发一个生命周期事件,会自动执行一个生命周期方法,这些生命周期方法也被称为钩子方法

mounted:挂载完成,Vue初始化成功,HTML页面渲染成功。以后我们一般用于页面初始化自动的ajax请求后台数据

编写mounted声明周期的钩子函数,与methods同级

<script>
    //定义Vue对象
    new Vue({
        el: "#app", //vue接管区域
        data:{
           
        },
        methods: {
            
        },
        mounted () {
            alert("vue挂载完成,发送请求到服务端")
        }
    })
</script>

     

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1490469.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

什么是 End-to-End 测试?

在使用 vue 的模板创建新项目的时候&#xff0c;有一个选项是问&#xff0c;是否添加“端到端”测试&#xff1f;说实在我不知道&#xff0c;而且三个选项一个都不认识。 ? Add an End-to-End Testing Solution? › - Use arrow-keys. Return to submit. ❯ NoCypressNigh…

QChart柱状图

//柱状图// 创建柱状图数据QBarSet *set0 new QBarSet("");*set0 << 1601 << 974 << 655 << 362;QBarSeries *series new QBarSeries();series->append(set0);set0->setColor(QColor("#F5834B"));// 创建柱状图QChart *ch…

基于springboot+vue的美食烹饪互动平台

博主主页&#xff1a;猫头鹰源码 博主简介&#xff1a;Java领域优质创作者、CSDN博客专家、阿里云专家博主、公司架构师、全网粉丝5万、专注Java技术领域和毕业设计项目实战&#xff0c;欢迎高校老师\讲师\同行交流合作 ​主要内容&#xff1a;毕业设计(Javaweb项目|小程序|Pyt…

Anthropic

文章目录 关于 Anthropic公司产品anthropic-sdk-python 基本使用 关于 Anthropic 官网&#xff1a;https://www.anthropic.comhuggingface : http://huggingface.co/Anthropicgithub : https://github.com/anthropics https://github.com/anthropics/anthropic-sdk-python官方…

【MySQL】深入解析日志系统:undo log、redo log、bin log

文章目录 前言1、undo log1.1、undo log 是什么1.2、事务回滚 2、redo log2.1、redo log 是什么2.2、redo log 刷盘2.3、redo log 硬盘文件 3、bin log3.1、bin log 是什么3.2、bin log 和 redo log 区别3.3、bin log 刷盘3.4、两阶段提交 前言 MySQL数据库提供了功能强大的日…

6.3 业务分析方法 (15%)

一、业务分析方法 1、客户分析 用户从哪里来到哪里去&#xff1b;来源于各个渠道&#xff1b; 分析: 投入产出比&#xff1a;微博&#xff1e;公众号 展示量&#xff1a;微博低于公众号&#xff1b;若增加品牌曝光率&#xff0c;可用公众号渠道 跳失率&#xff1a;微博低于公…

C# Winform画图绘制圆形

一、因为绘制的圆形灯需要根据不同的状态切换颜色,所以就将圆形灯创建为用户控件 二、圆形灯用户控件 1、创建用户控件UCLight 2、设值用户控件大小(30,30)。放一个label标签,AutoSize为false(不自动调整大小),Dock为Fill(填充),textaglign为居中显示。 private Color R…

【leetcode】删除链接的倒数第N个节点

/*** Definition for singly-linked list.* function ListNode(val, next) {* this.val (valundefined ? 0 : val)* this.next (nextundefined ? null : next)* }*/ /*** param {ListNode} head* param {number} n* return {ListNode}*/ var removeNthFromEnd fun…

赋能中国制造,大道云行发布智能制造分布式存储解决方案

《中国制造2025》指出&#xff0c;“制造业是国民经济的主体&#xff0c;是立国之本、兴国之器、强国之基。” 智能制造引领产业提质增效 智能制造是一种利用先进的信息技术、自动化技术和智能技术来优化和升级制造业生产过程的方法。它将人工智能、大数据、物联网、机器学习等…

3DEXPERIENCE Works八大核心优势分析

云技术正在加速普及&#xff0c;助力各行各业数字化转型。根据IDC 2023年12月发布的报告&#xff0c;2023年全球云计算市场规模达到3329亿美元&#xff0c;同比增长19.4%。其中&#xff0c;公有云市场规模达到2587亿美元&#xff0c;同比增长21.5%;私有云市场规模达到742亿美元…

深度学习500问——Chapter02:机器学习基础(3)

文章目录 2.10 主成分分析&#xff08;PCA&#xff09; 2.10.1 主成分分析&#xff08;PCA&#xff09;思想总结 2.10.2 图解PCA核心思想 2.10.3 PCA算法推理 2.10.4 PCA算法流程总结 2.10.5 PCA算法主要优缺点 2.10.6 降维的必要性及目的 2.10.7 KPCA与PCA的区别 2.11 模型评估…

JavaScript基础2之运算符、函数

JavaScript基础 运算符一元操作符递增/递减一元加和减 布尔操作符逻辑非逻辑与逻辑或 乘性操作符乘法操作符除法操作符取模操作符 加性操作符加法操作符减法操作符 比较操作符相等操作符关系操作符 函数函数声明函数表达式箭头函数函数的实参和形参arguments 默认参数参数的拓展…

vue 使用vue-scroller 列表滑动到底部加载更多数据

安装插件 npm install vue-scroller -dmain.js import VueScroller from vue-scroller Vue.use(VueScroller)<template><div class"wrap"><div class"footer"><div class"btn" click"open true">新增</d…

1.2计算机体系结构与存储系统-2

1.编址的相关计算 存1个1或1个0的单位是位&#xff08;bit&#xff09;&#xff1b; 内存是按字节&#xff08;byte&#xff09;编址的&#xff1b; 1byte8bit&#xff1b; 如果有4096个字节的内存&#xff0c;想要表示内存地址的话需要多少位&#xff1f; 0-4095&#xff08;…

项目总体测试计划word

1. 引言 1.1 目的 1.2 适用范围 2. 测试类型 2.1 集成测试 2.2 系统测试 2.3 验收测试 2.4 回归测试 3. 测试环境 4. 测试工具 5. 测试内容 5.1 集成测试 5.1.1 集成测试角色与职责 5.1.2 集成测试产生的工作产品清单 5.2 系统测试 5.2.1 系统测试的角色与职责 5.2.2 系统测试产…

双缝实验是量子力学的重要基石之一

双缝实验是物理学界的基石&#xff0c;特别是对于量子力学来讲。理解这个实验需要结合直觉、数学以及对量子理论抽象且奇异的现实的接受。 一、双缝实验的基础知识 双缝实验证明了波粒二象性的概念&#xff0c;这是量子粒子的基本属性。量子粒子同时具有粒子和波的性质。 在这…

【鸿蒙 HarmonyOS 4.0】登录流程

一、背景 登录功能在应用中是一个常用模块&#xff0c;此次使用 HarmonyOS 实现登录流程&#xff0c;包含页面呈现与网络请求。 二、页面呈现 三、实现流程 3.1、创建项目 构建一个ArkTS应用项目(Stage模型)&#xff0c;今天创建流程可查看官网教程&#xff1a;文档中心 目…

BUUCTF crypto做题记录(13)新手向

一、[MRCTF2020]vigenere 这是一道维吉尼亚密码&#xff0c;但由于不知道密钥&#xff0c;所以我们需要采用爆破的方式。Vigenere Solver | guballa.de 答案&#xff1a;flag{vigenere_crypto_crack_man} 二、[MRCTF2020]keyboard 之前做过一个类似的题目&#xff0c;用九宫格…

一文掌握:教务管理系统该如何设计?

hello&#xff0c;我是贝格前端工场&#xff0c;本期给大家分享教务管理系统的知识点&#xff0c;欢迎老铁们点赞、关注&#xff0c;如有需求可以私信我们。 一、什么是教务管理系统 教务管理系统是一种用于管理学校或教育机构的学生、课程和教学活动的软件系统。它提供了一种…

基于SpringBoot+Apache POI的前后端分离外卖项目-苍穹外卖(十九)

数据导出 1. 工作台1.1 需求分析和设计1.1.1 产品原型1.1.2 接口设计1.2.1 Controller层1.2.2 Service层接口1.2.3 Service层实现类1.2.4 Mapper层 1.3 功能测试 2. Apache POI2.1 介绍2.2 入门案例2.2.1 将数据写入Excel文件2.2.2 读取Excel文件中的数据 3. 导出运营数据Excel…