Vue介绍与入门(一篇入门)

Vue.js 是一个流行的 JavaScript 框架,专门用于构建用户界面和单页面应用程序。它简单易学,但功能强大,能够帮助开发者快速构建交互性强的 Web 应用。

本教程旨在帮助那些刚开始学习 Vue.js 的开发者快速入门,并掌握一些基础知识。在这个教程中,我们将介绍 Vue.js 的一些重要概念,比如组件、数据绑定、指令等,帮助你了解如何使用 Vue.js 来构建应用程序。

请注意,本教程假设你已经具有一定的 JavaScript 和 HTML/CSS 基础知识。如果你想要更好地理解本教程内容,建议在继续学习之前先学习一些基础知识。

作者建议:学习知识在于深度理解,多动手、多动脑,总能更快地领悟。不要仅仅停留在阅读代码的层面,亲自动手敲打一遍,会带来更丰富的收获。通过实践,我们能够更深入地理解知识,掌握技能,并且在解决问题时更加得心应手。相信自己的能力,坚持不懈地实践,你将会取得更大的进步和成就。让学习成为一种习惯,让动手实践成为你提升的捷径,加油!你是最棒的!

本篇博客的编辑工具:HBuilderX文档

建议学完:HTML  Css   JavaScript 再来学习Vue

Vue.js是什么

Vue(读音 /vjuː /,类似于view) 是一套用于构建用户界面的渐进式框架。Vue 的核心库只关注视图层,不仅易于上手,还便于与第三方库或既有项目整合. Vue.js 是前端的主流框架之一,和Angular.js、React.js 一起,并成为前端三 大主流框架!

Vue官网:Vue.js

Vue.js优点

1.体积小--->压缩后33k

2.更高的运行效率

     用JQuery或者原生的JavaScriptDOM操作函数对DOM进行频繁操作的 时候,浏览器要不停的渲染新的DOM树,导致页面看起来非常卡顿。

    基于虚拟dom,一种可以预先通过JavaScript进行各种计算,把最终的 DOM操作计算出来并优化的技术,最后在计算完毕才真正将DOM操作提交。

3.双向数据绑定,简化Dom操作

      通过MVVM思想实现数据的双向绑定,让开发者不用再操作dom对象, 把更多的精力投入到业务逻辑上.

      MVVM是Model-View-ViewModel的简写。MVVM 就是将其中的View的状态和行为抽象化,让我们将视图 UI 和业务逻辑分开.

4.生态丰富,学习成本低

       市场上拥有大量成熟、稳定的基于vue.js的ui框架、常用组件!来即用实现 快速开发!对初学者友好、入门容易、学习资料多.

Vue安装

1.下载Vue.js文件并导入js文件

 

 

2.在HTML文件中引用vue.js文件

这样一个基础的vue项目(vue项目有进阶版)就完成了

第一个Vue程序

效果演示:

代码: 

<!DOCTYPE html>
<html><head><meta charset="utf-8"><title></title><script src="js/vue.js"></script></head><body><div id="app">{{message}}</div><script>var app = new Vue({el:'#app',data:{message: 'Hello Vue!'}})</script></body>
</html>

语法解释:

{{ 变量 }} ,插值表达式获取data数据

new Vue();创建Vue对象(VM对象)

el:数据挂载的dom对象

Vue会管理el选项命中的元素及其内部的后代元素

可以使用其他的选择器,但是建议使用ID选择器

可以使用其他的闭合标签,不能使用HTML和BODY

Vue中用到的数据定义在data中

data 中可以写复杂类型的数据,如对象,数组

Vue指令

指令带有前缀 v- 开头,以表示它们是 Vue 提供的特殊属性

1.v-text

作用是设置标签的文本内容

默认写法会替换全部内容,使用差值表达式可以替换指定内容

内部支持写表达式

代码演示:<div v-text="message"><p>你好</p></div>

这个v-text与{{message}}有区别,我们在下面与v-html一起讨论

<!DOCTYPE html>
<html><head><meta charset="utf-8"><title></title><script src="js/vue.js"></script></head><body><div id="app"><p v-text="message">你好</p><p>你好{{message}}</p></div><script>var app = new Vue({el:'#app',data:{message: 'Hello Vue!'}})</script></body>
</html>

效果演示:

2.v-html

作用是设置元素的innerHTML

内容中有html结构会被解析为标签

内部支持写表达式

代码演示:<div v-html="message">你好</div>

<!DOCTYPE html>
<html><head><meta charset="utf-8"><title></title><script src="js/vue.js"></script></head><body><div id="app"><div v-text="message"><p>你好</p></div><div>你好{{message}}</div><div v-html="message">你好</div></div><script>var app = new Vue({el:'#app',data:{message: '<p>Hello vue</p>'}})</script></body>
</html>

效果演示:

3.{{message}}  v-text v-html区别

{{message}}:这个语法也就是将message的值插在网页中(他不会覆盖其他的值);

v-text v-html:会将这个标签的内容修改或者填入message中的值

v-text:不能识别message中的标签

v-html:可以识别message中的标签

4.v-on

作用是为元素绑定事件(这里的事件指的是JavaScript中学习的事件,如果不知道可以跳转:JavaScript学习)

事件名不需要写on指令可以简写为@

绑定的方法定义在methods属性中,可以传入自定义参数

代码演示:

            <input type="button" value="测试1" v-on:click = "test()"/>
            <input type="button" value="测试2" @click="test()"/>

<!DOCTYPE html>
<html><head><meta charset="utf-8"><title></title><script src="js/vue.js"></script></head><body><div id="app"><input type="button" value="测试1" v-on:click = "test()"/><input type="button" value="测试2" @click="test()"/></div><script>var app = new Vue({el:'#app',data:{message: '<p>Hello vue</p>'},methods:{test(){alert("你好登山者");}}})</script></body>
</html>

效果演示:

 5.v-model

作用是便捷的设置和获取表单元素的值

绑定的数据会和表单元素值相关联

绑定的数据表单元素的值 双向数据绑定

代码演示:

<!DOCTYPE html>
<html><head><meta charset="utf-8"><title></title><script src="js/vue.js"></script></head><body><div id="app"><input type="button" value="测试1" @click = "test()"/><div>{{message}}</div></div><script>var app = new Vue({el:'#app',data:{message: ''},methods:{test(){this.message = "加油登山者";}}})</script></body>
</html>

效果演示:

6.v-show

作用是根据真假切换元素的显示状态

原理是修改元素的display,实现显示隐藏

指令后面的内容,最终都会解析为布尔值

值为true元素显示,值为false元素隐藏

数据改变之后,对应元素的显示状态会同步更新

代码演示:

<!DOCTYPE html>
<html><head><meta charset="utf-8"><title></title><script src="js/vue.js"></script></head><body><div id="app"><img src="img/1.jpg" v-show="key" /><input type="button" value="测试1" @click="test()" /></div><script>var app = new Vue({el: '#app',data: {message: '',key: true},methods: {test() {this.key = false;}}})</script></body>
</html>

效果演示:

 7.v-if

作用是根据表达式的真假切换元素的显示状态

本质是通过操纵dom元素来切换

显示状态表达式的值为true,元素存在于dom中,为false,从dom中移除 频繁的切换v-show,反之使用v-if,前者的切换消耗小

代码:

<!DOCTYPE html>
<html><head><meta charset="utf-8"><title></title><script src="js/vue.js"></script></head><body><div id="app"><img src="img/1.jpg" v-if="key" /><div v-else>隐藏</div><input type="button" value="测试1" @click="test()" /></div><script>var app = new Vue({el: '#app',data: {message: '',key: true},methods: {test() {this.key = false;}}})</script></body>
</html>

效果:

8.v-bind

作用是为元素绑定属性

完整写法是v-bind:属性名

简写的话可以直接省略v-bind,只保留:属性名

代码:

<!DOCTYPE html>
<html><head><meta charset="utf-8"><title></title></head><script src="js/vue.js"></script><body><div id="app"><img v-bind:src="img"/><img :src="img" :title="title"/></div><script>var app = new Vue({el: '#app',data: {img:"img/1.jpg",title:"这是一个手机"}})</script></body>
</html>

效果:

 

9.v-for

作用是根据数据生成列表结构

数组经常和v-for结合

使用语法是(item,index)in数据

item 和index 可以结合其他指令一起使用

数组长度的更新会同步到页面上是响应式的

为循环绑定一个key值 :key=”值” 尽可能唯一

代码:

<!DOCTYPE html>
<html><head><meta charset="utf-8"><title></title><script src="js/vue.js"></script></head><body><div id="app"><select><option>请选择</option><option v-for="city in citys">{{city}}</option></select><table border="1"><tr><td>序号</td><td>姓名</td><td>年龄</td></tr><tr v-for="(obj,index) in objs"><td>{{index+1}}</td><td>{{obj.name}}</td><td>{{obj.age}}</td></tr></table></div><script>var app = new Vue({el:'#app',data:{citys:['上海','陕西','四川'],objs:[{name:'张三',age:19},{name:'李四',age:18}]}})</script></body>
</html>

效果:

Vue 实例生命周期 

每个 Vue 实例在被创建时都要经过一系列的初始化过程——例如,需要设置数 据监听、编译模板、将实例挂载到 DOM 并在数据变化时更新 DOM 等。同时 在这个过程中也会运行一些叫做生命周期钩子的函数,这给了用户在不同阶段添 加自己的代码的机会

简单说:一个组件从开始到最后消亡所经历的各种状态,就是一个组件的生命周期

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

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

相关文章

【UE5.1 角色练习】12-坐骑——Part2(让角色骑上坐骑)

目录 前言 效果 步骤 一、坐骑的父类 二、将角色附加到坐骑 三、添加坐姿 四、骑上坐骑 五、从坐骑上下来 前言 在上一篇&#xff08;【UE5.1 角色练习】11-坐骑——Part1&#xff08;控制大象移动&#xff09;&#xff09;基础上继续实现角色骑上坐骑的功能。 效果 …

语言的数据结构:树与二叉树(二叉树篇)

语言的数据结构&#xff1a;树与二叉树&#xff08;二叉树篇&#xff09; 前言概念特别的二叉树满二叉树完全二叉树 存储结构顺序存储链式存储 查找方式 前言 上文说到了树&#xff0c;有人认为二叉树是树的每一个分支都有两个子节点。其实这也对。但二叉树在此基础上还做了限…

RS422串口通信协议介绍和基础代码实现

**RS-422串口协议介绍**RS-422是一种工业标准的通信接口&#xff0c;其全称是“平衡电压数字接口电路的电气特性”。它是在RS-232的基础上发展而来&#xff0c;旨在解决RS-232通信距离短和速率低的缺点。以下是对RS-422串口协议的详细介绍&#xff1a;传输速率与距离&#xff1…

MyCAT 2 简单入门

MyCAT 2 基础 什么是 MyCAT 2&#xff1f; MyCAT 2 是一款开源的数据库中间件&#xff0c;它主要用于解决数据库的分库分表、读写分离等问题。MyCAT 2 基于 MyCAT 1 的架构进行优化和重构&#xff0c;具有更高的性能和稳定性&#xff0c;支持多种数据库类型&#xff0c;包括 …

【QCustomPlot实战系列】QCPGraph区域高亮

使用QCPDataSelection来设置选中的区域&#xff0c;并将QCPGraph的可选择区域设置成QCP::stMultipleDataRanges void AreaPieces::initCustomPlot(QCustomPlot *parentPlot) {QVector<double> x {0, 1, 2, 3, 4, 5, 6, 7, 8};QVector<double> y {200, 560, 750…

《mysql篇》--mysql常用命令

数据库操作 显示当前数据库 show databases;(database 后面要加s) 这行命令用来显示当前有多少个数据库 //mysql中有自带的四个库 创建数据库 create database 数据库名(name); 创建一个数据库 create dabase if not exists <数据库名(name)>; //如果系统有与当前创建…

前端vite+vue3——利用环境变量和路由区分h5、pc模块打包(从0到1)

⭐前言 大家好&#xff0c;我是yma16&#xff0c;本文分享 前端vitevue3——利用环境变量和路由对前端区分h5和pc模块打包&#xff08;从0到1&#xff09;。 背景&#xff1a; 前端本地开发pc和h5的项目&#xff0c;发布时需要区分开h5和pc的页面 vite Vite 通过在一开始将应…

图片怎么加水印?快来试试这6个图片加水印方法(2024年新)

图片怎么加水印&#xff1f;作为打工人在日常的工作生活中总会遇到各种各样的工作难题&#xff0c;相信从事电商或者是设计等工作的小伙伴们&#xff0c;遇到最多的问题应该就是给图片添加水印了。为什么要给图片加水印&#xff1f;其实给图片加水印最主要的目的是保护我们的图…

刷题——二叉树的中序遍历

双指针法 void midorder(vector<int>&res, TreeNode* root){if(root NULL) return;midorder(res, root->left);res.push_back(root->val);midorder(res, root->right);}vector<int> inorderTraversal(TreeNode* root) {// write code herevector<…

代码随想录算法训练营第四十九天|LeetCode300 最长递增子序列、LeetCode674 最长连续递增序列、LeetCode718 最长重复子数组

题1&#xff1a; 指路&#xff1a;300. 最长递增子序列 - 力扣&#xff08;LeetCode&#xff09; 思路与代码&#xff1a; 求最长递增子序列&#xff0c;那么就定义一个数组dp[i]&#xff0c;含义为最长递增子序列。这里有一个小问题&#xff0c;这里的序列的范围为何。如果…

一文入门Makefile

今天我们来玩玩Makefile。 这边是借鉴的陈皓老师的《跟我一起写 Makefile》 pdf下载链接如下。 链接&#xff1a;https://pan.baidu.com/s/1woRq2nEkgzLv1o5uE0FZHg?pwdmhrh 提取码&#xff1a;mhrh 我们之前已经算是入门了gcc&#xff0c;那我们的下一站就是Makefile&…

http和https请求总结

http请求是不安全的请求的端口是80&#xff0c;https请求是安全的请求的端口是443 但是请求安全也不是绝对的。 要想先了解https就的先说几个概念 1、证书 2、加密算法 openssl TLS/SSL 3、协议x509协议 http传输数据都是明文&#xff0c;在数据传输的过程会经过很长的链路…

C#面: 能够将非静态的方法覆写成静态方法吗?

在C#中&#xff0c;不能将非静态方法覆写成静态方法。这是因为静态方法是属于类的&#xff0c;而非静态方法是属于类的实例的。覆写&#xff08;重写&#xff09;是指在派生类中重新实现基类中的虚方法或抽象方法&#xff0c;以改变其行为。而静态方法是无法被派生类所继承的&a…

嵌入式学习(Day 51:ARM指令/汇编与c语言函数相互调用)

1.Supervisor模式与SVC模式 Supervisor模式是ARM处理器的一个特权工作模式&#xff0c;允许执行特权指令和访问特权资源。SVC模式&#xff08;Supervisor Call&#xff09;是与Supervisor模式相关的一个功能或指令&#xff0c;用于从用户模式切换到Supervisor模式&#xff0c;…

1、Redis系列-Redis高性能原理详解

Redis高性能原理详解 Redis是一款高性能的内存数据库&#xff0c;广泛应用于需要快速读写访问的数据密集型应用中。它的高性能得益于多方面的设计和优化。以下是Redis高性能实现的详细解释&#xff1a; 1. 单线程架构 Redis采用单线程架构来处理客户端请求&#xff0c;这与传…

服务器流量收发测试-续篇

文章目录 一、概述二、普通java工程1&#xff0c;pom文件2&#xff0c; 定时任务3&#xff0c;打包4&#xff0c;jar运行 三、打包docker镜像1&#xff0c;镜像打包配置docker环境&#xff1a;2&#xff0c;连接远程镜像仓库 四、部署运行1. 容器运行2. 单容器多次运行jar3. 容…

大模型应用研发基础环境配置(Miniconda、Python、Jupyter Lab、Ollama等)

老牛同学之前使用的MacBook Pro电脑配置有点旧&#xff08;2015 年生产&#xff09;&#xff0c;跑大模型感觉有点吃力&#xff0c;操作起来有点卡顿&#xff0c;因此不得已捡起了尘封了快两年的MateBook Pro电脑&#xff08;老牛同学其实不太喜欢用 Windows 电脑做研发工作&am…

04_记录锁

记录锁&#xff08;Record Lock&#xff09; 文章目录 记录锁&#xff08;Record Lock&#xff09;简介原理加锁流程锁类型使用场景示例与其他锁的对比结论 简介 MySQL 中的记录锁&#xff08;Record Lock&#xff09;是行级锁的一种&#xff0c;用于锁定数据库表中的特定行。…

从零开始做题:老照片中的密码

老照片中的密码 1.题目 1.1 给出图片如下 1.2 给出如下提示 这张老照片中的人使用的是莫尔斯电报机&#xff0c;莫尔斯电报机分为莫尔斯人工电报机和莫尔斯自动电报机&#xff08;简称莫尔斯快机&#xff09;。莫尔斯人工电报机是一种最简单的电报机&#xff0c;由三个部分组…

SelfReg-UNet:解决UNet语义损失,增强特征一致性与减少冗余的优化模型

SelfReg-UNet&#xff1a;解决UNet语义损失&#xff0c;增强特征一致性与减少冗余的优化模型 提出背景拆解类比&#xff1a;整理书架语义一致性正则化内部特征蒸馏为什么 UNet 会有语义损失&#xff1f; 提出背景 论文&#xff1a;https://arxiv.org/pdf/2406.14896 代码&…