Vue2 day-02
目录
一. Vue脚手架(Vue CLI)
1.1 安装新版本的Vue脚手架@vue/cli
1.2 用命令创建Vue项目
1.2.1 命令创建vue项目
1.2.2 默认创建
1.2.3 自定义创建
1.2.4 基于ui界面创建Vue项目
1.3 分析Vue脚手架生成的项目结构及代码执行
1.3.1 默认创建文件结构
1.3.2 分开放置文件的文件含义
1.3.3 主要文件及含义
assets和public目录的区别:
1.3.4 项目架构的了解
1.4 webpack和vue脚手架的关系
1.5 Vue脚手架的自定义配置
1.5.1 通过单独的配置文件进行配置,创建vue.config.js
1.5.2_eslint了解
1.5.3 单vue文件讲解
1.6 vscode插件安装
脚手架使用总结
步骤
1.7 Yarn(补充)
1.7.1 Yarn是什么?
1.7.2 Yarn和npm(Node Package Manager)命令对比
1.7.3 npm的未来:npm5.0之后
1.7.4 npm和yarn切换包管理器
二.v-bind
2.1 绑定 href/src
2.2绑定class(重要)
1) 绑定数组
2) 绑定对象
3) 总和
2.3 绑定style
1)对象
2)属性
3)数组
2.4 动态属性(了解)
三. 分支结构(重点)
3.1 v-if 使用场景
3.2 v-if和v-show的区别
四. 循环结构 v-for(重点)
4.1 普通数组
4.2 对象
4.3 数组对象
4.4 字符串
4.5 数值
4.6 v-for 中的key值
4.7 不推荐同时使用 v-if 和 v-for
一. Vue脚手架(Vue CLI)
Vue CLI 是一个基于 Vue.js 进行快速开发的完整系统,通过 @vue/cli
实现的交互式的项目脚手架,脚手架是为了保证各施工过程顺利进行而搭设的工作平台。
工程化开发方式:这是最推荐, 企业常用的方式
vue/cli的好处
-
不需要配置打包设置
-
babel支持
-
less支持
-
开发服务器支持
1.1 安装新版本的Vue脚手架@vue/cli
Vue Cli官网
npm install -g @vue/cli
npm install -g @vue/cli@4
-
查看
vue
脚手架版本
vue -V
总结: 如果出现版本号就安装成功, 否则失败
1.2 用命令创建Vue项目
1.2.1 命令创建vue项目
vue create 项目名
#其中my-project为项目名
vue create my-project
注意: 项目名不能带大写字母, 中文和特殊符号或者和下载的包依赖名称相同
1.2.2 默认创建
1.2.3 自定义创建
-
选择Manually select features(选择特性以创建项目)
-
勾选特性可以用空格进行勾选。
-
选择版本
-
ESLint选择:ESLint + Standard config
ESLint with error prevention only 指仅用于错误预防 ESLint + Airbnb config 指ESLint 和Airbnb代码规范 ESLint + Standard config 指ESLint 和Standard代码规范 ESLint + Prettier 指ESLint 和Prettier代码规范
-
何时进行ESLint语法校验:Lint on save
-
babel,postcss等配置文件如何放置
In dedicated config files 独立文件放置 In package.json 放package.json里
-
是否保存为模板:n
-
进入脚手架项目下, 启动内置的热更新本地服务器
npm run serve # 或 yarn serve
1.2.4 基于ui界面创建Vue项目
输入命令:vue ui 在自动打开的创建项目网页中配置项目信息。
1.3 分析Vue脚手架生成的项目结构及代码执行
1.3.1 默认创建文件结构
my-project # 项目目录├── node_modules # 项目依赖的第三方包├── public # 静态文件目录├── favicon.ico# 浏览器小图标├── index.html # 单页面的html文件(网页浏览的是它)├── src # 业务文件夹├── assets # 静态资源└── logo.png # vue的logo图片├── components # 组件目录└── HelloWorld.vue # 欢迎页面vue代码文件 ├── App.vue # 整个应用的根组件├── main.js # 入口js文件├── .gitignore # git提交忽略配置├── babel.config.js # babel配置文件--babel是一个JS编译器,兼容低版本浏览器,引入babel,将es6转为es5├── jsconfig.json #如果想要更改默认的webpack配置时,可以通过jsconfig.json文件├── package.json # 依赖包列表├── README.md # 项目说明├── packge-lock.json # 项目包版本锁定├── vue.config.js #vue文件编译时的配置文件
1.3.2 分开放置文件的文件含义
.browserslistrc:在使用脚手架搭建项目时,会自动生成.browserslistrc文件,该文件是配置兼容浏览器
.editorconfig:配置和格式化代码
.eslintrc.js:是一个名为eslint的工具的配置文件
1.3.3 主要文件及含义
node_modules:依赖包目录
public:静态资源目录
src:源码目录
src/assets:静态资源目录
src/components:组件目录
src/App.vue:根组件
src/main.js:入口js
babel.config.js:babel配置文件--babel是一个JS编译器,兼容低版本浏览器,引入babel,将es6转为es5
assets和public目录的区别:
assets和public两个目录都可以用来放置静态资源,通常将外部引入的第三方的文件放在public中,自己的文件放在assets中。
1、public文件夹
(1)路径设置时无需添加 /public,默认加载 public 文件夹下的文件
(2)public文件夹下的资源会直接编译,而不经过 webpack
2、assets文件夹
(1)assets目录中的文件会被webpack处理解析为模块依赖
(2)大多数用来存放js、css等
1.3.4 项目架构的了解
1.4 webpack和vue脚手架的关系
vue是一套渐进式(就是你需要什么就用什么,不需要什么就可以不用,强制你遵守的规则很少),自底向上增量开发(就是根据系统和硬件编写出基层的基本需求代码,再慢慢增加模块),由于他要求遵守的规则较少,你可以引不同自己需要的东西,就需要配合webpack打包工具把引入的不同模块的东西打包。
webpack是一个工具,俗称打包工具,就是把所以浏览器不能识别的东西如(less,scss)等转换为浏览器可以识别的语言如(css),因为vue中需要引入大量的各种各样的模块,所以依赖webpack ,在webpack看来一切皆模块。
1.5 Vue脚手架的自定义配置
1.5.1 通过单独的配置文件进行配置,创建vue.config.js
module.exports = {devServer:{//项目的主机名:localhost,127.0.0.1或者具体ip地址host: '127.0.0.1',//项目的端口号port:8881,//项目启动自动打开浏览器open:true}
}
1.5.2_eslint了解
eslint的作用, 它是一个代码检查工具,代码不严谨会出现错误,页面加载不出来
方式1: 手动解决掉错误, 以后项目中会讲如何自动解决
方式2: 暂时关闭eslint检查(因为现在主要精力在学习Vue语法上), 在vue.config.js中配置后重启服务
module.exports = {// ...其他配置lintOnSave: false // 关闭eslint检查}
1.5.3 单vue文件讲解
-
单vue文件好处, 独立作用域互不影响
-
Vue推荐采用,vue文件来开发项目,vue文件-独立模块-作用域互不影响
-
template里只能有一个根标签
-
style配合scoped属性, 保证样式只针对当前template内标签生效
-
Vue文件打包起来插入到index.html, 然后在浏览器运行
<!-- template必须, 只能有一个根标签, 影响渲染到页面的标签结构 -->
<template><div>欢迎使用vue</div>
</template><!-- js相关 -->
<script>
export default {name: 'App'
}
</script><!-- 当前组件的样式, 设置scoped, 可以保证样式只对当前页面有效 -->
<style scoped>
</style>
1.6 vscode插件安装
vue文件代码高亮插件-vscode中安装
脚手架使用总结
步骤
第一步:进行全局安装,仅第一次执行(警告忽略)
npm install -g @vue/cli第二步:切换到需要创建项目的目录,使用命令行创建项目
vue create xxx第三步:启动项目
npm run serve
1.7 Yarn(补充)
1.7.1 Yarn是什么?
Yarn是由Facebook、Google、Exponent 和 Tilde 联合推出了一个新的 JS 包管理工具 ,正如官方文档中写的,Yarn 是为了弥补 npm 的一些缺陷而出现的。
安装:
-
通过安装包安装,也可以通过npm安装:
npm install yarn -g
-
通过安装包安装
1.7.2 Yarn和npm(Node Package Manager)命令对比
npm | yarn |
---|---|
npm install | yarn |
npm install vue | yarn add vue |
npm uninstall vue | yarn remove vue |
npm install vue --save-dev/-D | yarn add vue --dev |
npm install -g @vue/cli | yarn global add @vue/cli |
1.7.3 npm的未来:npm5.0之后
有了yarn的压力之后,npm做了一些类似的改进。
-
默认新增了类似yarn.lock的 package-lock.json;
-
git 依赖支持优化:这个特性在需要安装大量内部项目,或需要使用某些依赖的未发布版本时很有用。在这之前可能需要使用指定 commit_id 的方式来控制版本。
-
文件依赖优化:在之前的版本,如果将本地目录作为依赖来安装,将会把文件目录作为副本拷贝到 node_modules 中。而在 npm5 中,将改为使用创建 symlinks 的方式来实现,这将会提升安装速度。目前yarn还不支持。
1.7.4 npm和yarn切换包管理器
用户目录下找到
将 "packageManager": "npm" --> 修改为 "packageManager": "yarn",
二.v-bind
v-bind 指令被用来响应地更新 HTML 属性
2.1 绑定 href/src
-
v-bind:href 可以缩写为 :href;
<!-- 绑定一个属性 -->
<a v-bind:href="url">百度</a>
<img v-bind:src="imageSrc">
<!-- 缩写 -->
<a :href="url">百度</a>
<img :src="imgLog" alt="">
<script>//导入
import logosrc from "./assets/logo.png"
export default {name: "App",components: {},data() {return {msg1:"hello , vue!!!",msg2:"http://www.baidu.com",imageSrc:"https://cdn4.buysellads.net/uu/1/41334/1550855391-cc_dark.png",imgLog:logosrc};},
};
</script>
2.2绑定class(重要)
-
我们可以给v-bind:class 一个对象,以动态地切换class。
-
注意:v-bind:class指令可以与普通的class特性共存
v-bind 中支持绑定一个对象 如果绑定的是一个对象,则键对应的类名值为对应data中的数据
1) 绑定数组
v-bind 中支持绑定一个数组,数组中classA和 classB 对应为data中的数据
这里的classA 对用data 中的 classA 这里的classB 对用data 中的 classB
<ul class="box" :class="[classA, classB]"><li>学习Vue</li><li>学习Node</li><li>学习React</li>
</ul>
<script>
...
data() {return {classA: "a",classB: "b",};},
</script>
2) 绑定对象
<ul class="box" ><li :class="{a:true}">学习Vue</li><li :class="{a:false}">学习Node</li><li :class="{a:flag}">学习React</li>
</ul>
<script>
...
data() {return {flag:true};},
</script>
3) 总和
<ul class="box" ><li :class="class1">学习Vue</li><li :class="class2">学习Node</li><li :class="class3">学习React</li>
</ul>
<script>
...
data() {return {class1:'a',class2:['a','b'],class3:{a:true,b:true,c:false}};},
</script>
2.3 绑定style
1)对象
<div v-bind:style="styleObject">绑定样式对象</div>
<script>
data() {return {styleObject:{width:"200px",height:"200px",backgroundColor:"red"}
}
</script>
2)属性
<!-- CSS 属性名可以用驼峰式 (camelCase) 或短横线分隔 (kebab-case,记得用单引号括起来) --><div v-bind:style="{ color: activeColor, fontSize: fontSize,background:'red' }">内联样式</div><script>
data() {return {activeColor:'blue',fontSize:"20px"
}
</script>
3)数组
<!--组语法可以将多个样式对象应用到同一个元素 -->
<div v-bind:style="[styleObject, styleObj2]"></div>
<script>
data() {return {styleObject:{width:"200px",height:"200px",backgroundColor:"red"},styleObj2:{border:"10px solid black"}
}
</script>
2.4 动态属性(了解)
<div :[attrname]="attrvalue">动态属性名称绑定</div>
<script>data() {return {attrname:"id",attrvalue:"1"};},
</script>
三. 分支结构(重点)
3.1 v-if 使用场景
-
1- 多个元素 通过条件判断展示或者隐藏某个元素。或者多个元素
-
2- 进行两个视图之间的切换
<div><div v-if="score >= 90">优秀</div><div v-else-if="score > 80">良好</div><div v-else-if="score > 60">及格</div><div v-else>不及格</div></div><div><span v-if="sex=='男'">男</span><span v-else-if="sex=='女'">女</span><span v-else>保密</span></div>
3.2 v-if和v-show的区别
-
v-if是动态的向DOM树内添加或者删除DOM元素
-
v-if切换有一个局部编译/卸载的过程,切换过程中合适地销毁和重建内部的事件监听和子组件
-
v-show本质就是标签display设置为none,控制隐藏
-
v-show只编译一次,后面其实就是控制css,而v-if不停的销毁和创建,某些情况下v-show性能更好一点。
<span v-show="flag">隐藏显示</span>
四. 循环结构 v-for(重点)
4.1 普通数组
-
用于循环的数组里面的值是普通元素
<li v-for="item, index in items" :key="index">
{{item}} ---------- {{ index}}
</li>
<script>data() {return {items: ["张三", "李四", "王五"],}}
</script>
4.2 对象
<li v-for="( value, key, index) in obj" :key="index">
{{ value }} ---------- {{ key }} -----------{{ index }}
</li>
<script>data() {return {obj: {name: "张三",age: 12,sex: "男",clazz: "火花225",},}}
</script>
4.3 数组对象
<li v-for="( item, index) in items" :key="item.id">
{{ item.id }} ---{{item.name}}--------{{ index }}
</li>
<script>data() {return {items: [{id:1,name:"张三1"},{id:2,name:"张三2"},{id:3,name:"张三3"},{id:4,name:"张三4"},],}}
</script>
4.4 字符串
<li v-for="( item, index) in str" :key="index">
{{ item }} ---------{{ index }}
</li>
<script>data() {return {str:"hello world",}}
</script>
4.5 数值
<li v-for="( item, index) in str" :key="index">
{{ item }} ---------{{ index }}
</li>
<script>data() {return {num:20,}}
</script>
4.6 v-for 中的key值
Vue实现了一套虚拟DOM,使我们可以不直接操作DOM元素,只操作数据便可以重新渲染页面。而隐藏在背后的原理便是其高效的Diff算法,我们将在下节详细讲解key值得意义。
4.7 不推荐同时使用 v-if
和 v-for
-
当
v-if
与v-for
一起使用时,v-for
具有比v-if
更高的优先级。
相关文章:

Vue2 day-02
目录 一. Vue脚手架(Vue CLI) 1.1 安装新版本的Vue脚手架vue/cli 1.2 用命令创建Vue项目 1.2.1 命令创建vue项目 1.2.2 默认创建 1.2.3 自定义创建 1.2.4 基于ui界面创建Vue项目 1.3 分析Vue脚手架生成的项目结构及代码执行 1.3.1 默认创建文件结构 1.3.2 分开放置文…...

什么?!新版 Node.js V22.5 自带 SQLite 模块啦
前言 2024年7月,Node.js V22.5.0 版本发布,自带了 SQLite 模块,意味着开发者可以直接在程序中使用 SQLite 数据库,而无需引入第三方库👍。 话不多说,感觉来体验一波✈。 安装/升级 我现在用的是21.4.0版…...
Maven持续集成(Continuous integration,简称CI)版本友好管理
从Maven 3.5.0-beta-1 版本开始可以在pom文件中使用 r e v i s i o n 、 {revision}、 revision、{sha1}、${changelist}做为版本的占位符。 一、单module简单使用${revision}的场景 <project><modelVersion>4.0.0</modelVersion><parent><groupId…...

EvoSuite使用总结
1.安装EvoSuite插件 以IDEA为例,在Plugins栏搜索EvoSuite后点击install,安装完成后重启IDEA 2.使用EvoSuite 选中文件右键选择Run EvoSuite 生成成功可以看到如下提示: 注意事项: 生成路径:src/test/java 使用juni…...

Cortex-A7:简单中断处理(不可嵌套中断)机制
0 参考资料 ARM Cortex-A(armV7)编程手册V4.0.pdf ARM体系结构与编程第2版1 前言 Cortex-M系列内核MCU中断硬件原生支持嵌套中断,开发者不需要为了实现嵌套中断而进行额外的工作。但在Cortex-A7中,硬件原生是不支持嵌套中断的,这从Cortex-A…...
k8s HPA
水平自动扩容和缩容HPA HPA全称Horizontal Pod Autoscaler,即pod水平自动伸缩。HPA可以基于CPU利用率对replication controller、deployment和replicaset中的pod数量进行自动扩缩容(除了CPU利用率,也可以基于其他应用程序提供的度量指标cust…...

5G移动网络运维实验(训)室解决方案
随着第五代移动通信技术(5G)的快速普及和工业互联网的迅猛发展,全球制造业正面临着前所未有的深刻变革。5G技术凭借其超高的传输速率、极低的延迟以及大规模的连接能力,为工业自动化、智能制造等领域带来了革命性的技术支持。为了…...

单片机学习笔记
一、单片机帝国的诞生与发展 1.1 单片机的基本概念 单片机是一种集成电路芯片,采用超大规模的集成电路把具有数据处理功能的中央处理器存储器、输入输出端口、外围电路和相关外设集成在一块硅片上构成一个小而完整的微型计算机系统。 一般而言,单片机也…...

SpringBoot中@Value获取值和@ConfigurationProperties获取值用法及比较
SpringBoot中Value获取值和ConfigurationProperties获取值用法及比较 更新时间:2024年08月08日 09:41:48 作者:岳轩子 在Spring Boot中,Value注解是一个非常有用的特性,它允许我们将外部的配置注入到我们的Bean中,ConfigurationProperties用于将配置文件…...

执行任务赚积分
题目描述 现有N个任务需要处理,同一时间只能处理一个任务,处理每个任务所需要的时间固定为1。 每个任务都有最晚处理时间限制和积分值,在最晚处理时间点之前处理完成任务才可获得对应的积分奖励。 可用于处理任务的时间有限,请问…...
使用TLS解决Docker API暴露2375端口的问题
问题起因 由于本人开发环境是在 Windows,开发完成后需要使用 Dockerfile 打包镜像,这个过程需要有一个 Docker 服务完成,Windows 安装 Docker 会影响到很多环境,我又不想本地开虚拟机使用 Docker,于是我就索性使用服务…...
Pyspark中catalog的作用与常用方法
文章目录 Pyspark catalog用法catalog 介绍cache 缓存表uncache 清除缓存表cleanCache 清理所有缓存表createExternalTable 创建外部表currentDatabase 返回当前默认库tableExists 检查数据表是否存在,包含临时视图databaseExists 检查数据库是否存在dropGlobalTemp…...

聚焦2024数博会|与天空卫士一起探索AI与数据安全的融合应用
中国国际大数据产业博览会(简称数博会),是全球首个以大数据为主题的博览会,自2015年创办以来,经过多年的深厚沉淀,数博会已发展成为国际知名、引领前沿趋势的专业展示合作平台。 2024年8月28日至30日&#…...

实战docker第二天——cuda11.8,pytorch基础环境docker打包
在容器化环境中打包CUDA和PyTorch基础环境,可以将所有相关的软件依赖和配置封装在一个Docker镜像中。这种方法确保了在不同环境中运行应用程序时的一致性和可移植性: Docker:提供了容器化技术,通过将应用程序及其所有依赖打包在一…...

企业数字化转型的利器:RFID资产管理系统
在当今数字化时代,资产管理的效率和精确度对企业的成功至关重要。常达智能物联的RFID资产管理系统,凭借其高效、智能的管理方式,成为众多企业在数字化转型中的关键工具。 RFID资产管理系统的核心优势 一、精准资产定位与追踪 常达智能物联的…...

matplotlib中文乱码问题
在使用Matplotlib进行数据可视化的过程中,经常会遇到中文乱码的问题。显示乱码是由于编码问题导致的,而matplotlib 默认使用ASCII 编码,但是当使用pyplot时,是支持unicode编码的,只是默认字体是英文字体,导…...

提高开发效率的实用工具库VueUse
VueUse中文网:https://vueuse.nodejs.cn/ 使用方法 安装依赖包 npm i vueuse/core单页面使用(useThrottleFn举例) import { useThrottleFn } from "vueuse/core"; // 表单提交 const handleSubmit useThrottleFn(() > {// 具…...

【数据结构】你真的学会了二叉树了吗,来做一做二叉树的算法题及选择题
文章目录 1. 二叉树算法题1.1 单值二叉树1.2 相同的树1.3 另一棵树的子树1.4 二叉树的遍历1.5 二叉树的构建及遍历 2. 二叉树选择题3. 结语 1. 二叉树算法题 1.1 单值二叉树 https://leetcode.cn/problems/univalued-binary-tree/description/ 1.2 相同的树 https://leetco…...
压力测试知识总结
压力测试知识总结 引言 随着信息技术的飞速发展,软件系统在各个行业中的应用越来越广泛,其稳定性和可靠性成为用户关注的焦点。压力测试作为软件测试中的一种重要方法,对于确保软件在高负载环境下的稳定性和可靠性具有重要意义。本文将从压…...

@import导入样式以及scss变量应用与static目录
import函数:使用import语句可以导入外联样式表,import后跟需要导入的外联样式表的相对路径,用;表示语句结束。 static目录:就是无论你有没有在这个目录里用过,它都会进行编译打包 import函数应用:先在在项目里创建一个common 目录, 目录里面分别创建css,…...

装饰模式(Decorator Pattern)重构java邮件发奖系统实战
前言 现在我们有个如下的需求,设计一个邮件发奖的小系统, 需求 1.数据验证 → 2. 敏感信息加密 → 3. 日志记录 → 4. 实际发送邮件 装饰器模式(Decorator Pattern)允许向一个现有的对象添加新的功能,同时又不改变其…...
golang循环变量捕获问题
在 Go 语言中,当在循环中启动协程(goroutine)时,如果在协程闭包中直接引用循环变量,可能会遇到一个常见的陷阱 - 循环变量捕获问题。让我详细解释一下: 问题背景 看这个代码片段: fo…...

Zustand 状态管理库:极简而强大的解决方案
Zustand 是一个轻量级、快速和可扩展的状态管理库,特别适合 React 应用。它以简洁的 API 和高效的性能解决了 Redux 等状态管理方案中的繁琐问题。 核心优势对比 基本使用指南 1. 创建 Store // store.js import create from zustandconst useStore create((set)…...

如何在看板中体现优先级变化
在看板中有效体现优先级变化的关键措施包括:采用颜色或标签标识优先级、设置任务排序规则、使用独立的优先级列或泳道、结合自动化规则同步优先级变化、建立定期的优先级审查流程。其中,设置任务排序规则尤其重要,因为它让看板视觉上直观地体…...

使用分级同态加密防御梯度泄漏
抽象 联邦学习 (FL) 支持跨分布式客户端进行协作模型训练,而无需共享原始数据,这使其成为在互联和自动驾驶汽车 (CAV) 等领域保护隐私的机器学习的一种很有前途的方法。然而,最近的研究表明&…...

SpringTask-03.入门案例
一.入门案例 启动类: package com.sky;import lombok.extern.slf4j.Slf4j; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.cache.annotation.EnableCach…...
大数据学习(132)-HIve数据分析
🍋🍋大数据学习🍋🍋 🔥系列专栏: 👑哲学语录: 用力所能及,改变世界。 💖如果觉得博主的文章还不错的话,请点赞👍收藏⭐️留言Ǵ…...

算法笔记2
1.字符串拼接最好用StringBuilder,不用String 2.创建List<>类型的数组并创建内存 List arr[] new ArrayList[26]; Arrays.setAll(arr, i -> new ArrayList<>()); 3.去掉首尾空格...

算法岗面试经验分享-大模型篇
文章目录 A 基础语言模型A.1 TransformerA.2 Bert B 大语言模型结构B.1 GPTB.2 LLamaB.3 ChatGLMB.4 Qwen C 大语言模型微调C.1 Fine-tuningC.2 Adapter-tuningC.3 Prefix-tuningC.4 P-tuningC.5 LoRA A 基础语言模型 A.1 Transformer (1)资源 论文&a…...
C++.OpenGL (14/64)多光源(Multiple Lights)
多光源(Multiple Lights) 多光源渲染技术概览 #mermaid-svg-3L5e5gGn76TNh7Lq {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-3L5e5gGn76TNh7Lq .error-icon{fill:#552222;}#mermaid-svg-3L5e5gGn76TNh7Lq .erro…...