新用户注册入口 老用户登录入口

[转载]Vue框架学习(二)

文章作者:转载 更新时间:2023-12-25 22:28:14 阅读数量:64
文章标签:Vue选项组件响应式数据methods注册局部组件
本文摘要:Vue组件通过选项式API进行逻辑描述,其中关键选项包括data、methods、computed属性及directives等。data作为函数确保响应式数据独立;methods用于封装事件回调,实现数据驱动视图更新;computed计算属性依据依赖自动重新计算并缓存结果;而directives允许开发者自定义指令,增强组件功能。另外,局部组件需在components选项中注册以供内部使用,全局组件则需在main.js中注册。Vue框架充分利用这些选项,实现了高效的组件化开发与数据管理。
转载文章

本篇文章为转载内容。原文链接:https://blog.csdn.net/weixin_57714647/article/details/130878069。

该文由互联网用户投稿提供,文中观点代表作者本人意见,并不代表本站的立场。

作为信息平台,本站仅提供文章转载服务,并不拥有其所有权,也不对文章内容的真实性、准确性和合法性承担责任。

如发现本文存在侵权、违法、违规或事实不符的情况,请及时联系我们,我们将第一时间进行核实并删除相应内容。

Vue选项

什么是选项?

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

以上是官网对于选项的概念,简单的说,选项是一组由Vue定义好的对象,你可以将你的代码写在指定的选项中,从而获得一些 “特异功能” 。

注:由于选项是Vue规定好的,因此在使用中我们不能更改其名称,也不可以重复定义

常用选项

1. data选项
  • 必须是一个函数,将组件需要使用的变量定义在此函数的返回值对象中,定义的变量将会获得一个“特异功能” ---- 响应式
<template><div><!-- 在这里使用插值表达式将name渲染到页面 -->{{ name } }</div>
</template><script>
export default {// data选项data(){return{// name是响应式的name:"Jay",} },
}
</script>

上面例子中的name就是一个响应式数据,在值发生改变时,视图(页面)上的name也会发生变化,那我们便可以通过操作name的变化去使视图发生变化,而不用进行繁琐的DOM操作,这也体现着Vue框架的 数据驱动 这一核心思想。

  • 为什么数据要定义在data函数的返回值中,而不是定义在一个对象中?
    • 将数据定义在函数返回值中,可以确保每产生一个组件实例,都会调用一次函数,并返回一个新的对象,开辟一块新的空间。
    • 如果将数据定义在对象中,可能会出现类似于浅拷贝中出现的问题,即多个组件实例指向同一块空间,一个组件实例修改数据,则全部数据发生变化。
2. methods选项
  • 此选项是一个对象,其中存放着该组件要使用的函数,比如事件的回调函数…
<template><div><!-- 添加点击事件,事件回调函数在methods中定义 --><button @click="add">点击加一</button> <p>{{ count } }</p></div>
</template><script>
export default {data(){return{count:0,} },// 在methods中定义函数(方法)methods:{add(){// 在函数中要使用data中的变量,需加thisthis.count++},}
}
</script>

通过点击事件改变count的值,从而使页面上的值随之变化,再次体现 数据驱动 的核心思想

3. computed 计算属性
  • 计算属性,对象形式,顾名思义,在计算属性中保存着一系列需要经过运算得出的属性
<template><p>路程:{{ distance } } km</p><p>速度:{{ speed } } km/h</p><!-- 使用计算属性,与变量的使用相同 --><p>花费的时间:{{ time } } h</p>
</template><script>
export default {data() {return {distance: 1000,speed: 50,} },computed: {// 定义计算属性,类似于函数的定义,返回值就是该计算属性的值time() {return this.distance / this.speed} }
}
</script>

计算属性内部所依赖的数据发生变化时, 计算属性本身就会自动重新计算返回一个新的计算值并缓存起来。

计算属性内部所依赖的数据没有发生变化, 计算属性会直接返回上一次缓存的值。

因此上面例子中的distance(路程)与speed(速度)无论如何变化,time都会计算出正确的值。

4. directives 选项, 定义自定义指令( 局部指令 )
  • 在上节,我们学习了一些Vue内置指令,功能十分强大,那么我们可以自己定义一些指令吗?
  • 当然可以!我们可以在directives选项中创建自定义指令。
<template><!-- 使用自定义指令 --><div v-myshow="1"></div><div v-myshow="0"></div>
</template><script>
export default {// 在directives中定义一个自定义指令,来模仿v-show的功能directives: {//el:添加自定义指令的元素;binding:指令携带的参数myshow(el, binding) {if (binding.value) {el.style.display = "block";} else {el.style.display = "none";} }}
}
</script><style scoped>
div {width: 100px;height: 100px;background-color: red;margin: 10px;
}
</style>

像以上这种,在组件中定义的指令是局部指令,只能在本组件中使用,全局指令需要在main.js文件中定义,全局指令在任何.vue文件中都可使用。

注意: 当局部指令和全局指令冲突时, 局部指令优先生效.

var app = createApp(App)//定义全局指令 
app.directive("myshow", (el, binding) => {if (binding.value) {el.style.display = "block";} else {el.style.display = "none";}
})
// 全局指令可在任何组件使用
5. components组件选项(注册局部组件
  • 在一个组件中我们可能会使用到其他组件,在将组件引入后,需要在components中进行注册,才能使用。
<template><!-- 使用组件 --><Test />
</template><script>
// 引入组件
import Test from './Test.vue'export default {// 注册组件components: {Test},
}
</script>

局部组件只能在当前组件内部使用,需要在任何组件中使用,需要在main.js文件中注册为全局组件

// 引入组件
import Test from './Test.vue'
// 注册全局组件,可在所有.vue文件中使用
app.component('Test',Test);
6. 其他

filters 选项, 定义过滤器,vue2中使用,Vue3中已经弃用
mounted 等生命周期函数选项,我们在下节进行详细讲解…

本篇文章为转载内容。原文链接:https://blog.csdn.net/weixin_57714647/article/details/130878069。

该文由互联网用户投稿提供,文中观点代表作者本人意见,并不代表本站的立场。

作为信息平台,本站仅提供文章转载服务,并不拥有其所有权,也不对文章内容的真实性、准确性和合法性承担责任。

如发现本文存在侵权、违法、违规或事实不符的情况,请及时联系我们,我们将第一时间进行核实并删除相应内容。

相关阅读
文章标题:[转载][洛谷P1082]同余方程

更新时间:2023-02-18
[转载][洛谷P1082]同余方程
文章标题:[转载]webpack优化之HappyPack实战

更新时间:2023-08-07
[转载]webpack优化之HappyPack实战
文章标题:[转载]oracle 同时更新多表,在Oracle数据库中同时更新两张表的简单方法

更新时间:2023-09-10
[转载]oracle 同时更新多表,在Oracle数据库中同时更新两张表的简单方法
文章标题:[转载][Unity] 包括场景互动与射击要素的俯视角闯关游戏Demo

更新时间:2024-03-11
[转载][Unity] 包括场景互动与射击要素的俯视角闯关游戏Demo
文章标题:[转载]程序员也分三六九等?等级差异,一个看不起一个!

更新时间:2024-05-10
[转载]程序员也分三六九等?等级差异,一个看不起一个!
文章标题:[转载]海贼王 动漫 全集目录 分章节 精彩打斗剧集

更新时间:2024-01-12
[转载]海贼王 动漫 全集目录 分章节 精彩打斗剧集
名词解释
作为当前文章的名词解释,仅对当前文章有效。
响应式数据响应式数据是Vue框架中的核心特性,它通过特殊的 getter 和 setter 机制对组件中定义的数据进行观察和代理。当在data选项中声明一个变量时,Vue会自动将其转换为响应式属性,这意味着当这些数据发生变化时,视图层(HTML模板)会立即得到更新,无需手动操作DOM,实现数据驱动视图。
计算属性(Computed Properties)计算属性是Vue提供的一种特殊属性,用于声明依赖于其他数据的衍生状态。它是一个包含getter和可选setter方法的对象属性。在Vue中,计算属性会根据其内部依赖关系缓存结果,只有在其依赖的数据发生变化时才会重新计算,并将新的计算结果返回给视图层。这有助于提高性能并简化代码,例如,在文章示例中,时间(time)就是基于路程(distance)和速度(speed)两个数据计算得出的。
自定义指令(Custom Directives)自定义指令是Vue允许开发者扩展HTML元素功能的一种强大工具,通过在directives选项中注册一个指令,可以给元素添加特殊的行为逻辑。指令通常由两个部分构成。
局部组件(Local Components)局部组件是指在单个Vue组件内定义并注册的子组件,只能在当前组件模板中使用。通过在components选项中声明和注册局部组件,可以将复杂的UI结构或特定功能封装成可重用的模块,以提升代码复用性和组织性。在实际项目中,局部组件常用于组件间的组合和嵌套,使得整体应用架构更加清晰和模块化。
延伸阅读
作为当前文章的延伸阅读,仅对当前文章有效。
在深入理解Vue组件的选项配置后,进一步探索现代前端开发中的Vue生态与最新进展将有助于开发者更好地应用这些概念。近期,Vue3的正式发布带来了诸多新特性,例如Composition API为组件逻辑组织提供了更灵活的方式,它允许开发者以函数形式组织和复用状态、计算属性和方法,从而替代了Vue2中基于对象的选项式API。
另外,在Vue3中,虽然过滤器(filters)被移除,但新的“setup”函数结合尤雨溪推荐的“unref”和“toRefs”等工具函数,为处理响应式数据提供了更为精细的控制手段。同时,Vue3优化了虚拟DOM算法,提升了性能,并且对TypeScript支持更加友好,使得大型项目开发时代码可读性和维护性显著提高。
此外,Vue生态系统也在不断壮大,比如Vuex 4针对Vue3进行了全面升级,改进了模块化和严格模式,方便状态管理;而Vue Router也发布了Vue3兼容版本,引入了动态路由匹配的新特性。对于自定义指令,Vue3依然保留并强化了这一功能,让开发者可以定制更多复杂交互行为。
综上所述,了解Vue核心组件选项的同时,紧跟Vue框架及生态系统的最新发展动态,对于提升开发效率和应用质量至关重要。建议开发者关注官方文档更新、社区博客和技术论坛,以便及时获取Vue相关的一手资讯和最佳实践案例。
知识学习
实践的时候请根据实际情况谨慎操作。
随机学习一条linux命令:
pgrep process_name - 查找与进程名匹配的进程ID。
随便看看
拉到页底了吧,随便看看还有哪些文章你可能感兴趣。
数据库事务提交失败:数据同步中网络连接与资源管理问题分析 02-04 Kiali驱动的Kubernetes管理:云原生时代下的微服务环境可视化监控与操作实践 09-05 实用输入域表情符号选择器jQuery插件 01-06 Kubernetes (k8s) Namespace 中资源配额管理与CPU、内存优化配置实践 12-27 [转载]【总结】AWS的(助理)架构师认证体系详解 11-29 黑色奶茶饮料公司响应式模板下载 11-07 大气后台网站会员html登录页面模板 08-25 [转载]JeeWx捷微3.3 版本发布—JAVA开源微信管家 08-22 传智书城html代码 08-22 本次刷新还10个文章未展示,点击 更多查看。
Linux系统服务启动失败的精准排查:systemctl状态检查、配置文件审查与日志分析,解决依赖服务及资源限制问题 06-29 [转载]opendaylight-O版本与openstack集成 06-08 响应式商务礼品设计制造类企业前端模板下载 05-27 渐变大气后台管理系统响应式网站模板 05-23 [转载]清华都老师介绍windows下的mpich的经验 04-09 响应式化妆美容香水类企业前端CMS模板下载 03-16 vue响应回车 02-27 Maven依赖管理中Artifact无源码问题:从仓库获取sources.jar的解决方案与IDEA设置 01-31 蓝色宽屏公有云云计算公司网站模板 01-24 [转载]java getvalueat_Java swing jdbc:设置背景颜色,获取素材方法,表格,图片等的切换【诗书画唱】... 01-18 灰色网上产品销售商店HTML5模板 01-03
时光飞逝
"流光容易把人抛,红了樱桃,绿了芭蕉。"