vue基本操作[2] 续更----让世界感知你的存在

这篇具有很好参考价值的文章主要介绍了vue基本操作[2] 续更----让世界感知你的存在。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Vue文件解析

什么是<template/>标签

template是html5新元素,主要用于保存客户端中的内容,表现为浏览器解析该内容但不渲染出来,可以将一个模板视为正在被存储以供随后在文档中使用的一个内容片段。

关于单文件组件

vue的单文件相当于一个页面中的组件,包含了关于该组件的html-css-js文件集合,这么做的目的有利于项目的管理和整合,官方说法是有构建步骤。

在<template/>标签下只能有一个子节点元素,如果写多个如<div/>这样的标签则会报错,如下所示


"""
<template>
	<div></div>
	<div></div>
</template>
//run --> throw error
-Component template should contain exactly one root element. If you are using v-if on multiple elements, use v-else-if to chain them instead.

"""


.vue文件可包含html-css-js,webpack自动打包成三个文件?

在.vue文件中,dom结构可以写在<template/>标签下,而针对该dom结构的样式文件则作为<template/>标签的兄弟元素<style/>存在,同样的控制该dom结构的脚本程序写在另一个兄弟元素<script/>之中,这样一来,每个组件自己对应的结构样式都在同一个文件之中,便不会与其它的组件搞混了。

 文章来源地址https://www.toymoban.com/news/detail-583216.html

vue基本操作[2] 续更----让世界感知你的存在

 

style标签有哪些属性?分别是什么意思?

<style/>标签包含scoped和module属性,分别表示css作用域和css模块,一般会写上scoped属性,表示样式仅对当前组件以及其子组件的模板部分生效

script标签中的export default是什么意思?

可以从全文仅有的一张图中看到,<script/>标签下第一行代码是export default {……},这是ES6新增的模块部分的语法,采用模块的方式,每个文件都自成一个模块,采用export和import来暴露和引用接口。一个文件或模块中,export 和 import可以有多个,但export default只能有一个,使用该命令之后别的模块引用时就可以不需要知道所要加载的模块变量名

export default下可以写哪些东西?

可以写很多东西,包括变量和方法,对象等,只要是想作为开放的接口都可以写,在.vue文件中一般写上data() {}以及method等,data指的是在该组件中定义的模板数据,而如果你对<template/>中的元素绑定了点击方法,如<button @click="login">,则可如下所示:


"""
<script>
export default {
  name: 'hello',
  data () {
	return {
	  msg: 'Welcome to Your Vue.js App'
	}
  },
  methods: {
		  login: function() {
			  console.log(this.username,this.password);
		  }
		}
}
</script>

"""


Vue使用方法

Vue基本使用

Vue.js是一款流行的开源JavaScript前端框架,旨在更好地组织与简化Web开发。Vue所关注的核心是MVC模式中的视图层,同时,它也能方便地获取数据更新,并通过组件内部特定的方法实现视图与模型的交互。

基本语法

1.vue的使用要从创建Vue对象开始

let vm = new Vue();

2.创建vue对象

创建vue对象的时候,需要传递参数,是json对象,json对象对象必须至少有两个属性成员


"""
vm = new Vue({
el:"#app",
data: {},
  methods:{},
  watch:{},
  filters:{},
  })

"""


el:设置vue可以操作的html内容范围,值就是css的id选择器。

data: 保存vue.js中要显示到html页面的数据。

methods:定义函数。

watch:监听属性

filters:定义过滤器。

3.设置控制范围

vue.js要控制器的内容外围,必须先通过id来设置。

4.简单示例


"""
 <meta charset="UTF-8">
	<title>Title</title>
	<!--导入vue.js--> 
<p id="app">
   {{message}} 
</p>

"""


Vue.js的M-V-VM思想

示例:


"""
  <meta charset="UTF-8">
	<title>Title</title> 
<p id="app">
	<!-- 在双标签中显示数据要通过 {{ }} 来实现-->
	{{name}}
	</p><p>{{age}}</p>
	<!-- 在表单输入框中显示数据要使用模板语法 v-model 来完成-->
	<input type="text" v-model="name">
<p></p>

"""


 

要是在输入框中输入,则html中的那么对应的值也会跟着改变

在浏览器中可以在 console.log通过 vm对象可以直接访问el和data属性,甚至可以访问data里面的数据

console.log(vm.$el) # #box vm对象可以控制的范围

console.log(vm.name); 显示name的值

也可以通过console直接修改data中的值,页面也会跟着改变

总结

1. 如果要输出data里面的数据作为普通标签的内容,需要使用{{ }} 用法: vue对象的data属性: data:{

name:"小明",}

标签元素: {{ name }}

2. 如果要输出data里面的数据作为表单元素的值,需要使用vue.js提供的元素属性v-model 用法: vue对象的data属性:

data:{ name:"小明", }

表单元素:

显示数据

显示数据的一般规则:

在双标签中显示数据要通过{{ }}来完成数据显示

在表单输入框中显示数据要使用v-model来完成数据显示

输出html代码,要使用v-html来输出.v-html必须在html标签里面作为属性写出来.

示例:


"""
 <meta charset="UTF-8">
	<title></title> 
<p id="app">
	{{title}}
	{{ url1 }}
	用{{}}显示出来的html代码则会按原始字符串输出 :
	{{ img }} <br>
	以下是图片 <br>
	<span v-html="img"></span>   <br ><!--="" 在此用data中的img来显标签属性值,即就是把img原样放入span中="" --="">
</p>

"""


在输出内容到普通标签的使用{{ }}还支持js代码。


"""
{{str1.split("").reverse().join("")}}
	<!--支持js的运算符-->
	{{num1+3}}
	<!--  js还有一种运算符,三元运算符,类似于python里面的三元表达式
		三元运算符的语法:
		 判断条件 ? 条件为true : 条件为false的结果
		python 三元表达式[三目运算符]的语法:
		a if 条件 else b
	 -->
	num1和num2之间进行比较,最大值:{{ num2>num1?num2:num1 }}

"""


常用指令

指令 (Directives) 是带有“v-”前缀的特殊属性。每一个指令在vue中都有固定的作用。

在vue中,提供了很多指令,常用的有:v-if、v-model、v-for等等。

指令会在vm对象的data属性的数据发生变化时,会同时改变元素中的其控制的内容或属性。

因为vue的历史版本原因,所以有一部分指令都有两种写法:


"""
vue1.x写法              vue2.x的写法
v-html         ---->   {{  }}   # vue2.x 也支持v-html
v-bind:属性名   ---->   :属性
v-on:事件名     ---->   @事件名

"""


Vue数据与方法

VUE实现前端页面数据与控件的双向绑定,VUE实例中必须定义数据,以及操作数据的方法。

Vue实现使用new Vue函数创建,当一个 Vue 实例被创建时,它向 Vue 的响应式系统中加入了其 data对象中能找到的所有的属性。当这些属性的值发生改变时,视图将会产生“响应”,即匹配更新为新的值。


"""
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Hello Vue</title>
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
</head>
<body>
<script>
//我们的数据对象
var data = { a: 1 }
// 该对象被加入到一个 Vue 实例中
var vm = new Vue({
  data: data
})
// 获得这个实例上的属性
// 返回源数据中对应的字段
console.log('vm.a == data.a '+(vm.a == data.a));
// 设置属性也会影响到原始数据
vm.a = 2
console.log('data.a='+data.a);
// ……反之亦然
data.a = 3
console.log('vm.a='+vm.a);
</script>
</body>
</html>

"""


 

vue基本操作[2] 续更----让世界感知你的存在

 

当这些数据改变时,视图会进行重渲染。值得注意的是只有当实例被创建时 data 中存在的属性才是响应式的。也就是说如果你添加一个新的属性,比如:

vm.b = ‘hi’

那么对 b 的改动将不会触发任何视图的更新

使用 Object.freeze(),这会阻止修改现有的属性,也意味着响应系统无法再追踪变化。


"""
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Hello Vue</title>
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
</head>
<body>
	<div id="app">
	  <p>{{ foo }}</p>
	  <!-- 这里的 `foo` 不会更新! -->
	  <button v-on:click="foo = 'baz'">Change it</button>
	</div>
<script>
var obj = {
		  foo: 'bar'
		}

Object.freeze(obj)

new Vue({
  el: '#app',
  data: obj
})
</script>
</body>
</html>

"""


vue基本操作[2] 续更----让世界感知你的存在

 

计算属性

模板内的表达式非常便利,但是设计它们的初衷是用于简单运算的。在模板中放入太多的逻辑会让模板过重且难以维护。例如:


"""
<div id="example">
  {{ message.split('').reverse().join('') }}
</div>

"""


在这个地方,模板不再是简单的声明式逻辑。你必须看一段时间才能意识到,这里是想要显示变量 message 的翻转字符串。当你想要在模板中多次引用此处的翻转字符串时,就会更加难以处理。

所以,对于任何复杂逻辑,你都应当使用计算属性。


"""
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Hello Vue</title>
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
</head>
<body>
	<div id="app">
	  <p>{{ reverseMsg }}</p>
	</div>
<script>
var obj = {
	foo: 'bar'
}
new Vue({
  el: '#app',
  data: obj,
  computed:{
	  reverseMsg:function(){
		  return this.foo.split('').reverse().join('')
	  }
  }
})
</script>
</body>
</html>

"""


vue基本操作[2] 续更----让世界感知你的存在

计算属性与VUE 方法区别

计算属性会缓存计算结果,VUE方法是每次都计算,两种方式的最终结果确实是完全相同的。然而,不同的是计算属性是基于它们的依赖进行缓存的。只在相关依赖发生改变时它们才会重新求值。这就意味着只要 message 还没有发生改变,多次访问 reversedMessage 计算属性会立即返回之前的计算结果,而不必再次执行函数。


"""
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Hello Vue</title>
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
</head>
<body>
	<div id="app">
	  <p>{{ reverseMsg }}</p>
	  <p>{{ reverseMth() }}</p>
	</div>
<script>
var obj = {
	foo: 'bar'
}
new Vue({
  el: '#app',
  data: obj,
  computed:{
	  reverseMsg:function(){
		  return this.foo.split('').reverse().join('')
	  }
  },
  methods: {
	reverseMth: function () {
		return this.foo.split('').reverse().join('')
	}
  }
})
</script>
</body>
</html>

"""


vue基本操作[2] 续更----让世界感知你的存在

 

对应非响应依赖,计算属性只计算第一次的数值并缓存,以后发生变化也不再更新


"""
 now: function () {
			return Date.now()
	  }

"""


计算属性的 setter

计算属性默认只有 getter ,不过在需要时你也可以提供一个 setter :


"""
computed: {
  fullName: {
	// getter
	get: function () {
	  return this.firstName + ' ' + this.lastName
	},
	// setter
	set: function (newValue) {
	  var names = newValue.split(' ')
	  this.firstName = names[0]
	  this.lastName = names[names.length - 1]
	}
  }
}

"""


现在再运行 vm.fullName = ‘John Doe’ 时,setter 会被调用,vm.firstName 和 vm.lastName 也会相应地被更新。

侦听器

虽然计算属性在大多数情况下更合适,但有时也需要一个自定义的侦听器。这就是为什么 Vue 通过 watch 选项提供了一个更通用的方法,来响应数据的变化。当需要在数据变化时执行异步或开销较大的操作时,这个方式是最有用的。


"""
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Hello Vue</title>
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
</head>
<body>
	<div id="app">
	  <p>{{ foo }}</p>
	  <input v-model="foo"/>
	</div>
<script>
var obj = {
	foo: 'bar'
}
new Vue({
  el: '#app',
  data: obj,
  watch: {
	  foo:function(newVal,oldVal)
	  {
		  console.log('newVal='+newVal+',oldVal='+oldVal);
	  }
  }
})
</script>
</body>
</html>

"""


 

 

vue基本操作[2] 续更----让世界感知你的存在

 

到了这里,关于vue基本操作[2] 续更----让世界感知你的存在的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • 探索MATLAB世界:掌握基础知识与实用技能(1. MATLAB环境与基本操作 2. 数据类型与变量 3. 条件与循环,1. 数据分析与统计 2. 图像处理与计算机视觉 3. 信号处理与控制系统)

    欢迎阅读本篇博客,我们将深入探讨MATLAB语言的基础知识与实用技能,旨在帮助初学者、初中级MATLAB程序员以及在校大学生系统地掌握这门强大的科学计算与数据可视化工具。 一、MATLAB的基础知识 1. MATLAB环境与基本操作 2. 数据类型与变量 3. 条件与循环 二、MATLAB的实用技能

    2024年03月12日
    浏览(62)
  • OpenCV基本图像处理操作(一)——图像基本操作与形态学操作

    图像显示 转hsv图像 颜色表示为三个组成部分:色调(Hue)、饱和度(Saturation)和亮度(Value)。常用于图像处理中,因为它允许调整颜色的感知特性,如色彩和亮度,这些在RGB颜色模型中不那么直观。 HSV模型特别适用于任务如图像分割和对象追踪,因为它可以更好地处理光

    2024年04月22日
    浏览(89)
  • Git基本操作:版本打Tag的作用以及基本操作流程

    作用介绍 在git代码管理时,有时候我们想对某个特定的commit 添加标记,比如要标识版本信息,这时候就可以用的git中的打标签功能。 打tag就类似于我们看书放书签一样,以后可以直接用tag找到提交的位置,不然的话,就只有看commit的哈希值返回指定位置,比较繁琐。 特别强

    2024年02月13日
    浏览(44)
  • OpenCV基本操作——算数操作

    两个图像应该具有相同的大小和类型,或者第二个图像可以是标量值 注意:OpenCV加法和Numpy加法之间存在差异。OpenCV的加法是饱和操作,而Numpy添加的是模运算 ((414, 500, 3), (429, 499, 3)) (429, 499, 3) 其实也是加法,只是权重不同

    2024年02月13日
    浏览(47)
  • Elasticsearch基本操作之文档操作

    本文来说下Elasticsearch基本操作之文档操作 文档概述 在创建好索引的基础上来创建文档,并添加数据。 这里的文档可以类比为关系型数据库中的表数据,添加的数据格式为 JSON 格式。 在 apifox 中,向 ES 服务器发 POST 请求 :http://localhost:9200/person/_doc,请求体内容为: 服务器响

    2024年02月01日
    浏览(39)
  • OpenCV基本操作——图像的基础操作

    注:opencv图像坐标系中,左上角是原点,y轴向下,x轴向右,单位像素点 有时需要在B,G,R通道图像上单独工作。在这种情况下,需要将BGR图像分割成单个通道。或者在其他情况下,可能需要将这些单独的通道合并到BGR图像 opencv中有150多种颜色空间转换方法。最广泛使用的转

    2024年02月13日
    浏览(97)
  • GIT —— 基本操作,分支管理,远程操作

    最近找实习,在完善简历,遂发一发存货,有待持续完善,我认为这部分非常的有意义 创建 配置 将配置生效于 当前机器的 所有仓库 删除配置/删除全局配置 .git :版本库,不允许手欠做任何修改! stage/ 或 index/ :暂存区,索引 gitcode/ : 工作区 修改的工作区内容会写入**对

    2024年02月11日
    浏览(72)
  • Java操作mongodb的基本操作

    目录 MongoDB的基本操作 新增 方式一: 方式二: 删除:  带条件的删除 修改 修改条件 修改并添加  多条件修改: 查询 普通查询 条件查询 ​编辑 多条件查询 模糊查询: 查询除来的结果有两种的显示方式: MongoDB中的文档本质上是一种类似JSON的BSON格式的数据。 BSON是一种类

    2023年04月09日
    浏览(52)
  • java 操作es 的基本操作

    创建索引 创建索引别名 索引的相关设置 查询索引数据 bulk 导入数据 持续更新中~ pom的坐标

    2024年01月20日
    浏览(43)
  • 【玩转Linux操作】crond的基本操作

    🎊专栏【玩转Linux操作】 🍔喜欢的诗句:更喜岷山千里雪 三军过后尽开颜。 🎆音乐分享【Counting Stars 】 欢迎并且感谢大家指出小吉的问题🥰 crond 是 Linux 系统中的一个守护进程(daemon),用于管理和执行定时任务。它负责在预定的时间间隔内运行用户定义的命令、脚本或

    2024年02月12日
    浏览(60)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包