0
点赞
收藏
分享

微信扫一扫

Qt下使用OpenCV截取图像并在QtableWidget表格上显示

绣文字 2024-04-27 阅读 14

一、css

1.css中的样式优先级顺序

!important > 内联样式 > ID 选择器 > 类选择器 = 属性选择器 = 伪类选择器 > 标签选择器 = 伪元素选择器 > 通配选择器

(内联样式) > (内部样式) > (外部样式)

2.如何使一个盒子水平垂直居中?

(1)flex布局:

display: flex;
align-items: center;
justify-content: center;

(2)position定位:

父元素:绝对定位

子元素:相对定位,会将元素都转为行内块

调整子元素的位置的方法:

子元素left:50%;top:50%,
   无需宽高transform:translate(-50%,-50%)
   需要宽高,margin-left/margin-top子元素宽高的一半
子元素left:0;top:0;right:0;bottom:0
   需要宽高,margin:0,auto;

(3)grid布局:

display:grid;
place-item:center;

3.CSS中有哪些隐藏页面元素的方法?

(1)利用display:none来实现

(2)利用visibility:hidden隐藏元素

(3)利用opacity:0 

二、js篇

1.数组中foreach和map的区别

(1)相同点

  • 都是循环遍历数组中的每一项。
  • 每次执行匿名函数都支持三个参数,参数分别为item(当前每一项),index(索引值),arr(原数组)。
  • 匿名函数中的this都是指向window。
  • 只能遍历数组。

(2)不同点

  • map()会分配内存空间存储新数组并返回,forEach()不会返回数据。
  • forEach()允许callback更改原始数组的元素,map()返回新的数组,map() 不会对空数组进行检测。

2.数组中常用的方法有哪些

(1)Array.push(),向数组的末尾添加一个或多个元素,并返回新的数组长度。原数组改变。

(2)Array.pop(),删除并返回数组的最后一个元素,若该数组为空,则返回undefined。原数组改变。

(3)Array.unshift(),向数组的开头添加一个或多个元素,并返回新的数组长度。原数组改变。

(4)Array.shift(),删除数组的第一项,并返回第一个元素的值。若该数组为空,则返回undefined。原数组改变。

(5)Array.join(),将数组的每一项用指定字符连接形成一个字符串。默认连接字符为 “,” 逗号。

3.如何获取数组中的最后一个元素

(1)pop()方法:pop()方法,删除数组最后一个元素,并返回该元素,所以利用这个方法可以取到数组的最后一个;

(2)length方法:

let arr=["1","2","3"];
console.log(  arr[ arr.length-1 ]  );    // "3"

(3)slice方法:在数组上使用slice(-1)就可以获取数组的最后一个元素了。(-1 指最后一个元素,-2 指倒数第二个元素)

let arr=["1","2","3"];
console.log(  arr.slice(-1)   );     //  ["3"]

4.let和const的区别

(1)const 用于声明一个常量,即不可改变的变量。这意味着你不能再次对常量进行赋值,否则会抛出一个错误。但是,如果常量声明的是一个对象,你仍然可以修改对象的属性。

(2)let 用于声明一个变量,允许你对变量进行重新赋值。

5.cookie和localstore和sessionstore区别

(1)相同点:cookie、sessionStorage和localStorage都用在客户端存储数据,每一个都有自己的存储和到期限制。

(2)不同点:

  • 存储大小:cookie数据大小不能大于4K;localStorage和sessionStorage则可以达到5M
  • 有效时间:cookie在设置的有效期内一直有效;localStorage存储持久数据,只要不手动清除则一直存在;sessionStorage数据在当前浏览器关闭后就会被自动清除

三、vue 

1.vue2和vue3的区别

(1)双向数据绑定原理不同

  • Vue2 的双向数据绑定是利用ES5的一个APIObject.definePropert() 对数据进行劫持,结合发布订阅模式的方式来实现的。
  • Vue3 中使用ES6的Proxy API对数据代理。

(2)API 类型不同

  • Vue2 使用选项类型api,选项型api 在代码里分割了不同的属性:data,computed,method等。
  • Vue3 使用合成型api,新的合成型api 能让我们使用方法来分割,相比于旧的api 使用属性来分组,这样代码会更加简便和整洁。

(3)定义数据变量和方法不同

  • Vue2是把数据放到了data 中,在 Vue2中 定义数据变量是data(){},创建的方法要在method:{}
  • Vue3 就需要使用一个新的setup()方法,此方法在组件初始化构造的时候触发。使用以下三个步骤来建立反应性数据:1)从vue 引入 reactive;2)使用 reactive ()方法来声明数据为响应性数据;使用setup()方法来返回我们的响应性数据,从而template 可以获取这些响应性数据。

(4)生命周期钩子函数不同

  • Vue2 中的生命周期:beforeCreate 组件创建之前;created 组建创建之后;beforeMount 组件挂载到页面之前执行;Mounted 组件挂载到页面之后执行,beforeUpdate 组件更新之前;updated组件更新之后
  • Vue3 中的生命周期:setup 开始创建组件;onBeforeMount 组件挂载到页面之前执行;onMounted 组件挂载到页面之后执行;onBeforeUpdate 组件更新之前;onUpdated 组件更新之后;而且 Vue3 生命周期在调用前需要先进行引入。除了这些钩子函数外,Vue3 还增加了 onRenderTracked 和onRenderTriggered 函数。

2.v-if和v-show区别 

v-if控制Dom是否存在,v-show控制样式

3.组件及通信方式有哪些

(1)父子传递

  • 父组件通过props向下传递数据给子组件
  • 子组件通过 $emit 和父组件通信

(2)兄弟组件传值

  • EventBus进行兄弟组件的传值

(3) 祖孙组件传递

  • provide 与 inject进行祖孙组件间的传递

(4) vuex

4.路由的两种工作模式

hash 和 history区别

(1)hash

  • 地址中永远带有#号,不美观
  • 若以后将地址通过第三方手机app分享,若app效验严格,则地址会被标记为不合法
  • 兼容性较好

(2)history模式

  • 地址干净美观
  • 兼容性和hash模式相比略差
  • 应用部署上线时需要后端人员支持,解决刷新页面服务端404的问题

5.watch和computed区别 

(1)是否有缓存功能

  • computed是有缓存的,只有它依赖的属性值改变的时候,它才会进行计算。
  • watch是没有缓存功能的,只要监听的数据变化了,它就会触发相应的操作。

(2)是否支持异步

  • computed是不支持异步的,当computed内有异步操作的时候,它是监听不到数据变化的。
  • watch是支持异步操作的,适合监听路由和设置计时器等。

6.vue3中的ref和reactive的区别 

(1)数据类型不同:ref用于包装JavaScript基本类型的数据(如字符串、数字、布尔值等),而reactive可以用于包装JavaScript对象和数组等复杂类型的数据。

(2)使用方式不同:ref需要通过在模板中使用ref指令以及在JavaScript代码中使用ref函数进行创建和使用,而reactive则需要通过调用Vue.js提供的reactive函数进行包装和创建。

(3)访问方式不同:对于通过ref函数创建的响应式数据,我们可以通过.value属性来访问其实际值;而对于通过reactive函数创建的响应式对象,我们可以直接访问其属性或调用其方法。

举报

相关推荐

0 条评论