当前位置: 首页 > ds >正文

前端面试记录

 前言:面试题永远是刷不完的,即使刷了一大堆下次面试又忘记了,重要的是组织自己的语言,保持自信,不给自己制造面不过的心理负担,对刷过的题要有个大致印象,好在答题的时候能够多多少少说出点贴近的知识,不至于卡壳,即使错过这家还有下家。

解释下vue中选项式API与组合式API?

vue2的api风格为选项式api,代码配置均已预制,选择配置编写即可

vue3的api风格为组合式api,代码配置需手动引入、手动组合编码

怎么使用webpack减少打包体积?

1.先安装打包代码之后的体积分析工具(webpack-bundle-analyzer),分析下打包代码中谁占用的体积最大

2.通过CDN的方式引入体积较大的依赖包 

3.在webpack中的externals配置不需要打包的依赖

注:通过CDN引入的是静态资源,浏览器会进行缓存

uniapp怎么进行分包? 

场景:一般微信小程序之类对打包的代码体积都有一个大小限制比如2M,但是我们如果用uniapp去写微信小程序的话很容易就出现一个体积超过2M的限制,所以我们就需要进行一个对代码去进行一个分包打包

1.首先如果是微信小程序之类的需要在mainfest.json中的微信小程序配置开启分包

2.然后再在pages.json里面进行一些分包的配置,主要是subpackages,如分包的根路径root,分包页面pages等等,

此处有些注意事项比如有些页面如tabbar页面不能放在分包内

路由的两种模式? 

hash模式

特点:hash 变化不会触发页面请求,仅影响浏览器历史记录

操作方式:

手动修改 window.location.hash

使用 <a href="#/home"> 标签导航

浏览器前进/后退按钮 

优点:无需服务器配置,兼容性好

缺点:URL 中包含 #,美观性差,不利于 SEO

window.addEventListener('hashchange', () => {const hash = window.location.hash;renderComponentBasedOnHash(hash);
});

history模式

特点:需后端支持(如 Nginx、Koa 中间件),将所有路径重定向到入口文件(如 index.html),避免直接访问或者刷新页面时子路径时返回 404,直接访问子路径或者在子路径刷新页面会去对应的服务器地址寻找与路由对应的文件,找不到就报404了,而默认情况下或主页面下路径都是192.168.1.1/index.html,刷新页面也没事毕竟是真有这个页面,如果切换了路由就变成了92.168.1.1/routerName,而服务器没有就报错了

操作方式:调用 history.pushState() 或 history.replaceState() 修改 URL

优点:URL 更简洁,利于 SEO。

缺点:需服务器配合,兼容性稍差(仅支持 IE10+)

window.addEventListener('popstate', () => {const path = window.location.pathname;renderComponentBasedOnPath(path);
});

路由守卫?

路由守卫一般有三种:全局路由守卫,独享路由守卫,组件的路由守卫

全局路由守卫

有前置、解析、后置三大守卫,执行顺序依次执行

前置:适用场景有权限校验等

router.beforeEach((to, from, next) => {next()
})

 解析:在所有异步组件和组件内守卫解析后触发,适合确保数据加载完成

router.beforeResolve((to, from, next) => {next()
})

 后置:导航完成后触发,适用场景有日志记录或页面标题更新

router.afterEach((to, from, next) => {})

局部路由守卫

主要写在路由配置里面用于鉴权

组件路由守卫 

beforeRouteEnter、 beforeRouteUpdate、 beforeRouteLeave 分别是组件路由进入、更新、离开时触发

作用域有哪些?

1.全局作用域

2.函数作用域:定义在函数内部,只能函数内部访问的作用域

3.块级作用域:“块”主要指的是“{}”,使用`let`和`const`声明的变量具有块级作用域

4.模块作用域:模块主要是指在js里面引入的某个js模块

http://www.xdnf.cn/news/14781.html

相关文章:

  • 代码随想录|单调栈|04接雨水
  • SpringBoot中使用表单数据有效性检验
  • UE5 闪烁的光斑
  • Lamp和友点CMS一键部署脚本(Rocky linux)
  • 75、单元测试-嵌套测试
  • 揭开 Git 裸仓库的神秘面纱:`git clone --mirror` 详解与使用指南
  • Windows电脑数据恢复终极指南:从原理到实战
  • 《去哪儿网Redis高并发实战:从问题定位到架构升级》
  • redis如何使用IO多路复用
  • 黑马python(十三)
  • Windows11 无法发现局域网内设备解决方法
  • SQL Server基础语句4:数据定义
  • 【C++开发】CMake构建工具
  • VBA基础之对象
  • CentOS 7.9 系统安装 Percona XtraBackup(含 xtrabackup 和 innobackupex 工具)的详细步骤
  • 深入剖析Flink内存管理:架构、调优与实战指南
  • 如何仅用AI开发完整的小程序<4>—小程序页面创建与删除
  • Kafka动态配置深度解析
  • Azure Devops
  • JMeter API 并发性能测试计划JMX文件解析
  • Elasticsearch、Faiss、Milvus在向量索引实现上的核心差
  • Redis 8.0向量库 vs 传统向量数据库:大模型知识库开发选型全指南
  • 华为公布《鸿蒙编程语言白皮书》V1.0 版:解读适用场景
  • HarmonyOS NEXT端侧工程调用云侧能力实现业务功能
  • 跨个体预训练与轻量化Transformer在手势识别中的应用:Bioformer
  • 什么是跨域问题?后端如何解决跨域问题?
  • rent8_wechat-最常用出租屋管理系统-微信小程序
  • 计算机网络第九章——数据链路层《流量控制和可靠传输》
  • Web攻防-XSS跨站Cookie盗取数据包提交网络钓鱼BEEF项目XSS平台危害利用
  • 【分布式理论】读确认数与写确认数:分布式一致性的核心概念