web学习笔记(五十七)

目录

1. 面试题总结 

1.1 public和assets区别

1.2 vite的作用

1.3  vue单页面应用

1.4 组件分为两种类型:

1.5 App.vue文件

1.6 main.js

1.7 vue2中为什么不能直接监听到数组的改变?

2. .vue页面的组成

3. ref 响应式数据


1. 面试题总结 

1.1 public和assets区别

  1. 两者都是放静态文件的,只是放在public中的静态资源最终使用vite打包项目的时候是不会被vite处理的,里面放的什么文件,打包后还是什么文件,vite直接原样打包。 而assets中的静态文件是要经过vite编译压缩的,vite会对它内部的静态资源处理。
  2. 一般自己封装的css、js等静态资源文件放在assets中。第三方压缩过后的静态资源放在public中,比如:bootstrap.min.js、jQuery.min.js等,这些都压缩过了,无需再压缩。当然都放在assets中也可以,但不要都放在public中。

1.2 vite的作用

     因为vue是基于组件化模式开发的单页面应用,文件后缀以.vue结尾。浏览器并不能识别这种文件,浏览器只能加载.html .js .css文件。因此需要一个工具将.vue文件编译成浏览器能加载的.html .js .css文件,vite就是构建项目的编译工具。转换代码只是其中一个功能,还有以下功能:

  1. 压缩静态文件 :.js .css都会被vite压缩,减少项目代码体积,更轻量化,项目上线到服务器之后,由于代码体积小,前端加载速度更快:
  2. vite内置了测试服务器:提供了一个本地服务器,用来调试代码;实时编译代码;配置跨域

1.3  vue单页面应用

       因为vue设计是基于组件化开发的,这些组件通过不同的方式展示到index.html这唯一的一个页面中,从而完成项目布局,组件可以理解为代码片段,是一种封装的思想,将不同功能模块的代码封装到一个.vue文件中方,这个文件就称为组件。

1.4 组件分为两种类型:

  1.  路由组件:也叫页面组件,它是构成页面的重要组件,模拟多个.html页面之间的跳转就是靠这种组件,再搭配前端路由共同实现的;通过访问不同的前端路由地址,从而加载不同的页面。解决了传统的页面切换问题。
  2. 公共组件:主要是将不同页面需要重复使用的标签结构单独封装成一个.vue文件,放在components文件夹中,其他页面导入即可使用,实现组件重用;

1.5 App.vue文件

       它是项目的根页面,项目启动时,这个根页面中的标签内容就已经被加载到了index.html中了,这个文件主要负责加载其他的路由组件,他内部必选配置<RouterView />。所以模拟页面间的跳转,实际上就是在App.vue内部完成的。

1.6 main.js

       main.js项目的入口文件,项目启动时,vite就是从这个文件开始加载项目的,在该文件内部,初始化了App.vue根组件。

1.7 vue2中为什么不能直接监听到数组的改变?

          vue2采用的是 Object.defineProperty进行对对象劫持实现响应式,正常对象中的属性是有限的,所以可以使用 Object.defineProperty进行迭代劫持,但是对于数组来说,数组中的元素可能是无限的,如果 Object.defineProperty也对数组中的每个元素进行劫持会非常浪费性能,所以为了避免不必要的性能浪费,vue2没有对数组中的每一项进行数据劫持。而是通过重写了处理数组的七种方法(push(),pop(),shift(),unshift(),splice(),sort(),reverse())触发视图更新。

2. .vue页面的组成

.vue通常由三部分以下组成:

  1. <template></template> 是用来包裹标签结构的,而且template是必须要写的。vue中约定template内部有且只能有一个根标签。
  2. <style></style>在内部写组件样式,和css的语法规则一样。
  3. <script>export default {}</script>在内部写入js相关代码。
  4. export default {}表示导出一个配置对象,这个对象可以对当前组件实例进行配置。每一个.vue文件都对应一个vue实例对象。vue会产生这样一个对象,我们只需要配置该对象就好,vue会拿着这些配置初始化这个组件实例对象。
  5. 在花括号内要写入setup函数,setup函数是每个组件必须要有的函数,他是组件的入口函数,组件创建时,就是从setup函数开始初始化执行的。它内部可以声明组件数据和方法。                                                                
<template><div><h1>home</h1></div>
</template>
<style></style>
<script>
export default {setup() {}  
}
</script>

3. ref 响应式数据

想要实现页面数据的响应式就需要先从 Vue 模块中导入 ref 对象。

import { ref } from "vue";

在setup方法中声明响应式数据时需要按照以下格式进行编写。响应式数据,它的目的是减少程序员操作dom的过程,操作dom由vue底层高效的实现dom操作。vue会监听到数据变化,从而更新dom。

 let num = ref(1);
let src = ref("/src/assets/icons/1.jpg");

在setup里面在使用ref声明的响应式数据时需要写.value   ref声明的变量,只在<script>中赋值取值需要通过.value进行。<template>模板中统统不需要使用.value,直接变量名即可。

  const addNum = () => {num.value++;console.log(num);};const clickOne = () => {src.value = "/src/assets/icons/1.jpg";};const clickTwo = () => {src.value = "/src/assets/icons/2.jpg";};

 最后需要将所需变量和方法使用return返出来。

 return {num,src,addNum,clickOne,clickTwo,clickThree};

 这样在页面对应位置引入的数据就可以实现响应式的效果了。

<template><div class="about"><h2>插值表达式:{{ num }}</h2><button v-on:click="addNum">num++</button><img v-bind:src="src" alt="" /><button @click="clickOne">img1</button><button @click="clickTwo">img2</button><button @click="clickThree">img3</button></div>
</template>

还可以利用ref来 操作dom。通过ref属性,给目标dom绑定变量,这个dom对象就会保存到hTag上。

<template><div><h4 @click="test" ref="hTag">通过REF操作dom</h4>
</template>
<style>
</style>
<script>
import { ref } from "vue";
import useImage from "@/hooks/userimage";
export default {setup() {// 利用ref操作domconst hTag = ref(null);const test = () => {hTag.value.style.color = "blue";};return {hTag,test,};}
};
</script>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/14353.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Web3革命:探索科技与物联网的无限可能

引言 Web3时代正在悄然而至&#xff0c;带来了对互联网的彻底颠覆和改变。作为互联网的下一代&#xff0c;Web3不仅是技术革新的延续&#xff0c;更是对传统互联网模式的重新构想。在这个新时代&#xff0c;科技与物联网的结合将迎来无限的可能性&#xff0c;将探索到一片全新…

iOS系统故障怎么办?这三种苹果手机系统修复方法你一定要知道

随着苹果手机使用时间越长&#xff0c;苹果手机有时也会出现系统问题&#xff0c;如卡顿、崩溃、无法启动等。这些问题不仅影响用户的使用体验&#xff0c;还可能导致数据丢失。因此&#xff0c;掌握苹果手机系统修复方法显得尤为重要。本文将详细介绍苹果手机系统修复的常见方…

Leetcode 3153. Sum of Digit Differences of All Pairs

Leetcode 3153. Sum of Digit Differences of All Pairs 1. 解题思路2. 代码实现 题目链接&#xff1a;3153. Sum of Digit Differences of All Pairs 1. 解题思路 这一题的话只需要统计一下每一个位上0-9各自出现了多少次即可。 然后&#xff0c;对于每一位&#xff0c;答…

数仓领域,Serving 是什么概念?

在数据仓库&#xff08;Data Warehouse&#xff09;和更广泛的数据工程领域中&#xff0c;“Serving”通常指的是将处理和优化后的数据提供给最终用户或应用程序的过程。这包括数据的查询、检索、展示等操作&#xff0c;使得数据能够在决策支持、报告、分析、或机器学习等应用中…

大模型之Ollama:在本地机器上释放大型语言模型的强大功能

LlaMA 3 系列博客 基于 LlaMA 3 LangGraph 在windows本地部署大模型 &#xff08;一&#xff09; 基于 LlaMA 3 LangGraph 在windows本地部署大模型 &#xff08;二&#xff09; 基于 LlaMA 3 LangGraph 在windows本地部署大模型 &#xff08;三&#xff09; 基于 LlaMA…

实战Java虚拟机-实战篇

一、内存调优 1.内存溢出和内存泄漏 内存泄漏&#xff08;memory leak&#xff09;&#xff1a;在Java中如果不再使用一个对象&#xff0c;但是该对象依然在GC ROOT的引用链上&#xff0c;这个对象就不会被垃圾回收器回收&#xff0c;这种情况就称之为内存泄漏。内存泄漏绝大…

一番赏小程序开发,为玩家带来线上抽赏魅力

随着人们对娱乐消费的增加&#xff0c;以及二次元文化的快速发展&#xff0c;以动漫IP为主的一番赏受到了越来越多的年轻人关注&#xff0c;一番赏市场迎来了黄金发展期&#xff01; 一番赏的运营模式是以“限量”为主&#xff0c;不管什么商品数量都是有限的&#xff0c;因此…

微软刚发布的Copilot+PC为什么让Intel和AMD尴尬?2024 AI PC元年——产业布局及前景展望

美国东部时间5月20日在微软位于华盛顿的新园区举行的发布会上&#xff0c;宣布将旗下AI助手Copilot全面融入Windows系统&#xff0c;能够在不调用云数据中心的情况下处理更多人工智能任务。 “将世界作为一个提示词就从Windows系统开始”。微软的新PC将是“CopilotPC”&#xf…

[Algorithm][回溯][记忆化搜索][最长递增子序列][猜数字大小Ⅱ][矩阵中的最长递增路径]详细讲解

目录 1.最长递增子序列1.题目链接2.算法原理详解3.代码实现 2.猜数字大小 II1.题目链接2.算法原理详解3.代码实现 3.矩阵中的最长递增路径1.题目链接2.算法原理详解3.代码实现 1.最长递增子序列 1.题目链接 最长递增子序列 2.算法原理详解 题目解析&#xff1a;从每个位置&am…

内部类知识点

什么是内部类&#xff1f; 内部类何时出现&#xff1f;B类是A类的一部分&#xff0c;且B单独存在无意义 内部类分类 成员内部类&#xff1a; 当内部类被private修饰后&#xff0c;不能用方法2 调用外部类成员变量 内部类里面有隐藏的outer this来记录 静态内部类 创建对象&…

警惕Mallox勒索病毒的最新变种hmallox,您需要知道的预防和恢复方法。

引言 &#xff1a; 在数字化时代&#xff0c;数据已成为企业和个人最宝贵的资产之一。然而&#xff0c;随着技术的不断发展&#xff0c;网络威胁也日益猖獗&#xff0c;其中.hmallox勒索病毒以其独特的加密手段和狡猾的传播方式&#xff0c;成为了网络安全领域的一颗“隐形炸弹…

水电集中抄表是什么?

1.定义分析&#xff1a;水电集中抄表 水电集中抄表是一种现代化能源管理体系方法&#xff0c;它利用先进的信息科技&#xff0c;如物联网技术、云计算等&#xff0c;完成对水电表数据的远程智能采集与处理。这种方法改变了传统的人工上门服务抄表方式&#xff0c;提高了效率&a…

Biome-BGC生态系统模型与Python融合技术实践应用

Biome-BGC是利用站点描述数据、气象数据和植被生理生态参数&#xff0c;模拟日尺度碳、水和氮通量的有效模型&#xff0c;其研究的空间尺度可以从点尺度扩展到陆地生态系统。 在Biome-BGC模型中&#xff0c;对于碳的生物量积累&#xff0c;采用光合酶促反应机理模型计算出每天…

ECharts实现地图飞线

echarts版本&#xff1a;https://echarts.apache.org/zh/changelog.html v5.x.x版本&#xff1a;不提供china.js和china.json文件 v4.x.x版本&#xff1a;使用npm安装echarts&#xff0c;默认包含china.js和china.json文件 目录 一、Html工程 二、vue工程 三、vue工程 四、矢…

c/c++ 编译过程

C的编译过程通常可以分为四个阶段&#xff1a;预处理、编译、汇编和链接。下面是这四个阶段的详细说明&#xff1a; 预处理&#xff08;Preprocessing&#xff09;&#xff1a;在这个阶段&#xff0c;预处理器&#xff08;cpp&#xff09;会处理源代码文件中的预处理指令&#…

【科普知识】伺服电机中的内置制动器

在工业自动化和机器人技术快速发展的今天&#xff0c;伺服电机作为核心驱动元件&#xff0c;其性能与功能直接影响整个系统的运行效率与稳定性。 近年来&#xff0c;一体化伺服电机技术不断融合创新&#xff0c;并逐步加入了许多新的硬件和软件的功能&#xff0c;为工业自动化领…

【施磊】C++语言基础提高:深入学习C++语言先要练好的内功

课程总目录 文章目录 一、进程的虚拟地址空间内存划分和布局二、函数的调用堆栈详细过程三、程序编译链接原理1. 编译过程2. 链接过程 一、进程的虚拟地址空间内存划分和布局 任何的编程语言 → \to → 产生两种东西&#xff1a;指令和数据 编译链接完成之后会产生一个可执行…

python毕设项目选题汇总(全)

各位计算机方面的毕业生们&#xff0c;是不是在头疼毕业论文写什么呢&#xff0c;我这给大家提供点思路&#xff1a; 网站系统类 《基于python的招聘数据爬虫设计与实现》 《基于python和Flask的图书管理系统》 《基于照片分享的旅游景点推荐系统》 《基于djangoxadmin的学生信…

LeetCode hot100-47-N

105. 从前序与中序遍历序列构造二叉树给定两个整数数组 preorder 和 inorder &#xff0c;其中 preorder 是二叉树的先序遍历&#xff0c; inorder 是同一棵树的中序遍历&#xff0c;请构造二叉树并返回其根节点。这题放选择题里还能选出来&#xff0c;前序中序一起确定了一颗什…