Vue(7)——工程化开发

ops/2024/11/14 11:52:15/

目录

工程化开发

组件化开发

普通组件的注册使用

局部注册

全局注册

组件三大组成部分说明 

template

style

script

组件通信 

父子关系

prpo

prpos校验

类型校验

其他校验 

prop与data、单向数据流 


工程化开发

工程化开发模式:基于构建工具的环境中开发Vue。

Vue CLI是官方提供的一个全局命令工具。可以快速创建一个开发Vue项目的标准化基础架子。

使用步骤:

  1. 全局安装:yarn global add @vue/cli 或 npm i @vue/cli -g
  2. 查看vue版本:vue --version
  3. 创建项目架子:vue create project-name(项目名)
  4. 启动项目:yarn server 或 npm run serve

其中创建架子时等待的时间比较久...。最后使用npm启动项目。 打开浏览器搜localhost:8080或127.0.0.1:8080。

如果为这个界面则表示启动成功。

通过脚手架创建的目录如下:

组件化开发

组件化开发:一个页面可以拆分一个个组件,每个组件有自己独立的结构,样式,行为。

好处是:便于维护,利于复用,提升开发效率。

组件分类:普通组件,根组件。

根组件:整个应用最上层的组件,包裹所有小组件。


App.vue文件(单文件组件)的三个组成部分:

经过修改

<template><div class="App"><div class="box" @click="fn"></div></div>
</template><script>
export default{methods:{fn(){alert('ok')}}
}
</script><style>
.App{width: 300px;height: 300px;background-color: pink;}.App .box{width: 100px;height: 100px;background-color: skyblue;}
</style>


普通组件的注册使用

局部注册

:只能在注册的组件内使用

  1. 创建.vue文件
  2. 在使用的组件内导入并注册 

 在src文件夹下创建components文件夹放入组件,组件命名需遵循大驼峰命名法,否则会报错。


全局注册

:所有组件内都能使用

  1. 创建.vue文件
  2. main.js中进行全局注册

还是在components文件夹下面创建vue文件:

然后再main.js中注册:

最后在其他vue文件中使用:

 

组件三大组成部分说明 

template

只能有一个根元素

style

全局样式(默认):会影响所有的组件,很容易造成多个组件之间的问题

局部样式:scoped下样式,只作用于当前组件

原理:

  1. 给当前组件模版的所有元素,都会被添加一个自定义属性data-v-hash值,区分不同组件
  2. css选择器后面,被自动处理,添加上的属性选择器

示例:

在修改后若样式消失,可以关闭页面重新打开。。

script

el根为实例独有,data是一个函数,其他配置项一致。

一个组件的data选项必须是一个函数。保证每个组件实例,维护独立的一份数据对象。每次创建新的组件实例,都会执行一次data函数,得到一个对象。

示例:

 

data函数执行了3次,每个组件实例,维护独立的对象。 

组件通信 

组件通信指组件之间的数据传递。组件的数据时独立的,无法直接访问其他组件的数据。

组件之间的关系:

  1. 父子关系
  2. 非父子关系

父子关系

  1. 父组件通过props将数据传递给子组件
  2. 子组件利用$emit通知父组件修改更新

prpo

定义:组件上注册的一些自定义属性

作用:向子组件传递任意数量、任意类型的数据


 父传子示例:

子传父示例:


prpos校验

作用: 为组件的prop指定验证要求,不符合要求,控制台就会有错误提示。

语法:

  1. 类型校验
  2. 非空校验
  3. 默认值
  4. 自定义校验
类型校验

props:{

  校验的属性名 : 类型    //Number  String Bollean

},

示例:传入一个String值,校验是否为Number 

其他校验 

为了要进行更细致的校验,可以将属性名写成一个更完整的对象

prop与data、单向数据流 

共同点:都可以给组件提供数据。

区别:

  1. data的数据是自己的,随便改
  2. prop的数据是外部的,不能直接改,要遵循单向数据流

示例1.由自己提供数据:

示例2.接收prop传过来的数据,不能直接改:

产生报错,原因是

尝试修改外部的数据。可以添加对应的函数:

报错消失,接下来添加对应的逻辑,遵循谁的数据谁负责原则:



http://www.ppmy.cn/ops/108939.html

相关文章

RocketMQ异步报错:No route info of this topic

在SpringBoot中发送RocketMQ异步消息的时候报错了&#xff0c;提示org.apache.rocketmq.client.exception.MQClientException: No route info of this topic, testTopic1 这里给出具体的解决方案 一、Broker模块不支持自动创建topic&#xff0c;并且topic没有被手动创建过 R…

mysql5.6根据经纬度查询距离二

在MySQL 5.6中&#xff0c;您可以使用Haversine公式来根据经纬度查询距离。以下是一个示例SQL查询&#xff0c;它计算出所有点与给定点(经度lon和纬度lat)的距离&#xff0c;并按距离排序&#xff1a; SELECT id, (2 * 6378.137 * ASIN(SQRT(POW( SIN( PI( ) * ( $lng- long ) …

【机器人工具箱Robotics Toolbox开发笔记(五)】 机器人位姿变换开发实例

假设空间中的一个坐标系{A},表示为 如果将这个坐标系沿着参考坐标系的Y轴移动10个单位,然后再沿着Z轴移动5个单位得到坐标系{B},求坐标系{B}的表示。 MATLAB代码: A=[0.527,-0.574,628,5;0.369,0.819,0.439,3:-0.766,0,0,643.8:0,0,0,1]T=trans1(0,10,5)B=T*A 运行结果:…

2024数学建模国赛B题代码

B题已经完成模型代码&#xff01;详情查看文末名片 问题1&#xff1a;可以考虑使用统计学中的“样本量估算”方法&#xff0c;使用二项分布或正态近似来决定最少的样本量&#xff0c;并通过假设检验&#xff08;如单侧检验&#xff09;在95%和90%置信度下进行判断。 import n…

LLM的指令微调新发现:不掩蔽指令

最近看到了一篇挺有意思的论文&#xff0c;叫《指令掩蔽下的指令调整》&#xff08;Instruction Tuning With Loss Over Instructions&#xff0c;https://arxiv.org/abs/2405.14394) 。 这篇论文里&#xff0c;研究者们对一个在指令微调中大家普遍接受的做法提出了疑问&#…

Qt-QWidget的toolTip属性(19)

目录 描述 相关API 使用 描述 就是一个提示窗口 相关API 也有获取的&#xff0c;但是我们通常只会使用设置的接口&#xff0c;获取这个接口很少使用&#xff0c;毕竟提示都是设置进去的 单位是毫秒 使用 我们新建一个项目&#xff0c;当然我们也可以直接在Qt Designer里…

\uline命令中包含\cite

\uline命令不支持大括号的参数命令的解决办法 \uline命令中包含\cite会报以下错误&#xff1a; Extra }, or forgotten \endgroup. Extra }, or forgotten \endgroup. Missing } inserted. 解决办法&#xff1a; 1、通过 \mbox{} 将 \cite 命令封装 \uline{This is an und…

单例模式对比:静态内部类 vs. 饿汉式

单例模式是一种设计模式&#xff0c;旨在确保一个类只有一个实例&#xff0c;并提供全局访问点。Java 中有多种实现单例模式的方式&#xff0c;其中静态内部类实现和饿汉式实现是两种常见的方法。本文将对这两种单例模式进行详细对比&#xff0c;说明它们在延迟加载方面的区别&…