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。

相关推荐
MAGICIAN...11 分钟前
【java-软件设计原则】
java·开发语言
Ticnix12 分钟前
ECharts初始化、销毁、resize 适配组件封装(含完整封装代码)
前端·echarts
纯爱掌门人15 分钟前
终焉轮回里,藏着 AI 与人类的答案
前端·人工智能·aigc
twl19 分钟前
OpenClaw 深度技术解析
前端
gpfyyds66619 分钟前
Python代码练习
开发语言·python
崔庆才丨静觅22 分钟前
比官方便宜一半以上!Grok API 申请及使用
前端
星光不问赶路人31 分钟前
vue3使用jsx语法详解
前端·vue.js
天蓝色的鱼鱼34 分钟前
shadcn/ui,给你一个真正可控的UI组件库
前端
r i c k34 分钟前
数据库系统学习笔记
数据库·笔记·学习
盐真卿35 分钟前
python第八部分:高级特性(二)
java·开发语言