小白浅学Vue3(上)

简介: 小白浅学Vue3

前端环境


编码工具: VSCode

依赖管理:NPM

项目构建: Vuecli


NPM的全称是Node Package Manager,是一个NodeJS包管理和分发工具,已经成为了非官方的发布Node模块(包)的标准。2020年3月17日,Github宣布收购npm,GitHub现在已经保证npm将永远免费。


依赖管理NPM安装配置


NPM官网


https://nodejs.org/en/download/


下载安装完成后


验证 Node.js 是否已成功安装


node -v


在nodejs安装目录创建node_global和node_cache文件夹


cmd命令,依次输入:

npm config set prefix "D:\Nodejs\node_global"

npm config set cache "D:\Nodejs\node_cache"


npm config set prefix “D:\Nodejs\node_global”:将 Node.js 全局安装包的安装路径设置为 “D:\Nodejs\node_global”。在使用 npm install -g 命令全局安装 Node.js 模块时,将会将模块安装到指定的目录中。

npm config set cache “D:\Nodejs\node_cache”:将 Node.js 模块缓存路径设置为 “D:\Nodejs\node_cache”。在使用 npm install 命令安装 Node.js 模块时,将会将模块缓存到指定的目录中。


修改系统环境变量


F:\Program Files\nodejs\node_global


NODE_PATH


F:\Program Files\nodejs\node_modules


使用npm install express -g全局安装 Express 模块


说明文件权限不够,允许完全控制得以解决


更改 npm 的默认源为淘宝源

npm config set registry https://registry.npm.taobao.org


恢复默认的 npm 官方源

npm config set registry https://registry.npmjs.org


查看当前npm 源的 URL


使用淘宝源全局安装 cnpm。cnpm 是一个基于 npm 的淘宝定制版,可以在国内更快地安装 Node.js 包

npm install -g cnpm --registry=https://registry.npm.taobao.org


创建Vue项目


npm init vue@latest


安装依赖npm install


VITE v5.0.11  ready in 479 ms

 ➜  Local:   http://localhost:5173/

 ➜  Network: use --host to expose

 ➜  press h + enter to show help


模板语法


文本插值{{  }}


最基本的数据绑定形式是文本插值,“Mustache”语法


支持三元表达式

<template>
    <p>{{ msg }}</p>
</template>
<script>
export default{
    data(){
        return{
            msg:"123"
        }
    }
}
</script>


v-html


插入HTML,使用v-html,而{{  }}只是插入纯文本

<template>
    <p>{{ msg }}</p>
    <p>{{ ok ? 'yes':'no' }}</p>
    <p><span v-html="insertHtml"></span></p>
</template>
<script>
export default{
    data(){
        return{
            msg:"123",
            ok:true,
            insertHtml:"<a href='https://www.baidu.com'></a>"
        }
    }
}
</script>


属性绑定


{{  }}不能在attributes中使用,绑定arrtibute需要使用v-bind, v-bind的缩写:className


v-bind将元素的attribute与组件的dynamicld属性保持一致。如果绑定的值是null遇undefined,则将attribute从渲染的元素上移除

<template>
    <div v-bind:class="divColour">
        123
    </div>
</template>
<script>
export default{
    data(){
        return{
            divColour:"Colourclass"
        }
    }
}
</script>


v-bind简写

<template>
    <div :class="divColour">
        123
    </div>
</template>
<script>
export default{
    data(){
        return{
            divColour:"Colourclass"
        }
    }
}


条件渲染


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

<template>
    <!-- <div v-if="no">看不见</div>
    <div v-if="ok">看得见</div>
    <div v-else>123</div> -->
    <div v-if="no">1</div>
    <div v-else-if="ok">2</div>
    <div v-else>3</div>
</template>
<script>
export default{
    data(){
        return{
            ok:true,
            no:false
        }
    }
}
</script>


v-show


666


相同点:v-if与v-show都可以动态控制dom元素显示隐藏

不同点:v-if显示隐藏是将dom元素整个添加或删除,而v-show隐藏则是为该元素添加css--display:none,dom元素还在。


v-if是惰性的,也是真实的按条件渲染,应为它确保了在切换时,条件区块内的事件监听器和子组件都会被销毁与重建。条件区块只有条件首次变为true时才被渲染。


v-show元素无论初始条件如何,始终会被渲染,只有CSS的display属性会被切换


v-if有更高的切换开销,而v-show有更高的初始化渲染开销。


v-if应用场景更适合初始化,只渲染一次


v-show应用场景更适合频繁的切换


列表渲染v-for


    <div>
        <p v-for="name in names">{{ name }}</p>
    </div>


Index,数组下标

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


可以使用of代替in,of更接近javaScript迭代器语法

    <div>
        <p v-for="(name,index) of names">{{ index }} : {{ name }}</p>
     </div>
    <div>
        <p v-for="(value,key,index) of user"> {{ key }}  :{{ value }} : {{ index }} </p>
    </div>


状态管理


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


为给Vue一个提示,以便可以跟踪每个节点的标识,从而重用和重新排序现有元素,需为每个元素提供唯一的attribute(key)


v-for中添加key是通过v-bind绑定特殊attribute


推荐在任何时候为v-for提供唯一的attribute(key)


实际场景中不推荐使用index作为key,使用数据源中的唯一值,如数据库表中的唯一ID

<div>
        <p v-for="(value,key,index) of user" :key="index"> {{ key }}  :{{ value }} : {{ index }} </p>
    </div>


事件


用法:v-on:click=”handler” 或 @click=”handler”


事件


  1. 内联事件:事件被触发执行的内联javaScript语句(类似onclick)
  2. 方法事件:指组件上指定的方法的属性名或路径


内联事件处理


内联事件通常用于简单场景


+1

 

{{ count }}


方法事件处理


推荐使用

<button @click="addCount">+1</button>
    <p>{{ count }}</p>
methods:{
        addCount(){
            this.count +=1;
        }
    },


事件传参

<input type="text" v-model="message">
    <button @click="addCount(message.$event)">+1</button>
    <p>{{ message }}</p>
 methods:{
        //event对对象
        addCount(msg,e){
            console.log(msg);
            //e.target.innerHTML ="+"+this.count
            this.count +=1;
        }
    },


事件修饰符


处理事件时经常调用event.stopPropagation()或event.preventDefault()。


Vue为v-on提供了常用的修饰符


.stop  .privent  .once  .enter等


.privent阻止触发

<a @click.prevent="clickhandle" href="https://www.baidu.com/">baidu</a>


.stop 阻止冒泡事件

<div @click="clickhandle">
        <p @click.stop="addCount('P')">冒泡</p>
    </div>


以下类推


.once只执行一次

.enter回车触发


小白浅学Vue3(中):https://developer.aliyun.com/article/1431692

目录
相关文章
|
2月前
|
缓存 JavaScript UED
Vue3中v-model在处理自定义组件双向数据绑定时有哪些注意事项?
在使用`v-model`处理自定义组件双向数据绑定时,要仔细考虑各种因素,确保数据的准确传递和更新,同时提供良好的用户体验和代码可维护性。通过合理的设计和注意事项的遵循,能够更好地发挥`v-model`的优势,实现高效的双向数据绑定效果。
140 64
|
2月前
|
JavaScript 前端开发 API
Vue 3 中 v-model 与 Vue 2 中 v-model 的区别是什么?
总的来说,Vue 3 中的 `v-model` 在灵活性、与组合式 API 的结合、对自定义组件的支持等方面都有了明显的提升和改进,使其更适应现代前端开发的需求和趋势。但需要注意的是,在迁移过程中可能需要对一些代码进行调整和适配。
114 60
|
10天前
|
JavaScript API 数据处理
vue3使用pinia中的actions,需要调用接口的话
通过上述步骤,您可以在Vue 3中使用Pinia和actions来管理状态并调用API接口。Pinia的简洁设计使得状态管理和异步操作更加直观和易于维护。无论是安装配置、创建Store还是在组件中使用Store,都能轻松实现高效的状态管理和数据处理。
38 3
|
2月前
|
前端开发 JavaScript 测试技术
Vue3中v-model在处理自定义组件双向数据绑定时,如何避免循环引用?
Web 组件化是一种有效的开发方法,可以提高项目的质量、效率和可维护性。在实际项目中,要结合项目的具体情况,合理应用 Web 组件化的理念和技术,实现项目的成功实施和交付。通过不断地探索和实践,将 Web 组件化的优势充分发挥出来,为前端开发领域的发展做出贡献。
39 8
|
2月前
|
存储 JavaScript 数据管理
除了provide/inject,Vue3中还有哪些方式可以避免v-model的循环引用?
需要注意的是,在实际开发中,应根据具体的项目需求和组件结构来选择合适的方式来避免`v-model`的循环引用。同时,要综合考虑代码的可读性、可维护性和性能等因素,以确保系统的稳定和高效运行。
32 1
|
2月前
|
JavaScript
Vue3中使用provide/inject来避免v-model的循环引用
`provide`和`inject`是 Vue 3 中非常有用的特性,在处理一些复杂的组件间通信问题时,可以提供一种灵活的解决方案。通过合理使用它们,可以帮助我们更好地避免`v-model`的循环引用问题,提高代码的质量和可维护性。
42 1
|
2月前
|
JavaScript
在 Vue 3 中,如何使用 v-model 来处理自定义组件的双向数据绑定?
需要注意的是,在实际开发中,根据具体的业务需求和组件设计,可能需要对上述步骤进行适当的调整和优化,以确保双向数据绑定的正确性和稳定性。同时,深入理解 Vue 3 的响应式机制和组件通信原理,将有助于更好地运用 `v-model` 实现自定义组件的双向数据绑定。
|
2月前
|
存储 JavaScript 前端开发
vue3的脚手架模板你真的了解吗?里面有很多值得我们学习的地方!
【10月更文挑战第21天】 vue3的脚手架模板你真的了解吗?里面有很多值得我们学习的地方!
vue3的脚手架模板你真的了解吗?里面有很多值得我们学习的地方!
|
2月前
|
JavaScript 索引
Vue 3.x 版本中双向数据绑定的底层实现有哪些变化
从Vue 2.x的`Object.defineProperty`到Vue 3.x的`Proxy`,实现了更高效的数据劫持与响应式处理。`Proxy`不仅能够代理整个对象,动态响应属性的增删,还优化了嵌套对象的处理和依赖追踪,减少了不必要的视图更新,提升了性能。同时,Vue 3.x对数组的响应式处理也更加灵活,简化了开发流程。
|
2月前
|
JavaScript 前端开发 开发者
Vue 3中的Proxy
【10月更文挑战第23天】Vue 3中的`Proxy`为响应式系统带来了更强大、更灵活的功能,解决了Vue 2中响应式系统的一些局限性,同时在性能方面也有一定的提升,为开发者提供了更好的开发体验和性能保障。
80 7

热门文章

最新文章