VUE2 学习笔记1

目录

VUE特点

文档tips

开发者工具

从一个Hello world开始

hello world Demo

容器和实例的对应关系

差值语法{{}}


VUE特点

构建用户界面:可以用来把数据构建成用户界面。

渐进式:自底向上,可以先从一个非常轻量级的框架开始,渐渐往里面放一些需要的插件,不需要一开始就从一个大型的项目库开始。

声明式:(与命令式相反,命令式是指一行代码就是一个命令,每一行代码发出一条命令,多个命令组合达成一个效果,比如JS),声明式是先声明框架,给框架绑定数据,达成某种效果。让编程人员无需直接操作DOM,提高开发效率。

组件化:VUE页面由组件构成,可以提高代码复用率(单个组件中包含当前组件需要的HTML、CSS、JS,需要某个组件的效果,直接把组件拿来用就行了),增加可维护性(每个组件之间的样式是独立的,需要调试或修改时,单独调试或修改一个组件即可)。

虚拟DOM和diff算法:该算法用于页面数据发生变化时,数据映射到真实DOM之前,会增加一个比较算法,页面的变化会被更新到虚拟DOM,虚拟DOM会比较更新前后虚拟DOM的变化(该比较算法就是diff),diff会比较出可以复用的DOM,只把需要新增的内容推到真实DOM。

文档tips

记这个笔记,只是为了方便入门,日常中如果有不太会的地方,还是应该学习怎么查阅文档。

Vue.js

可以在 Awesome Vue中浏览和Vue相关的组件效果等,在【浏览和Vue相关的包】中查询包。

可以在风格指南中查询vue的代码风格建议,cookbook中学习vue使用技巧。

Vue的安装使用,有两种方式,一种是在HTML页面中引入Vue.js编写相关代码,另一种方式是使用脚手架

版本:Vue分为开发版本生产版本。两个版本的区别可以看官方注释,开发版本是本地开发使用的,生产版本是实际部署使用的。生产版比开发版删除了一些内容,进行了压缩,更轻量级,适合部署。

开发者工具

Vue有一个官方的开发者工具vue-devtools,可以在浏览器上通过F12进行使用,可以查看Vue项目的各种信息,推荐使用。

https://github.com/vuejs/devtools-v6?tab=readme-ov-file#vue-devtools

如果可以登录github,可以在github上下载代码:

先选一个想下载的版本,

按github里提示的步骤一步一步进行就好了:

在命令行里git clone拉下来这个仓库,

 git clone -b v6.6.4 https://github.com/vuejs/vue-devtools.git

clone之后会多一个文件夹,进到这个文件夹里面,敲npm install和npm run build

cd vue-devtools
npm install
npm run build

然后进浏览器页面,找到拓宽程序页面,打开开发者模式:

按安装步骤,选择这个加载未打包的拓展程序:

然后选shells下的chrome文件

如果下载的vue-devtools版本太旧了,浏览器不支持,可以按照这个方法进行修改:https://zhuanlan.zhihu.com/p/1927399384947065539

如果国内的网无法访问github下载,可以在国内的非官方网站下载,极简插件官网_Chrome插件下载_Chrome浏览器应用商店

下载完了之后,按安装说明,拖到拓展程序页面里就行了,但需要注意Vue2最好下载旧版vue-devtools,否则可能安装了拓展程序,也无法使用。

添加完工具,可以把工具右下角的按钮打开,

这样在网页中,点击右边这个图标,并且设置显示Vue这个工具的图标,可以查看Vue工具的使用状态:

如果工具在项目里不起效果,可以在项目入口文件main.js或者配置文件里加上这个配置,设置允许开发者工具:

Vue.config.devtools = true

从一个Hello world开始

hello world Demo

先从一个Vue的小demo开始,熟悉的hello world。

为了理解Vue,这里不从脚手架开始,只是使用HTML开始编写Vue。

我这里使用的是Js语法引入Vue,可以在官方的script语法里加一个type="text/javascript",否则可能js不会生效。HTML <script> 标签的 type 属性。(这里其实就是设置一下script中的内容是javascript)。

为Vue准备组件应用的容器,这里的demo就是容器(对于一个样式,想要他在页面上使用,需要设定他在页面的位置,Vue的挂载属性可以让这个容器和Vue绑定,如果没有位置,组件无法显示)

<body><div id="demo"></div><script type="text/javascript" src="https://cdn.jsdelivr.net/npm/vue@2/dist/vue.js"></script>
</body>

新建Vue实例,使用new Vue(),该构造函数接收一个对象参数,该对象为配置对象,里面配置一系列参数。

el:把Vue实例和容器绑定。el的value可以是css选择器,也可以是通过js语句获取的DOM。

el是element的简称,指定Vue实例应用在哪个容器上。

demo里的代码被称为Vue模版。

<body><div id="demo"><p>Hello World</p></div><script type="text/javascript" src="https://cdn.jsdelivr.net/npm/vue@2/dist/vue.js"></script><script type="text/javascript">new Vue({el: '#demo', //el是element的简称,指定Vue实例应用在哪个容器上,值通常为css选择器//这里也可以不写选择器,也可以写document.getElementById('demo')})</script>
</body>

data

data保存Vue实例中的数据,value为对象。

    <script>new Vue({el: '#demo', //el是element的简称,指定Vue实例应用在哪个容易上,值通常为css选择器//这里也可以不写选择器,也可以写document.getElementById('demo')data:{keyWords:'Hello World',}})</script>

要在DOM中使用data中保存的数据,有多种方法,其中一种是可以使用差值语法,用{{}}。

<body><div id="demo"><p>{{ keyWords }}</p></div><script type="text/javascript" src="https://cdn.jsdelivr.net/npm/vue@2/dist/vue.js"></script><script type="text/javascript">new Vue({el: '#demo', //el是element的简称,指定Vue实例应用在哪个容易上,值通常为css选择器//这里也可以不写选择器,也可以写document.getElementById('demo')data:{keyWords:'Hello World',}})</script>
</body>

在该例子中,先有的容器demo,后有的Vue实例,在new Vue实例构建时,会对demo模版进行解析。

解析时,会看模板中有没有Vue特有的一些语法(比如{{}}),如果有的话,对语法进行处理,并返回新的容器,用新的容器替换原来的整个容器。

容器和实例的对应关系

如果一个HTML中,有多个符合条件的el设置的选择器,会发生什么:

先说结论,一个Vue实例只能应用在一个容器上。一个容器也只能对应一个Vue实例。

<body><div class="demo"><p>{{ keyWords }}</p></div><div class="demo"><p>{{ keyWords }}</p></div><script type="text/javascript" src="https://cdn.jsdelivr.net/npm/vue@2/dist/vue.js"></script><script type="text/javascript">new Vue({el: '.demo', //el是element的简称,指定Vue实例应用在哪个容易上,值通常为css选择器//这里也可以不写选择器,也可以写document.getElementById('demo')data:{keyWords:'Hello World',}})</script>
</body>

在这段代码中,设置了两个class为demo的容器,而Vue实例的element设置的是class=demo的容器,所以有两个容器都满足条件。

这时的结果,vue实例会应用在第一个容器上,不会报错。但由于Vue没有应用在第二个容器上,第二个demo容器无法识别{{}}语法,会原样显示字符。

如果反过来,两个Vue实例同时作用在一个容器中,后一个Vue实例的代码不会生效。

<body><div class="demo"><p>{{ keyWords }},{{keyWords2}}</p></div><script type="text/javascript" src="https://cdn.jsdelivr.net/npm/vue@2/dist/vue.js"></script><script type="text/javascript">new Vue({el: '.demo', //el是element的简称,指定Vue实例应用在哪个容易上,值通常为css选择器//这里也可以不写选择器,也可以写document.getElementById('demo')data:{keyWords:'Hello World',}})new Vue({el: '.demo', //el是element的简称,指定Vue实例应用在哪个容易上,值通常为css选择器//这里也可以不写选择器,也可以写document.getElementById('demo')data:{keyWords2:'Hello World~~~~~~',}})</script>
</body>

这里两个Vue实例都应用在demo上,但demo容器已经和第一个Vue绑定,第二个Vue中的内容无法生效,会提示找不到后一个Vue中定义的data。

虽然Vue实例和容器是一一对应的,但是一个Vue实例可以生成多个子实例,也就是组件,组件也相当于是这个Vue示例,每个组件可以分别存放数据。

差值语法{{}}

该语法用于在容器中使用Vue实例中的数据。

{{}}中可以使用符合javascript语法的javascript语句,且必须返回的是值。如果{{}}中的内容不返回值,则无法解析。比如if(){}、for(){}这类的不能解析。

Vue是数据驱动的,也就是设置数据,然后把DOM和数据绑定,当数据改变时,页面也会相应地改变。

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

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

相关文章

嵌入式学习系统编程(四)进程

目录 一、进程 1.程序和进程 2.进程的八种状态 3. 几个状态 4.关于进程常用命令 二、关于进程的函数 1.fork 2.面问 3.孤儿进程 后台进程 2. exec函数族 (只保留父子关系&#xff0c;做新的事情) strtok函数 三、进程的结束 1.分类 exit和_exit的区别 wait函数…

Linux中添加重定向(Redirection)功能到minishell

前言&#xff1a;在谈论添加minishell之前&#xff0c;我再重谈一下重定向的具体实现等大概思想&#xff01;&#xff01;&#xff01;方便自己回顾&#xff01;&#xff01;&#xff01; 目录 一、重定向&#xff08;Redirection&#xff09;原理详解 1、文件描述符基础 2、…

Django由于数据库版本原因导致数据库迁移失败解决办法

在django开发中&#xff0c;一般我们初始化一个项目之后&#xff0c;创建应用一般就会生成如下的目录&#xff1a;django-admin startproject myproject python manage.py startapp blogmyproject/ ├── manage.py └── myproject/ | ├── __init__.py | ├── se…

C++STL系列之vector

前言 vector是变长数组&#xff0c;有点像数据结构中的顺序表&#xff0c;它和list也是经常被拿出作对比的&#xff0c; vector使用动态分配数组来存储它的元素。当新元素插入时候&#xff0c;这个数组需要被重新分配大小&#xff0c;如果扩容&#xff0c;因为要开一个新数组把…

Functional C++ for Fun Profit

Lambda Conf上有人讲C函数式编程。在Functional Conf 2019上&#xff0c;就有主题为“Lambdas: The Functional Programming Companion of Modern C”的演讲。演讲者介绍了现代C中函数式编程相关内容&#xff0c;讲解了如何使用Lambda表达式编写符合函数式编程原则的C代码&…

Python基础理论与实践:从零到爬虫实战

引言Python如轻舟&#xff0c;载你探寻数据宝藏&#xff01;本文从基础理论&#xff08;变量、循环、函数、模块&#xff09;启航&#xff0c;结合requests和BeautifulSoup实战爬取Quotes to Scrape&#xff0c;适合零基础到进阶者。文章聚焦Python基础&#xff08;变量、循环、…

ThingJS开发从入门到精通:构建三维物联网可视化应用的完整指南

文章目录第一部分&#xff1a;ThingJS基础入门第一章 ThingJS概述与技术架构1.1 ThingJS平台简介1.2 技术架构解析1.3 开发环境配置第二章 基础概念与核心API2.1 核心对象模型2.2 场景创建与管理2.3 对象操作基础第三章 基础开发实战3.1 第一个ThingJS应用3.2 事件系统详解3.3 …

关于list

1、什么是listlist是一个带头结点的双向循环链表模版容器&#xff0c;可以存放任意类型&#xff0c;需要显式定义2、list的使用有了前面学习string和vector的基础&#xff0c;学习和使用list会方便很多&#xff0c;因为大部分的内容依然是高度重合的。与顺序表不同&#xff0c;…

Mysql 查看当前事务锁

在 MySQL 中查看事务锁&#xff08;锁等待、锁持有等&#xff09;&#xff0c;可以使用以下方法&#xff1a; 一、查看当前锁等待情况&#xff08;推荐&#xff09; SELECTr.trx_id AS waiting_trx_id,r.trx_mysql_thread_id AS waiting_thread,r.trx_query AS waiting_query,b…

【Keil5-map文件】

Keil5-map文件■ map文件■ map文件

k8s 基本架构

基于Kubernetes(K8s)的核心设计&#xff0c;以下是其关键基本概念的详细解析。这些概念构成了K8s容器编排系统的基石&#xff0c;用于自动化部署、扩展和管理容器化应用。### 一、K8s核心概念概览 K8s的核心对象围绕容器生命周期管理、资源调度和服务发现展开&#xff0c;主要包…

Bell不等式赋能机器学习:微算法科技MLGO一种基于量子纠缠的监督量子分类器训练算法技术

近年来&#xff0c;量子计算&#xff08;Quantum Computing&#xff09; 和 机器学习&#xff08;Machine Learning&#xff09; 的融合成为人工智能和计算科学领域的重要研究方向。随着经典计算机在某些复杂任务上接近计算极限&#xff0c;研究人员开始探索量子计算的独特优势…

Edge浏览器设置网页自动翻译

一.浏览网页自动翻译设置->扩展->获取Microsoft Edge扩展->搜索“沉浸式翻译”->获取 。提示&#xff1a;如果采用其他的翻译扩展没找自动翻译功能&#xff0c;所以这里选择“沉浸式翻译”二.基于Java WebElement时自动翻译Java关键代码&#xff1a;提示&#xff1…

TCP/UDP协议深度解析(四):TCP的粘包问题以及异常情况处理

&#x1f50d; 开发者资源导航 &#x1f50d;&#x1f3f7;️ 博客主页&#xff1a; 个人主页&#x1f4da; 专栏订阅&#xff1a; JavaEE全栈专栏 本系列往期内容~ TCP/UDP协议深度解析&#xff08;一&#xff09;&#xff1a;UDP特性与TCP确认应答以及重传机制 TCP/UDP协议深…

R 基础语法

R 基础语法 R 语言是一种针对统计计算和图形表示而设计的编程语言&#xff0c;广泛应用于数据分析、统计学习、生物信息学等领域。本文将为您介绍 R 语言的基础语法&#xff0c;帮助您快速入门。 1. R 语言环境搭建 在开始学习 R 语言之前&#xff0c;您需要安装并配置 R 语言环…

语义熵怎么增强LLM自信心的

语义熵怎么增强LLM自信心的 一、传统Token熵的问题(先理解“痛点”) 比如模型回答“阿司匹林是否治疗头痛?”→ 输出“是” 传统Token熵:只看“词的概率”,比如“是”这个词的概率特别高(Token熵0.2,数值低说明确定性强 )。 但实际风险:医学场景里,“是”的字面肯定…

javaweb的几大常见漏洞

CTF javaweb中几大常见漏洞(基于java-security靶场) 对于CTF而言&#xff0c;java类型的题目基本都是白盒代码审计&#xff0c;在java类型的web题目增长的今天&#xff0c;java代码审计能力在ctf比赛中尤为重要。 这篇博客主要是给大家介绍一下一些常见漏洞在java代码里面大概是…

【设计模式C#】外观模式(用于解决客户端对系统的许多类进行频繁沟通)

一种结构性设计模式。特点是将复杂的子系统调用逻辑封装到一个外观类&#xff0c;从而使客户端更容易与系统交互。优点&#xff1a;简化了接口的调用&#xff1b;降低了客户端与子系统的耦合度&#xff1b;封装了子系统的逻辑。缺点&#xff1a;引入了额外的类&#xff0c;可能…

【PTA数据结构 | C语言版】二叉堆的快速建堆操作

本专栏持续输出数据结构题目集&#xff0c;欢迎订阅。 文章目录题目代码题目 请编写程序&#xff0c;将 n 个顺序存储的数据用快速建堆操作调整为最小堆&#xff1b;最后顺次输出堆中元素以检验操作的正确性。 输入格式&#xff1a; 输入首先给出一个正整数 c&#xff08;≤1…

【数据结构初阶】--双向链表(二)

&#x1f525;个人主页&#xff1a;草莓熊Lotso &#x1f3ac;作者简介&#xff1a;C研发方向学习者 &#x1f4d6;个人专栏&#xff1a; 《C语言》 《数据结构与算法》《C语言刷题集》《Leetcode刷题指南》 ⭐️人生格言&#xff1a;生活是默默的坚持&#xff0c;毅力是永久的…