web学习笔记(五十九)

目录

1.style样式

[1.1作用域 scoped](#1.1作用域 scoped)

[1.2 less和 sass](#1.2 less和 sass)

[1.3 less和 sass两者的区别](#1.3 less和 sass两者的区别)

[2. 计算属性computed](#2. 计算属性computed)

[3. 响应式基础reactive()](#3. 响应式基础reactive())

[4. 什么是MVVM?](#4. 什么是MVVM?)


1.style样式

1.1作用域 scoped

scoped表示样式作用域,把内部的样式仅限于当前组件模板生效,其他的vue文件不生效,如果不加这个关键字默认是全局生效的。

javascript 复制代码
 <style  scoped>
.redu {
  position: absolute;
  top: -1vh;
  right: 0px;
}
.div3{
    width: 100%;
    position: absolute;
    top:3vh;
    left: 0px;
}
</style>

1.2 less和 sass

这两个都是css的辅助工具,使用这个辅助工具在style标签内部用嵌套的方式来编写样式。通过选择器的嵌套来表示标签之间的层级关系。在使用这个两个工具时都需要在终端使用npm i来下载对应的文件,需要注意的是:sass在下载时用的是npm i sass命令,但在style标签内部进行引用时使用的是 lang="scss",而less则是统一的。

css 复制代码
<template>
  <div class="less">
    <p @click="setCount">count: {{ count }}</p>
    <p @click="changeArr">{{ arr }}</p>
    <p @click="changeLives">{{ lives }}</p>
    <div>
      <a href="#">百度一下</a>
    </div>
    <main>
      <div>123</div>
    </main>
  </div>
</template>
<style lang="scss" scoped>
$fontsize: 26px;
.less {
  width: 100vw;
  height: 100px;
  background-color: red;
  div {
    //.less div{}  表示.less后代的所以div的样式
    background-color: yellow;
  }
  > div {
    background-color: aqua;
    > a {
      //.less >div>a
      font-size: $fontsize;
    }
  }
  p {
    font-size: $fontsize;
  }
}
</style>

1.3 less和 sass两者的区别

  1. sass的功能比less强大,更像是一个独立的编程语言,我们之前学过的前端框架Bootstrap 4 就是基于 Sass 开发的。
  2. Less是基于JavaScript,是在客户端进行处理的;Sass是基于Ruby,是在服务器端进行处理的。
  3. 在定义变量时Less和Sass中的唯一区别就是Less用@,Sass用$。

2. 计算属性computed

计算属性特点:

  • 需要根据某一个或多个响应式数据的变化,计算得出一个新的结果(可以是样式对象,也可以是一个值),供组件模板使用;

  • 计算属性必须返回一个结果;

  • 计算属性会自动监测到函数内部响应式数据的变化,根据新的响应数据,重新计算结果。

  • computed内部如果存在多个响应式数据,任何一个发生变化,计算属性仍然会重新计算。

    javascript 复制代码
    <template>
        <div>
          <button @click="isshow = true">显示</button>
          <div :class="{ test: true, active: isshow }" :style="newStyle">测试div</div>
          <div @click="isshow = false" v-show="isshow" class="fixed"></div>
        </div>
      </template>
      
      <style lang="less" scoped>
      .active {
        font-size: 30px;
        color: blue !important;
      }
      .test {
        width: 100vw;
        height: 200px;
        background-color: red;
        color: yellow;
      }
      .fixed {
        position: fixed;
        width: 100vw;
        height: 100vh;
        background-color: rgba(100, 100, 190, 0.5);
        left: 0;
        top: 0;
      }
      </style>
      <script>
      import { ref, computed } from "vue";
      export default {
        setup() {
          const isshow = ref(false);
          const newStyle = computed(() => {
            if (isshow.value) {
              return {
                fontSize: "40px",
                color: "blue",
                textAlgin: "center"
              };
            } else {
              return {
                fontSize: "16px",
                color: "yellow",
                textAlgin: "left"
              };
            }
          });
          return {
            isshow,
            newStyle
          };
        }
      };
      </script>
      

3. 响应式基础reactive()

reactive:组合式API,只能声明引用类型数据。数组和对象,不太适用于请求,请求推荐使用ref,通过修改ref.value来修改内部的值。

Proxy 代理对象类型,通过它实现深度响应式

javascript 复制代码
<script setup>
import { ref, reactive } from "vue";
import http from "@/utlis/http";
const count = ref(0);
const setCount = () => {
  count.value++;
};
// reactive:组合式API,只能声明引用类型数据。数组和对象,不太适用于请求,请求推荐使用ref,通过修改ref.value来修改内部的值。
const arr = reactive([1, 2, 3, 4, [100, 200]]); //元素增删改都具备响应式。
console.log(arr); //Proxy 代理对象类型,通过它实现深度响应式

// const arr = reactive([1, 2, 3, 4, [100, 200]]);
const changeArr = () => {
  arr[0] = 100;
  // arr.push(100);
  arr[4][1] = 300;
};
// let lives = reactive([]);
let lives = reactive({list:[]});
const changeLives = () => {
      lives.list[0].roomName = "测试";
};
const {
  data: { list }
} = await http("/hgapi/live/cate/newRecList?offset=0&cate2=wzry&limit=5");
// console.log(list);
lives.list = list;
console.log(lives); //此时lives是普通数组,不是Proxy
</script>

4. 什么是MVVM?

MVVM是model-view-viewModel的简写, 它是一种开发模式, 它实现了视图和数据逻辑之间的分离, model模型指的是后端传递的数据, view视图指的是所看到的页面, viewModel是连接视图view和模型model的桥梁, 从而实现模型model到视图view的转化 和 视图view到模型model的转化, 也就是我们所说的双向数据绑定, 使用MVVM模式实现的前端框架有 vue 和 react。

相关推荐
用户84298142418102 分钟前
JS代码压缩实测:可减小体积、提高执行效率!
前端·javascript·后端
snow@li5 分钟前
Vue Axios封装与SpringBoot Payload封装全景关联分析(前后端数据交互底层闭环)
前端·vue.js·spring boot
我是苏苏8 分钟前
WPF开发01:基础控件及常用模板篇
开发语言·c#·html·wpf
Csvn8 分钟前
🐛 React StrictMode 下 useEffect 执行两次:不是 Bug,是特性
前端
wuyk5558 分钟前
89.嵌入式内存管理的“稳定利器”:内存池原理与C语言实现
c语言·开发语言·stm32·单片机·嵌入式硬件
05664615 分钟前
agent学习Day23——文件上传与 Embedding 语义检索
python·学习·embedding
小白说大模型15 分钟前
【MYSQL】MYSQL学习的一大重点:索引(下)- B+树
b树·学习·mysql
却道天凉_好个秋20 分钟前
音视频学习(一百零一):IR-Cut
学习·音视频·ir-cut
用户831348593069821 分钟前
Vue3+Cesium实现阴天乌云+下雨天气特效
vue.js·webgl·cesium
森诺Alyson22 分钟前
前沿技术借鉴研讨-2026.8.6(影响中国育龄妇女生育偏好的因素/分孕周血压与不良妊娠结局的风险)
论文阅读·经验分享·学习·论文笔记