Vue3基础知识(待续)

news2024/12/24 3:15:44

Vue是什么 

构用户界面的js的渐进式框架,基于htlm、css、js,并提供声明式组件化的编程模型,帮你高效开发用户界面。无论简单或复杂的界面Vue都可以胜任。

vue是一个框架,同时也是一个生态。因为有很多程序员支持vue,开发了很多如轮播图的东西就形成了一个生态。考虑到web世界的多样性,vue注重灵活性和可被逐步继承。可在一个完整项目中使用vue,或某一个功能上使用vue,或某一个html中使用vue的某个功能。

后期主要是一个完整的项目中使用Vue。

 vue分为vue2和vue3。vue3涵盖了vue2,vue3增加了很多新的特性。

官网:cn.vuejs.org   v2.cn.vuejs.org

Vue API风格

vue2和vue3新老版本的问题,代码书写风格不一样:选项式API(vue2)、组合式API(vue3)。

使用选项式API,我们可以用包含多个选项的对象来描述组件的逻辑,例如data 、methods 和(mounted。选项所定义的属性都会暴露在函数内部的this 上,它会指向当前的组件实例.

具体参见Vue2如Vue2基础入门_阳光明媚UPUP的博客-CSDN博客

通过组合式API,我们可以使用导入的API函数来描述组件逻辑。

组合式api如:

 这两种风格的api虽然写法完全不同,但是效果确实完全相同的。   

当你不需要使用构建工具,或者打算主要在低复杂度的场景中使用Vue,例如渐进增强的应用场景,推荐采用选项式API
当你打算用Vue构建完整的单页应用,推荐采用组合式API+单文件组件     

学习Vue前的准备

熟悉命令行

要求安装15.0或更高版本的nodejs  cmd下node -v检测 

nodejs简单了解

node.js:是一个开源的,跨平台的javaScript运行环境,简单来说它是一款应用程序,是一款软件,可运行javaScript。

nodejs可开发服务器端应用,nodejs就可在服务器中进行处理,将视频发给用户端。将资源返回给浏览器解析。nodejs就运行在服务器端,将用户的请求做处理,并把资源返回给浏览器。

nodejs可开发工具类应用如webpack、vite、babel,这三个工具可提高前端开发的效率和质量,都是借助于是借助于nodejs。

nodejs可以开发桌面端应用:vscoder、figma、postman,这三都借助于electron框架,electron又是借助于nodejs开发出来的。

nodejs下载安装

Node.js

选中LTS长期支持版下载

旧版本可在中文网站中全部按转包中CNPM Binaries Mirror



下载 | Node.js 中文网

下载.mis直接安装,途中不用勾选那个自动install的选框。

下载zip参考【转载】windows下Nodejs zip版下载安装及环境变量配置_nodezip版如何配置_AllTimeLow丶的博客-CSDN博客

创建Vue项目

进入空文件夹,上方cmd敲,会进入到该目录,然后 npm init vue@latest

D:\VueProject>npm init vue@latest

Vue.js - The Progressive JavaScript Framework

√ Project name: ... vue-base     起个项目名,不要有大写字母
√ Add TypeScript? ... No / Yes    //添加TS默认NO直接回车即可
√ Add JSX Support? ... No / Yes     
√ Add Vue Router for Single Page Application development? ... No / Yes    添加路由,先no
√ Add Pinia for state management? ... No / Yes   
√ Add Vitest for Unit Testing? ... No / Yes
√ Add an End-to-End Testing Solution? » No
√ Add ESLint for code quality? ... No / Yes

Scaffolding project in D:\VueProject\vue-base...    //全部no默认,然后回车即可。

Done. Now run:

  cd vue-base
  npm install
  npm run dev


D:\VueProject> 

然后执行它的提示代码即可:

先cd vue-base

然后执行cnpm install 也可安装cnpm后执行cnpm install

安装cnpm命令为npm install -g cnpm --registry=https://registry.npm.taobao.org

然后使用cnpm install

然后npm run dev运行项目  运行成功后复制地址到浏览器url输入访问即可。

也可使用vscoder打开一个空文件夹,然后ctrl+`在终端里敲上面的初始化代码等。 

开发环境

vscoder+volar扩展       

vscoder打开vue项目根目录 

由于App.vue是字体为灰色,我们在vsccoder左侧扩展里加上一个vue language feature volar

这时App.vue就有颜色了

Vue项目目录结构

.vscode  ---  vscode工具的配置文件
node_modules  --- Vue项目的运行依赖文件夹   执行npm install安装的就是它
public  ---  资源文件夹(浏览器图标)
src  ---  源码文件夹  进行编码的文件夹   写代码的文件夹
.gitignore  ---  git忽略文件
index.html  ---  入口的HTML文件
package.json  ---  信息描述文件   依赖vue3,开发环境dev详细依赖vite脚手架类似webpack
README. md  ---  注释文件
vite.config.js  --- vue配置文件  做配置,如跨域、打包

模板语法

基于html的模板语法,是我们能够声明式的将其组件实例的数据绑定到呈现的dom上,所有的vue模板都是语法层面合法的html,可被符合规范的浏览器和html解析器解析。

1.文本插值

最基本的数据绑定形式,采用双大括号mustache语法

我们可先删除vue项目src下的components目录下所有的东西,然后App.vue中只保留

  <script>  </script>  <template>  </template>   template和script上下顺序可颠倒,template建议放在script上面。

我们在App.vue中写入

  <template>
  <h3>模板语法</h3>
  <p>{{msg}}</p>
  </template>
  <script>
  export default{
    data(){
      return{
        msg:"神奇的语法"
      }
    }
  } 
  </script>

重新运行终端npn run dev访问即可(后期保存自动更新页面)。发现还有样式剧中,样式在main.js中引入了资源文件夹assets文件夹下的main.css删除import语句即可。

assets为资源文件夹,日后公共css及实现都可放在这里,目前assets中资源直接删除掉即可。

2、使用js表达式

仅支持单一表达,即一个有结果的js表达式,可放在return语句中的。

不支持var,不支持for这种换行的表达式,可三元表达式。

  <template>
  <h3>模板语法</h3>
  <p>{{msg.split("").reverse().join("")}}</p>
  <p>{{number+1}}</p>
  <p>{{ok?'yes':'no'}}</p>
  </template>
  <script>
  export default{
    data(){
      return{
        msg:"神奇的语法",
        number:10,
        ok:true
      }
    }
  } 
  </script>

 3、原始html

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

  <template>
  <h3>模板语法</h3>
  <p>{{url}}</p>
  <p v-html="url"></p>
  </template>
  <script>
  export default{
    data(){
      return{
        url:"<a href='http://www.baidu.com'>百度</a>"
      }
    }
  } 
  </script>

属性绑定

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

App.vue中改成引入组件文件夹中的HelloWorld.vue

<script setup>
import HelloWorld from './components/HelloWorld.vue'
</script>
<template>
  <HelloWorld/>
</template>

src下components下的HelloWorld.vue 

<template>
    <!-- v-bin:也可简写为:一个冒号 -->
    <div v-bind:id="dynamicId" :class="msg" >测试</div>
    <button :disabled="isButtonDisabled">button按钮</button>
    <div v-bind="objectOfAttrs">一次性绑定多个属性</div>
</template>
<script>
export default{
    data(){
        return{
            msg:"active",//active为选中的意思
            dynamicId:"appId",
            dynamicTitle:null,//如果为null或undefined,那么该attribute将会从渲染的元素上移
            isButtonDisabled:false,
            //也可一次性绑定多个值
            objectOfAttrs:{
                id:"appId",
                class:"allClass"
            }
        }
    }
}
</script>

刷新网页即可。所有的标签的属性都可通过这个v-bind为其绑定vue的data值

条件渲染

在vue中,提供了条件渲染,这类似于JavaScript中的条件语句

v-if、v-else、v-else-if、v-show

先src的components文件夹下创建ifDemo.vue 

<template>
    <h3>条件渲染</h3>
    <div v-if="flag">你能看见我吗?</div>
    <!-- v-if为假的时候显示 -->
    <div v-else>那你还是看看我吧</div>
    <div v-if="type === 'A'">A</div>
    <div v-else-if="type==='B'">B</div>
    <div v-else-if="type==='C'">C</div>
    <div v-else>Not A/B/C</div>
    <div v-show="flag">你能看见我吗?</div>
</template>
<script>
export default{
    data(){
        return{
            flag : true,
            type : "B"
        }
    }
}
</script>

在App.vue中引入:

<script setup>
import HelloWorld from './components/HelloWorld.vue'
import IfDemo from "./components/ifDemo.vue"
</script>
<template>
  <HelloWorld />
  <IfDemo />
</template>

v-if是基于对标签的渲染与否,v-show是基于display属性设置为true或false。

总的来说,ve-if有更高的切换开销,而v-show有更高的初始渲染开销。因此,如果需要频繁切换,则使用v-show较好;如果在运行时绑定条件很少改变,则v-if会更合适。

v.if 也是惰性的:如果在初次渲染时条件值为false,则不会做任何事。条件区块只有当条件首次变为true时才被渲染。

列表渲染

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

src下的components中创建ListDemo.vue

<template>
    <h3>列表渲染</h3>
    <p v-for="item in names">{{item}}</p>
    <p v-for="(item,index) in names">{{item}}--{{ index }}</p>
    <!-- 使用in和使用of都一样 -->
    <p v-for="item of names">{{item}}</p>
    <p v-for="(item,index) of names">{{item}}--{{ index }}</p>
    <hr/>
    <!-- 对于复杂的json -->
    <div v-for="item of results">
        <p>{{item.id}}</p>
        <p>{{item.title}}</p>
        <a :href="item.url">链接</a>
    </div>
    <!-- 对于一个对象也可遍历 -->
    <div>
        <p v-for="item in userInfo">{{ item }}</p>
        <p v-for="(value,key,index) in userInfo">{{ value }}-{{ key }}--{{index}}</p>
    </div>   
</template>
<script>
    export default{
        data(){
            return{
                names:["张三","李四","王二麻子"],
                //对于复杂的json数据
                results:[
                    {
                        "id":1,
                        "title":"111hello你好",
                        "url":"http://www.baidu.com"
                    },
                    {
                        "id":2,
                        "title":"222hello你好",
                        "url":"http://www.baidu.com"
                    },
                    {
                        "id":3,
                        "title":"333hello你好",
                        "url":"http://www.baidu.com"
                    }
                ],
                //对于一个对象也可以遍历
                userInfo:{
                    name:"张三",
                    age:22,
                    sex:"男"
                }
            }
        }
    }
</script>

App.vue中引入

<script setup>
import HelloWorld from './components/HelloWorld.vue'
import IfDemo from "./components/ifDemo.vue"
import ListDemo from "./components/ListDemo.vue"
</script>
<template>
  <HelloWorld />
  <IfDemo />
  <ListDemo />
</template>

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

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

相关文章

【Python】Web学习笔记_flask(4)——钩子函数

钩子函数可以用来注册在请求处理的不同阶段执行出 Flask的请求钩子指的是在执行视图函数前后执行的一些函数&#xff0c; 之前是有4种&#xff0c;但是 before_first_request已经被删除了&#xff0c;使用时会报错 before_request&#xff1a;在每次请求前执行&#xff0c;…

Arc A770M的蝰蛇峡谷迷你电脑主机值得入手吗?

相比于已经走上正轨的NUC迷你电脑产品&#xff0c;英特尔的独显&#xff0c;特别是最新一代Arc&#xff08;锐炫&#xff09;还是犹抱琵琶半遮面。通过蝰蛇峡谷NUC&#xff0c;它算是正式亮相了。 这里的Serpent Canyon是英特尔NUC系列的最新产品。它在NUC 12 Enthusiast版本中…

高级C语言

1.day1 1、mobaxterm使用 1、更方便的使用虚拟机终端&#xff1b; 2、新建一个终端&#xff0c;CTRL SHIFT U; 3、清屏&#xff0c;CTRL L; 2、gdb调试 参考《gdb调试器练习》 2.day2 3.day3 1、vin自动生成main函数 1&#xff09;打开vim的配置文件&#xff1b; s…

【开源源码学习】

C 迷你高尔夫 一款打高尔夫的游戏。亮点是碰撞反应和关卡设计。 GitHub - mgerdes/Open-Golf: A cross-platform minigolf game written in C. TypeScript 俄罗斯方块 复刻经典的俄罗斯方块&#xff0c;项目采用ReactReduxImmutable的技术栈。 GitHub - chvin/react-tetr…

【Web】基于C#的学生选课系统开发

目录 一、实验目的二、设计数据库表三、设计学生、课程和已选课程类四、 系统流程图五、功能流程图六、总结 一、实验目的 1、设计学生类&#xff08;学号 | 姓名 | 班级 | 初始密码&#xff09; 2、设计课程类&#xff08;课程代码 | 课程名称 | 学分&#xff09; 3、设计已选…

HTML5 Canvas(画布)

<canvas>标签定义图形&#xff0c;比如图表和其他图像&#xff0c;你必须用脚本来绘制图形。 在画布上&#xff08; Canvas &#xff09;画一个共红色矩形&#xff0c;渐变矩形&#xff0c;彩色矩形&#xff0c;和一些彩色文字。 什么是 Canvas&#xff1f; HTML5<c…

数据库的分库分表

#!/bin/bash ######################### #File name:db_fen.sh #Version:v1.0 #Email:admintest.com #Created time:2023-07-29 09:18:52 #Description: ########################## MySQL连接信息 db_user"root" db_password"RedHat123" db_cmd"-u${…

linux安装Tomcat及部署jpress的详细教程!!!

一、YUM在线安装 1、查看Tomcat相关安装包 [rootlocalhost ~]# yum list | grep tomcat tomcat.noarch 7.0.76-16.el7_9 updates tomcat-admin-webapps.noarch 7.0.76-16.el7_9 updates tomcat-docs…

msvcr100.dll丢失的解决方法?三招解决msvcr100.dll丢失问题

最近我遇到了一个电脑问题&#xff0c;就是在运行某个软件时提示缺少msvcr100.dll文件。起初我并不知道这个文件是什么&#xff0c;也不知道它的作用&#xff0c;但通过一番搜索和了解&#xff0c;我对这个问题有了更深的理解&#xff0c;并且也得到了解决的办法。 解决方法一&…

分享学习java过程中遇到的一些网址

*****JavaWeb视频教程***** https://www.bilibili.com/video/BV1m84y1w7Tb?p4&spm_id_frompageDriver&vd_source841fee104972680a6cac4dbdbf144b50*****Java前端官网教程&#xff08;HTML、CSS、JS)***** https://www.w3school.com.cn/html/index.asp*****VS Code官网…

阶段性实验汇总

文章目录 前言一、实验目的与要求1.目的2.要求 二、实验拓扑三、实验步骤1.阅读实验拓扑2.配置基础环境3.配置DHCP及其中继服务器&#xff08;一&#xff09;DHCP主服务器&#xff08;二&#xff09;DHCP中继服务器(三)登录客户端验证 4.配置DNS服务器&#xff08;一&#xff0…

faac内存开销较大,为方便嵌入式设备使用进行优化(valgrind使用)

faac内存开销较大&#xff0c;为方便嵌入式设备使用进行优化&#xff0c;在github上提了issues但是没人理我&#xff0c;所以就搞一份代码自己玩吧。 基于faac_1_30版本&#xff0c;原工程https://github.com/knik0/faac faac内存优化: faac内存开销较大&#xff0c;为方便嵌入…

RS232转Profinet网关rs232转网口需要如何设置

大家好&#xff0c;今天我要给大家带来一个很有意思的案例分享。你们猜猜&#xff0c;这回我们要用捷米的一款神奇的网关JM-RS485/232-PN做什么呢&#xff1f;没错&#xff0c;我们要把一台扫码枪设备通过这个RS232转PROFINET网关&#xff0c;接入到一台西门子S7-1200PLC的Prof…

无涯教程-Lua - for语句函数

for 循环是一种重复控制结构&#xff0c;可让您有效地编写需要执行特定次数的循环。 for loop - 语法 Lua编程语言中 for 循环的语法如下- for init,max/min value, increment dostatement(s) end 这是 for 循环中的控制流程- 首先执行 init 步骤&#xff0c;并且仅执行一…

DT MAYA绑定

设置另外一边 控制器 结果 根骨骼 // 错误: line 0: 未应用冻结变换&#xff0c;因为 curve4.scaleX 被锁定。 骨骼旋转 轴向

关于latch up的重读

衬底电流容易导致寄生三极管导通(衬底电阻衬底电流》衬底压差)&#xff0c;更容易触发latchup&#xff1b; 一般常用的实际产品中会用衬底隔离的器件来做负压器件&#xff1b;用DNW&NBL组成一个隔离盆将整个负压区和正常电路分开&#xff0c;DNW&NBL接高电压&#xff1…

【福建事业单位-语言理解】03 语序选择-填空-接语

【福建事业单位-语言理解】03 语序选择-填空-接语 一、语句排序1.1 确定首句1.2 确定捆绑集团/确定局部顺序/确定尾句1.3确定尾句总结 二、语句填空题句子首句&#xff08;概括下文&#xff09;句尾&#xff08;总结前文/提对策&#xff09;句中&#xff08;承上启下&#xff0…

spring-bean配置信息重用(继承)和bean创建顺序是什么以及bean 对象的单例和多例讲解

&#x1f600;前言 本章是spring基于XML 配置bean系类中第5篇讲解spring-bean配置信息重用(继承)和bean创建顺序是什么以及bean 对象的单例和多例讲解 &#x1f3e0;个人主页&#xff1a;尘觉主页 &#x1f9d1;个人简介&#xff1a;大家好&#xff0c;我是尘觉&#xff0c;希…

Java-SPI机制详解

Java之SPI机制详解 1: SPI机制简介 SPI 全称是 Service Provider Interface&#xff0c;是一种 JDK 内置的动态加载实现扩展点的机制&#xff0c;通过 SPI 技术我们可以动态获取接口的实现类&#xff0c;不用自己来创建。这个不是什么特别的技术&#xff0c;只是 一种设计理念…

【MySQL】MVCC的实现原理

MVCC的实现原理 1.前期准备1.2.隐式字段1.3.undo log日志1.4.readView 2.MVCC的实现流程2.1.R C&#xff08;读已提交---隔离级别&#xff09;2.2.R R&#xff08;可重复读---隔离级别&#xff09; 3.面试题---->事务中的隔离性是如何保证的呢&#xff1f;(你解释一下MVCC) …