如何快速上手一个vue框架

安装nvm

下载nvm-setup.zip:
https://github.com/coreybutler/nvm-windows/releases
解压安装nvm:
创建两个文件夹,一个是nvm的安装位置,另一个是node.js的下载位置。不需要配置环境变量和修改setting文件了
检查nvm是否安装成功:
window+r输入:cmd
nvm -v
下载使用node.js:
window+r 输入:cmd
nvm list available    --查看网络可以安装的版本
nvm install           --要下载的node.js 的版本
nvm ls                --查看已经安装好的所有node.js的版本
nvm use node.js 的版本 -- 切换使用node.js的版本
nvm uninstall         --删除不要的版本
检查node和npm:
window+r 输入:cmd
node -v     --查看node的版本
npm -v      --查看npm的版本

创建vue3项目:

第一种方式创建vue3项目:
--在cmd窗口里面:
npm init vue@latest
cd 创建好的项目名字
npm/cnpm i    --下载依赖
npm run dev   --运行项目

 

第二种方式创建vue3项目:
--在cmd窗口里面
① vue create 项目名字
② 选择vue2或者vue3
③ cd 刚刚创建的项目
④ npm run serve

 

vs Code快速生成vue代码块:

第一步:

ctrl+shift+p

第二步:

输入:snippets
选择配置用户代码块:

 

第三步:

输入:vue
选择新建,全局代码片段文件(名字自己起)

 

第四步:

把下面的复制到里面去
{"Print to console": {"prefix": "vue","body": ["<template>","","</template>","","<script>","export default {","}","</script>","","<style>""","</style>"],}
} 

 

测试:

在新建的 xxx.vue组件里面
输入:vue 回车即可

vue3项目的目录结构:

目录结构解释:
.vscode        --vscode工具的配置文件
node_modules   --Vue项目的运行依赖文件
public         --资源文件(浏览器图标)
src            --源码文件夹
.gitignore     --git忽略文件
index.html     -- HTML文件
package.json   --信息描述文件
README.md      --注释文件
vite.config.js --vue配置文件
删除项目一些原有的页面:

在写项目前,把components里面所有的内容先删除掉:

删除完之后点击app.vue会报错,把所有关于,关于刚才删除的信息引用都删除掉。

删除成这个样子

运行查看项目:

然后运行项目,在浏览器查看删除后的效果:

删除全局css样式:

然后在把一些css样式删除掉,找到main.js:

删除里面的 import './assets/main.css'

在把下面公共资源文件夹下面的,base.css,logo.svg,main.css删掉:

模板语法:

vue使用一种基于HTML的模板语法,使我们能够声明式的将器组件实例的数据呈现到DOM上,所有的vue模板语法层面合法的html,可以被符合规范的浏览器和ltml解析器解析。

文本插值:

最基本的数据绑定形式是文本插值,它使用的是‘’Mustache‘语法(即双大括号):

响应式数据:
在data中声明的数据,通过{{}}(模板语法绑定的数据)

在App.vue里面写的:

<template><h3>模板语法:</h3><p>{{ msg }}</p>
</template>
​
<script >
export default {data(){return{msg:'我是模板取值的',hello:'你好世界'}}
}
​
</script>

浏览器运行效果:

使用JavaScript表达式:

每个绑定仅支持单一表达式,也就是说一段能够被求值的JavaScript代码。一个简单的判断方法是否可以合法的写在 return 后面

有效的:
<template><h3>模板语法:</h3><p>{{ msg }}</p><p>{{ num +1 }}</p><p>{{ flag ? 'yse' : 'no' }}</p><p>{{message.split('').reverse().join('')}}</p>
</template>
​
<script >
export default {data(){return{msg:'我是模板取值的',num:10,flag:true,message:'大家好'}}
}
​
</script>

浏览器运行效果:

无效的:

这样写会报错

<!-- <p>{{ var a = 1 }}</p> --><!-- <p>{{ if(flag){return message} }}</p> -->
原始HTML:

双大括号会将数据插值为纯文本,而不是HTML。若想插入HTML,需要使用 v-html 指令:

<template><p>{{url}}</p>
<p v-html="url"></p>
</template>
​
<script>
data(){return{url:"<a href='http://www.baidu.com>百度</a>'"}
}
</script>

效果:

属性绑定:

双大括号不能在html attribute中使用。想要响应式地绑定一个attribute,因该使用 v-bind 指令。

v-bind
<template><!-- 这个显示不出来 --><div class="{{ msg }}">测试</div> <!-- 这样可以添加上id --><div v-bind:id="addId">测试2</div><!-- 这样可以添加上class --><div v-bind:class="msg">测试3</div>
</template>
​
<script >
export default {data(){return{msg:'hello world',addId:'addId'}}
}
​
</script>

 

v-bind 指令指示,Vue将该元素的 id attribute 与组件 addId 保持一致。如果绑定的值是 null 或者 undefined ,那么该attribute将会从渲染的元素是移除。

简写:

因为 v-bind 非常的常用,我们提供了特定的简写方法。

<div :id="addId" :class="msg"></div>

测试:

<template><!-- 加上null --><div :title="addTitle">测试4</div><!-- 按钮 --><button :disabled="isDisabled">按钮</button>
</template>
​
<script >
export default {data(){return{addTitle:null,isDisabled:true,}}
}
​
</script>

效果:

布尔型 Attribute

布尔型 attribute 依据 true/false 值来决定 attribute是否应该存在于,该与元素上,disabled就是最常见的例子。

<template><!-- 按钮 --><button :disabled="isDisabled">按钮</button>
</template>
​
<script >
export default {data(){return{isDisabled:true,}}
}
​
</script>
动态绑定多个值:

如果我有想这样一个包含多个attribute的JavaScript对象:

<template><!-- 动态绑定多个值 --><div v-bind="objectAdd">测试</div></template>
​
<script >
export default {data(){return{objectAdd:{class:'helloClass',id:'helloId'}}}
}
​
</script>

测试:

条件渲染:

在vue中,提供了条件渲染,类似于

JavaScript中的条件语句。

v-if
​
v-else
​
v-else-if
​
v-show
​
v-if

v-if:指令用于条件性的渲染一块内容,这块内容只会在指令的表达式返回值为true时,才被渲染:

<template><h3>条件渲染</h3><!-- v-if 和v-else --><div v-if="flag">你能看见我吗?</div><div v-else="flag">那你还是看看我吧</div><!-- v-if-else-if --><div v-if="type === 'A'">A</div><div v-else-if="type === 'B'">B</div><div v-else="type === 'C'">C</div><div v-else>not A/B/C</div>
</template>
​
<script>export default{data(){return{flag:false,type:"D"}}}
</script>

效果:

v-show

另一个可以用来按条件显示一个元素的指令是 v-show,用法一样

<template><h3>条件渲染</h3>
<!-- v-show -->
<div v-show="flag">你能看见我吗</div>
​
<div></div>
</template>
​
<script>export default{data(){return{flag:true,}}}
</script>

效果:

v-if VS v-show 的区别:

v-if 是“真实的”按条件渲染,因为它确保了在切换时,条件区块内的事件监听器和子组件都会被销毁与重建。vf也是惰性的:如果在初次渲染时条件值为 false,则不会做任何事。条件区块只有当条件首次变为true时才被渲染。

相比之下,v-show简单许多,元素无论初始条件如何,始终会被渲染,只有CSS display属性会被切换。总的来说,v-if 有更高的切换开销,而v-show有更高的初始渲染开销。因此,如果需要频繁切换,则使用v-show较好;如果在运行时绑定条件很少改变,则 v-if会更合适

列表渲染:

v-for

我们可以使用 v-for 指令基于一个数组来渲染一个列表。v-for 指令的值需要使用 item in items 形式的特殊语法,其中 items 是源数据,而item是迭代的别名。

<template><h3>列表渲染</h3><p v-for="item in names">{{ item }}</p>
</template>
​
<script>
export default{data(){return{names:['道恩','你好','金刚','IT']}}
}
</script>

效果:

复杂数据:

大多数情况下,我们渲染的数据来源于网络请求,也就是json格式:

<template><h3>列表渲染</h3><p v-for="item in names">{{ item }}</p><div v-for="item in result"><p>{{ item.id }}</p><p>{{ item.title }}</p><a :href="item.url"  alt="">链接</a></div>
</template>
​
<script>
export default{data(){return{names:['道恩','你好','金刚','IT'],result:[{"id":1111,"title":'河南河南,的时刻近乎疯狂的撒JFKv接                                    口是否',"url":'http://www.baidu.com'},{"id":2424,"title":'悲伤的故事大纲公司',"url":'http://www.baidu.com'},{"id":7645,"title":'放松的地方是的夫是德国',"url":'http://www.baidu.com'} ]}}
}
</script>

效果:

v-for 也支持使用可选的第二个参数表示当前的位置索引:

<p v-for="(item,index) in names">{{ item }}:{{ index }}</p>

v-for 也可以使用 of 作为分隔符来替代 in ,这更接近与JavaScript的迭代器语法。

<p v-for="item of names">{{ item }}</p>

v-for 与 对象:
<template><h3>列表渲染</h3><p v-for="item of userInfo">{{ item }}</p><p v-for="(value,key,index) of userInfo ">{{value}}--{{ key }}--{{ index }}</p>
</template>
​
<script>
export default{data(){return{userInfo:{name:'孙道恩',age:18,sex:'男'}}}
}
</script>

效果:

通过key管理状态:

Vue 默认按照“就地更新”的策略来更新通过 v-for 渲染的元素列表。当数据项的顺序改变时,Vue不会随之移动DOM元素的顺序,而是就地更新每个元素,确保它们在原本指定的索引位置上渲染。

为了给Vue一个提示,以便它可以跟踪每个节点的标识,从而重用和重新排序现有的元素,你需要为每个元素对应的块提供一个唯一的 key attribute:

<template><h3>key属性添加到v-for中</h3><p v-for="(item,index) of names" :key="index">{{ item }}</p>
</template>
​
<script>export default{data(){return{names:['孙道恩','IT','大神']}}}
​
</script>

效果:

提示:

key在这里是一个通过 v-bind 绑定的特殊 attribute
推荐在任何可行的时候为v-for提供一个key attribute
key绑定的值期望是一个基础类型的值,例如字符串或 number 类型

key的来源:

请不要使用index作为key的值,我们要确保每一条数据的唯一索引不会发生变化。

比如在原来的数组数据,前面添加数据,原来的下标为0的,新增完数据后,原来为0的下标就不为0了。

<div v-for="(item,index) of result" :key="item.id"><p>{{ item.title }}</p><a :href="item.url">链接</a></div>

事件处理:

v-on

我们可以使用 v-on 指令(简写为 @ )来监听事件,并在事件触发时执行对应的JavaScript。

用法: v-on:click="methodName" 或者 @click="methodName"

事件处理器的值可以是:

① 内联事件处理器:事件被触发时执行的内联JavaScript 语句(与onclick 类似)
② 方法事件处理器:一个指向组件上定义的方法的属性名或是路径
内联事件处理器:

内联事件处理器通常使用的简单场景:

<template><h3>内联事件处理器</h3><!-- <button v-on:click="count++">Add</button> --><!-- 简写 --><button @click="count++">Add</button><p>{{ count }}</p>
</template>
​
<script>export default{data(){return{count:0,}}}
</script>

效果:

方法处理器:
<template><h3>内联事件处理器</h3><!-- <button v-on:click="count++">Add</button> --><!-- 简写 --><button @click="addCount">Add</button><p>{{ count }}</p>
</template>
​
<script>export default{data(){return{count:0,}},//所有的方法和函数都在这里methods:{addCount(){console.log('被点击了');//读取到data里面的数据方案: this.countthis.count++;}}}
</script>

效果:

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

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

相关文章

不常见知识点汇总

目录 1.关于输入流&#xff08;cin&#xff09;1.1 cin.fail()1.2 cin.clear()1.3 cin.ignore() 随时补充&#xff01;&#xff01;&#xff01; 1.关于输入流&#xff08;cin&#xff09; 问题描述&#xff1a; int input 0; cin >> input; while (cin.fail()) {cin.…

Linux 增加 SWAP 空间

一、需求 通过阿里云启动项目时&#xff0c;使用Vuepress build编译静态页面时内存需要800MB&#xff0c;导致内存不够&#xff0c;因此考虑使用swap方式&#xff0c;置换一些内存资源存放swap磁盘。 [rootxxx myblog]# npm run docs:dev> myblog1.0.0 docs:dev > vuep…

全角色服务、全场景支撑、全业务应用的新一代智慧教室

新一代智慧教室以“数智化助力高质量人才培养”为核心目标&#xff0c;以AI赋能的智能硬件为基础构建多形态智慧教学环境&#xff0c;以中台为支撑实现数据、设备、系统、业务的互联互通、开放共享&#xff0c;以平台全面覆盖教学应用&#xff0c;采集、汇聚、挖掘、分析课前课…

【解决】IntelliJ IDEA 重命名 Shift + F6 失效

IntelliJ IDEA 重命名 Shift F6 失效 问题解决 问题 Idea 重命名 Shift F6 &#xff0c;一直没反应 解决 调查发现原因是微软新版的输入法冲突了。需要设置【使用以前版本的微软拼音输入法】解决兼容性。 设置 -> 时间和语言 -> 区域 -> 语言选项 -> 键盘选项…

公众号迁移公证书模板在哪里下载?

公众号迁移有什么作用&#xff1f;只能变更主体吗&#xff1f;公众号迁移的作用可不止变更主体这一个哦&#xff0c;它还可以把个人公众号变成企业公众号&#xff0c;或者把服务号变成订阅号&#xff0c;甚至还能开通留言功能。不过要注意&#xff0c;现在订阅号已经不能变成服…

软考计算题注意事项总结

1、沟通渠道中&#xff0c;N涉及多少人&#xff1f;是有所增加还是增至多少人&#xff1f; 2、在EMV中&#xff0c;关注的是成本还是收益&#xff1f;若是考虑成本和时间&#xff0c;则选择较小的方案&#xff1b;若是关注收益&#xff0c;则选择较大的方案。 3、在PERT中&am…

什么是数据库设计?基本步骤有哪些?

数据库设计结构图 实线代表输入&#xff0c;虚线代表输出&#xff0c;每个节点的输出作为下一个节点的输入。 基本步骤 1.需求分析阶段 数据需求分析是在项目确定之后&#xff0c;用户和设计人员对数据库应用系统所要涉及的内容&#xff08;数据&#xff09;和功能&#xff0…

JSP在线阅读系统myeclipse定制开发SQLServer数据库网页模式java编程jdbc

一、源码特点 JSP 小说在线阅读系统是一套完善的web设计系统&#xff0c;对理解JSP java编程开发语言有帮助&#xff0c;系统具有完整的源代码和数据库 &#xff0c;系统主要采用B/S模式开发。开发环境为 TOMCAT7.0,Myeclipse8.5开发&#xff0c;数据库为SQLServer2008&#…

安装 java 的 JDK

前几天重装系统以后想起来要重装 java 的JDK 安装地址 Windows 下的 JDK 数据包有三种可选的下载&#xff1a;Windows x64 Compressed Archive、Windows x64 Installer 和 Windows x64 MSI Installer。其中&#xff0c;前者为 JDK 的免安装版本&#xff0c;后两者均为 JDK 的离…

数仓治理-计算资源治理

注&#xff1a;文章参考: 数据治理实践 | 网易某业务线的计算资源治理从计算资源治理实践出发&#xff0c;带大家清楚认识计算资源治理到底该如何进行&#xff0c;并如何应用到其他项目中https://mp.weixin.qq.com/s/w6d5zhDaaavNhW_DMEkPsQ 目录 一、计算资源治理的背景 二…

༺༽༾ཊ—Unity之-04-工厂方法模式—ཏ༿༼༻

首先创建一个项目&#xff0c; 在这个初始界面我们需要做一些准备工作&#xff0c; 建基础通用文件夹&#xff0c; 创建一个Plane 重置后 缩放100倍 加一个颜色&#xff0c; 任务&#xff1a;使用工厂方法模式 创建 飞船模型&#xff0c; 首先资源商店下载飞船模型&#xff0c…

2024年1月的论文推荐

又到月底了&#xff0c;在月初推荐论文的基础上又整理了10篇推荐阅读的论文 1、MosaicBERT https://mosaicbert.github.io/ 一种用于快速预训练的双向编码器。MosaicBERT是针对快速预训练优化的自定义BERT架构。主要架构修改:FlashAttention, ALiBi&#xff0c;门控线性单元…

outlook如何群发邮件?外贸邮件群发教程?

outlook邮箱群发邮件方法&#xff1f;outlook怎么设置邮件群发&#xff1f; 如果你正在使用Outlook&#xff0c;那么你一定想要知道如何有效地群发邮件。Outlook作为微软办公套件的一部分&#xff0c;不仅功能强大&#xff0c;而且操作简便。下面&#xff0c;蜂邮EDM就来详细讲…

Redis的应用问题

目录 一、缓存穿透 问题描述 解决方案 缓存击穿 问题描述 解决方案 缓存雪崩 问题描述 解决方案 二、分布式锁 问题描述 解/决方案&#xff1a;使用redis实现分布式锁 优化之设置锁的过期时间 优化之UUID防误删 LUA脚本保证删除的原子性 LUA脚本 LUA脚本在Red…

4-4 D. 银行排队问题之单队列多窗口加VIP服务

题目描述 假设银行有K个窗口提供服务&#xff0c;窗口前设一条黄线&#xff0c;所有顾客按到达时间在黄线后排成一条长龙。当有窗口空闲时&#xff0c;下一位顾客即去该窗口处理事务。当有多个窗口可选择时&#xff0c;假设顾客总是选择编号最小的窗口。 有些银行会给VIP客户以…

linux 下scrcpy 手机投屏到电脑,QT+ffmpeg 获取视频流,处理等等

linux 下scrcpy 手机投屏到电脑,QT+ffmpeg 获取视频流,处理 1 安装 scrcpy 地址 https://github.com/Genymobile/scrcpy 转到 relese 下载 我这里下载的是linux系统 v2.3.1 版本 scrcpy-2.3.1.tar.gz 下载 scrcpy-server v2.3.1 版本 scrcpy-server-v2.3.1 解压scrcpy-2.3…

【小呆的力学笔记】弹塑性力学的初步认知二:应力应变分析(2)

文章目录 1.4 主应力空间、八面体应力1.5 应变分析1.6 特殊应力、应变定义 1.4 主应力空间、八面体应力 一点的应力状态不论如何变化&#xff0c;其主应力和主方向一致的话&#xff0c;该点的应力状态就是唯一确定的。因此&#xff0c;我们用主应力方向建立一个三维坐标系来描…

【算法专题】二分查找(进阶)

&#x1f4d1;前言 本文主要是二分查找&#xff08;进阶&#xff09;的文章&#xff0c;如果有什么需要改进的地方还请大佬指出⛺️ &#x1f3ac;作者简介&#xff1a;大家好&#xff0c;我是青衿&#x1f947; ☁️博客首页&#xff1a;CSDN主页放风讲故事 &#x1f304;每日…

【前端工程化】环境搭建 nodejs npm

文章目录 前端工程化是什么&#xff1f;前端工程化实现技术栈前端工程化环境搭建 &#xff1a;什么是Nodejs如何安装nodejsnpm 配置和使用npm 介绍npm 安装和配置npm 常用命令 总结 前端工程化是什么&#xff1f; 前端工程化是使用软件工程的方法来单独解决前端的开发流程中模块…

【JavaSE篇】——数组练习

目录 &#x1f6a9;数组转字符串 &#x1f6a9;数组拷贝 &#x1f388;拷贝的实质 &#x1f388;copyOf方法(new) &#x1f36d;copyOf扩容 &#x1f388;arraycopy方法(局部的拷贝)(系统类) &#x1f388;copyOfRange方法(局部拷贝) &#x1f388;原数组.clone() &a…