Web前端开发之VUE08——动态class的优化、props验证

本文探讨了如何在Vue中通过data对象动态管理class属性,解决长属性问题,并介绍如何结合使用类名和对象来控制样式。同时,关注了props验证在组件通信中的应用,确保组件间数据的有效传递。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

动态class的优化:

Class值与Class对象同时使用:

props验证:


动态class的优化:

在往期的class中我们会使用对象键值对直接输入在标签上,这样会使属性过长。

使用data的对象传入是一个不错的解决办法。

示例代码:

style操作过程中发现animation不能被编译,貌似是因为vue给class动态绑定了哈希,但是style动态没有绑定哈希导致的。

 下面看一个示例:

<template>
  <div>
    <div class="text" :class="textAnimStyle">我是一段文字,我使用class</div>
    <button @click="animateToggle('rotate360')">旋转</button>
    <button @click="animateToggle('scaleIt')">放大</button>
    <div class="text" :style="textStyle">我是另一段文字,我使用style</div>

  </div>

</template>

<script>
export default {
  name: "MyApp",
  data() {
    return {
      textAnimStyle: {
        rotate360:false,
        scaleIt:false
      },
      textStyle:{
        'font-size':20+'px',
        //下面的代码不生效
        'animation':'rotate360 2s alternate infinite',
      }
    }
  },
  methods:{
    animateToggle(animateType){
      for (const ele in this.textAnimStyle) {
        this.textAnimStyle[ele]=false
      }
      for (const ele in this.textAnimStyle) {
        if (ele===animateType){
          this.textAnimStyle[ele]=true
        }
      }
    },
  }
}
</script>

<style scoped>
.text {
  display: inline-block;
  transform-origin: center;
}
.rotate360{
  animation: rotate360 2s alternate infinite;
}
.scaleIt{
  animation: scaleIt 2s alternate infinite;
}

@keyframes rotate360 {
  from {
  }
  to {
    transform: rotateZ(360deg);
  }
}

@keyframes scaleIt {
  from {
  }
  to {
    transform: scale(1.5);
  }
}

</style>

Class值与Class对象同时使用:

:class="[navElemClass,{isSelected:item.isSelected}]"

props验证:

 

 

 

### 创建和配置 Vue 前端项目 #### 一、Vue 环境准备 在创建 Vue 项目之前,需要先确保开发环境中已经安装 Node.js 和 npm/yarn 工具。可以通过以下命令验证是否已正确安装: ```bash node -v && npm -v ``` 如果没有安装,则需前往官方地址下载并完成安装[^1]。 #### 二、初始化 Vue 项目 通过 `@vue/cli` 提供的图形化界面工具 `vue ui` 或者命令行方式来快速搭建 Vue 项目。 ##### 方法一:使用 `vue create` 初始化项目 执行以下命令可以启动交互式的项目创建流程: ```bash vue create my-vue-app ``` 在此过程中可以选择预设模板或者手动选择特性(如 Babel、Router、Vuex 等),完成后会自动生成基础的 Vue 项目结构[^2]。 ##### 方法二:利用 `vue ui` 图形化界面 输入命令打开 GUI 页面进行更直观的操作: ```bash vue ui ``` 这将自动开启本地服务,默认访问地址为 http://localhost:8000 。按照界面上指引逐步设置所需插件与选项即可完成新项目的建立。 #### 三、运行及调试项目 当项目成功构建之后,在终端切换至该项目根目录下,并执行下列指令加载依赖包以及启动开发服务器: ```bash cd my-vue-app npm install # 如果采用yarn则替换为此处相应语句 yarn add . npm run serve # 开发环境下查看效果 ``` 此时应该能看到类似这样的输出信息表明应用正在监听某个端口上等待请求连接[^2]: ``` App running at: Local: http://localhost:8080/ Network: use --host to expose ``` #### 四、理解基本目录架构 一个典型的 Vue CLI 构建出来的应用程序通常具有如下所示的主要组成部分: - **src/** : 存放源码的地方。 - main.js —— 应用入口文件; - App.vue —— 根组件定义位置; - public/index.html :HTML模版文档 以及其他辅助性的资源比如静态图片等都放置于public路径之下以便被直接引用而无需经过webpack处理过程之中转环节。 #### 五、部署到生产环境 对于实际线上发布的场景来说还需要额外考虑性能优化等问题因此建议遵循下面几个步骤来进行最终版本打包工作: 1. 修改 package.json 中 scripts 字段下的 build 参数以适应特定需求; 2. 执行构建操作:`npm run build`; 3. 将 dist 文件夹内的内容上传至支持 HTML5 的 web server 上面去,例如 Nginx 可作为候选方案之一[^3]. --- ### 示例代码片段展示 以下是简单的 HelloWorld 组件实现例子说明如何扩展默认生成的应用程序功能部分: ```javascript <template> <div id="app"> <hello-world></hello-world> </div> </template> <script> export default { components:{ 'hello-world':{ props:{}, data(){return {} }, methods:{} render(h){ return h('h1',{class:'title'},['Hello World!']) }} } }; </script> <style scoped lang='scss'> .title{color:red;} </style> ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

言行物恒

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值