Vue第二篇:概念深度剖析

参考链接:https://www.bilibili.com/video/BV1oj411D7jk/?spm_id_from=333.788.recommend_more_video.0&vd_source=3969f30b089463e19db0cc5e8fe4583a

1、响应式数据与插值表达式理解
前端最基本的操作是:把数据呈现到页面上,把更新的数据再更新到页面上。
原生js的赋值操作如下:
<div id="box"></div>
<script>
let value = '这是内容'
document.getElementById('box').textContent = value
value = '新内容'
document.getElementById('box').textContent = value
</script>
以上DOM操作过于繁琐,Vue通过内置代码的方式将DOM功能进行了简化。
所谓的响应式数据指的是:Vue内部对数据做操作,它就会自动地更新到视图中,这样就可以省去大量的DOM操作。
上面的内容简化后为:
<div id="box">{{ title }}</div>
<script>
    const vm = new Vue({
        el: '#box',
        data(){
            return {
                title: '这是标题内容'
            }
        }
    })
</script>
后续针对title的修改会直接体现在页面上。

2、计算属性computed
methods中的函数,假如每次计算时依赖的值不变,则结果也不会发生变化,此时就不要重复计算,这样就存在优化空间。于是就产生了computed。
计算属性在定义时时一个函数,但是在使用时不能加括号,因为它是一个属性。

3、侦听器watch
在插值表达式和计算属性中,改数据的时候就会自动触发一个修改页面内容的操作。
监听器就是监听某个数据是否有变化,我们希望在数据变化的时候不仅仅是更新页面,还希望做点别的。
侦听器的意义:在插值表达式和计算属性时修改一个响应数据,它会做页面的更新,这是Vue内部自动实现的。如果也希望在过程中去参与一下,就可以通过监听器做一个处理。这是Vue在内部给我们开放了一个可以参与响应式的一个过程。
watch:{
    title(newValue, oldValue){
        console.log(newValue, oldValue)
    }
}

4、指令
(1)内容指令
<p v-text="title">123</p>
<p v-html="htmlContent">123</p>
(2)渲染指令
<p v-for="item in 5">这是内容</p>

当在组件中使用v-for时,key是必须的。作用是为了高效地更新虚拟DOM。


<p v-if="true">标签内容</p>
<p v-show="true">标签内容</p>
(3)属性指令
<p v-bind:title="title">这是内容</p>
等价于<p :title="title">这是内容</p>
(4)事件指令
<button v-on:click="output">按钮</button>
等价于<button @click="output">按钮</button>
(5)表单双向绑定指令
<input type="text" v-model="inputValue">

5、Vue CLI说明
它时Vue基于Webpack打造的脚手架工具,脚手架内置了很多模板和工具,可以让我们快速进行Vue的项目创建。
查看vue版本:vue --version
创建vue项目:vue create <project-name>

6、脚手架的项目结构
(1)package.json
在scripts中有serve/build/lint的命令。

serve命令:可以帮我们打开本地的静态资源服务器,帮我们把项目直接跑起来,方便我们在开发中去使用。启动方式为:npm run serve,然后通过localhost:8080访问页面。

build命令:进行代码打包,在开发时项目中有很多文件,但是最终呈现给用户的时候不会存在很多零碎的文件。打包命令:npm run build。打包完成后会出现dist目录,其中都是压缩过的html的代码,后面项目上线时也需要dist文件即可。此时启动打包后的服务的方法:先运行npm install serve -g,然后在项目目录下运行serve dist,最后通过localhost:3000可以访问页面
(2)node_modules:
包含项目安装的所有的包,这个代码都是一些第三方的工具,不需要改动。
(3)public
这些是不参与编译的资源
(4)src
里面是需要参与编译的资源。
比如assets中的logo.png需要编译成base64格式进行展示。
App.vue:根组件。
main.js:Vue应用的一个入口文件。

7、组件化开发
vue中包含结构template、逻辑script、样式style 三个部分。
每个vue都是单独的实例,最终会在编译环节进行一下结构生成,并替换掉之前写的自定义的HTML标签。
el选项只能在根组件中使用,而内部的子组件是不需要el选项的,因为这取决于标签的位置,而不是挂载在特定的标签上。

props父传子通信:一个或多个属性的配置
props:{
    msg: String,
    count: {
        type: [String, Number],
        default: 100,
        required: true
    }
}

父组件绑定数据的方法
<HelloWorld 
    msg="Welcome"
    :count="parentCount"
/>

export default{
    name: 'App',
    components:{
        HelloWorld
    },
    data(){
        return{
            parentCount: 1000
        }
    }
}

插槽:父组件应用子组件的内容中也可以写些信息,这样设置时比通过prop的方式传值更简单,同时可以传递更加复杂的结构比如HTML页面。即组件有一部分区域是开放的,这样自己可以随便定一些东西进去,而不再是完全由子组件内部做实现,使用起来更自由一些。

8、单页面应用程序
常规网站都是由多个页面组成的,每个页面去构建一些页面相关的一个功能内容。
而Vue只有一个html文件,也意味着它其实只有一个页面。
如何在一个页面中实现多页面应用的效果,其实就是检测页面URL的变化,当URL变化后在页面中渲染一些内容就可以了,这就是单页面应用程序。

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

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

相关文章

AI绘画创意文字全流程揭秘,你的终极文字艺术实操宝典

本教程收集于&#xff1a;AIGC从入门到精通教程汇总 AIGC技术不断更新迭代&#xff0c;国内出现了越来越多的新玩法&#xff0c;比如最近大家都在热议的AI绘画创意文字。 过去的一周&#xff0c;我把这些新玩法都研究了一遍&#xff0c;并总结了一套完整的制作流程。 主流的…

python+allure+jenkins

目录 前言 在 python 中使用 allure 1. 安装 pytest 2. 安装 pytest-allure-adaptor 3. 使用 pytest 执行测试用例并生成 allure 中间报告&#xff08;此步骤可以省略&#xff0c;因为在 jenkins job 中会配置执行类似的命令&#xff09; 4. Jenkins 中安装Allure Jenkin…

LED魔方屏的应用特点、适用场景跟应用优势

led魔方屏也被称之为立方体led显示屏、六面体led显示屏等&#xff0c;每个显示面之间实现了无缝拼接&#xff0c;运用技术前沿的箱体设计工艺&#xff0c;通过跟实际安装场景相结合&#xff0c;打造出更具创意的led显示屏产品&#xff0c;led魔方屏以独特的造型吸引用户&#x…

【ARM Coresight 系列文章 10.1 - ARM Coresight STM 介绍及使用】

文章目录 Guaranteed and invariant timing transactionsMultiple STPv2 master support 上篇文章&#xff1a;ARM Coresight 系列文章 10 - ARM Coresight STM 介绍及使用 Guaranteed and invariant timing transactions STM 支持两种类型的软件的数据&#xff0c;一种是 gua…

SpringCloud学习路线(3)—— Eureka注册中心

一、导引 服务调用出现的问题 服务调用采取的请求地址是静态的&#xff0c;当我们使用服务集群时&#xff0c;很容易造成只能调用固定的微服务上的接口。多个提供者&#xff0c;消费者的使用对象无法确定消费者无法得知提供者的状态 二、Eureka注册中心 &#xff08;一&…

【C#】并行编程实战:使用并发集合

在上一章的并行编程实现里&#xff0c;为了保护资源&#xff0c;我们对共享资源加锁&#xff08;各种同步原语&#xff09;来进行保护&#xff0c;避免多线程同时访问&#xff08;主要是写入&#xff09;。但一般来说&#xff0c;共享资源是一个可以由多个线程读写的集合&#…

JVM系列(8)——对象的内存布局

1、对象的创建过程 加载-验证-准备-解析-初始化-申请内存-成员变量赋初始值-加载构造方法。 前半段是JVM系列&#xff08;5&#xff09;——类加载过程&#xff0c;申请内存可参考&#xff1a;JVM系列&#xff08;3&#xff09;——内存分配与回收策略。 2、对象在内存中的存…

华为申请注册盘古大模型商标;京东推出言犀大模型,率先布局产业应用

7月14日科技新闻早知道&#xff0c;一分钟速览。 1.华为申请注册盘古大模型商标&#xff1a; 据天眼查 App 显示&#xff0c;7 月 7 日&#xff0c;华为技术有限公司申请注册“华为云盘古”、“Huawei Cloud Pangu Models”文字及图形商标&#xff0c;国际分类为网站服务、社…

常用API学习06(Java)

Biglnteger public BigInteger(int num, Random rnd) 获取随机大整数&#xff0c;范围&#xff1a;[0~2的num次方-1] public BigInteger(String val) 获取指定的大整数 public BigInteger(String val, int radix) 获取指定进制的大整数 public static BigInteg…

「深度学习之优化算法」(十四)麻雀搜索算法

1. 麻雀搜索算法简介 (以下描述,均不是学术用语,仅供大家快乐的阅读)   麻雀搜索算法(sparrow search algorithm)是根据麻雀觅食并逃避捕食者的行为而提出的群智能优化算法。提出时间是2020年,相关的论文和研究还比较少,有可能还有一些正在发表中,受疫情影响需要论…

【Android关键字】startActivityForResult/onActivityResult/setResult方法的使用

最近在写一个安卓程序&#xff0c;在程序里需要用到startActivityForResult这个Intent操作关键字&#xff0c;与该关键字有关的还有onActivityResult和setResult。这里对其用法进行一个总结。 三者在API中的形式 //startActivityForResult与startActivity类似&#xff0c;只不…

C++:const修饰指针

const修饰符常常需要在c中使用到&#xff0c;需要注意到他对于指针修饰的时候的不同区别。 #include<iostream> using namespace std; int main() {//1.const修饰指针int a 10;int b 10;const int* p &a;//指针指向的值不可以改&#xff0c;指针的指向可以改// …

2023最新ChatGPT商业运营网站源码+支持ChatGPT4.0+新增GPT联网功能+支持ai绘画+实时语音识别输入+用户会员套餐+免费更新版本

2023最新ChatGPT商业运营网站源码支持ChatGPT4.0新增GPT联网功能支持ai绘画实时语音识别输入用户会员套餐免费更新版本 一、AI创作系统二、系统程序下载三、系统介绍四、安装教程五、主要功能展示六、更新日志 一、AI创作系统 提问&#xff1a;程序已经支持GPT3.5、GPT4.0接口…

Matlab学习笔记

1.入门 1.1矩阵与运算 a[1 2 3;4 5 6;7 8 9] *表示矩阵乘法 .* .^之类则是对矩阵每个元素运算&#xff08;点乘&#xff09; inv(a)矩阵的逆 format long/short 显示更多/更少位小数 串联 A[a a] 横着 [a;a] 竖着 sum(A)会得到各列的和&#xff08;得到行向量&#xff09; …

MyBatis基础知识

文章目录 Mybatis简介MyBatis历史MyBatis特性MyBatis下载和其它持久化层技术对比 搭建MyBatis开发环境创建maven工程创建MyBatis的核心配置文件创建mapper接口创建MyBatis的映射文件通过junit测试功能加入log4j日志功能 核心配置文件详解默认的类型别名MyBatis的增删改查MyBati…

Java常见面试题

文章目录 一、Java基础面试题二、面向对象编程面试题三、集合框架面试题四、多线程面试题五、数据库面试题六、异常处理面试题七、设计模式面试题八、Spring相关面试题九、性能优化面试题十、Java 8新特性面试题十一、JVM相关面试题十二、框架相关面试题十三、并发编程面试题十…

Flutter的状态管理之Provider

前言 像vue、react有对应的状态管理库&#xff0c;比如&#xff1a;pinia、Redux 。同样flutter中也有状态管理库&#xff0c;但是flutter中的状态管理库很多&#xff0c;对于像我这样的新手来说这很难选择。因此只好选择官方库——Provider 因为是第一次学习&#xff0c;如果…

vue2watch监听遇到的问题

1 vue 父组件里引入子组件 显示与隐藏是v-if控制时 父传入子的参数通过watch 监听请求接口时 watch 时而监听不到 请求接口的参数就不对 如图 父组件这么引入子组件v-show 和v-if 是有区别的 2 子组件通过watch 监听后 清空页面要展示的列表数据 重新从第一页加载数据&#x…

扶小微、惠民生,平安养老险护航中小企业健康发展

今年以来&#xff0c;随着经济社会全面恢复常态化运行&#xff0c;稳增长、稳就业、稳物价政策效应逐步显现&#xff0c;市场需求逐步恢复&#xff0c;生产供给持续增加&#xff0c;我国经济发展质量继续提高&#xff0c;国民经济恢复向好。平安养老险作为平安集团内专业养老保…

【雕爷学编程】Arduino动手做(164)---Futaba S3003舵机模块3

37款传感器与模块的提法&#xff0c;在网络上广泛流传&#xff0c;其实Arduino能够兼容的传感器模块肯定是不止37种的。鉴于本人手头积累了一些传感器和执行器模块&#xff0c;依照实践出真知&#xff08;一定要动手做&#xff09;的理念&#xff0c;以学习和交流为目的&#x…