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

2024《》

vue-cli到哪做了那些事

vue-cli是vue.js的脚手架,用于自动生成vue.js+webpack的项目模板,快速搭建Vue.js项目。

vue cli内置了webpack的一些功能,这些是用webpack打包时需要我们自己配置的,例如:

1.ES6代码转换成ES5代码

2. scss/sass/less/stylus转css

3. .vue文件转换成js文件

4. 使用 jpg、png,font等资源文件

5. 自动添加css各浏览器产商的前缀

6. 代码热更新

7. 资源预加载

8. 每次构建代码清除之前生成的代码

浏览器存储的方式有哪些

 

浏览器 cookie 和 session 的认识 

介绍下304过程 

HTTP 状态码中的 304 状态码表示“未修改”(Not Modified),通常在浏览器向服务器请求资源时使用。下面是关于 304 状态码的简要介绍:

 

304 状态码的过程:

  1. 浏览器缓存检查

    • 当浏览器向服务器请求资源时,会携带上次请求该资源时服务器返回的缓存标识(如 ETag 或 Last-Modified)。
  2. 服务器检查资源状态

    • 服务器接收到请求后,会检查请求中携带的缓存标识与服务器当前资源的标识是否一致。
  3. 资源未修改

    • 如果服务器检测到请求的资源自上次请求以来未发生变化,即资源未被修改,则服务器会返回 304 状态码给浏览器。
  4. 浏览器处理

    • 浏览器收到 304 状态码后,表示本地缓存的资源仍然有效,浏览器会从本地缓存加载资源,而不是重新请求服务器获取资源。

304 状态码的优势:

  • 减少网络流量:通过避免重复传输未更改的资源,可以减少网络流量和加快页面加载速度。
  • 节省服务器资源:减少了服务器处理相同请求的频率,节省了服务器资源。

网页颜色变灰 

// 获取 body 元素
var body = document.getElementsByTagName("body")[0];// 修改背景色为灰色
body.style.backgroundColor = "gray";// 修改文本颜色为灰色
body.style.color = "gray";

 

nginx处理跨域-反向代理(原理) 

原理:

  1. 配置 Nginx

    • 在 Nginx 的配置文件中,可以使用 add_header 指令来添加 CORS 相关的响应头部。
    • 通常需要在目标服务器的代理位置或者对应的 location 块中进行配置。
  2. 添加响应头

    • 使用 add_header 指令,可以向响应头部添加 CORS 相关的信息,如允许的 Origin、允许的方法(GET、POST 等)、允许的头部字段等。
  3. 示例配置

    • 下面是一个简单的示例配置,用于在 Nginx 中处理跨域请求:

  4. location /api/ {add_header 'Access-Control-Allow-Origin' '*';add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS';add_header 'Access-Control-Allow-Headers' 'DNT,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Range';add_header 'Access-Control-Expose-Headers' 'Content-Length,Content-Range';if ($request_method = 'OPTIONS') {add_header 'Access-Control-Max-Age' 1728000;add_header 'Content-Type' 'text/plain; charset=utf-8';add_header 'Content-Length' 0;return 204;}
    }
    

    4.重启 Nginx

    • 保存配置文件后,需要重启 Nginx 服务使配置生效。

 

性能优化-如何评价页面性能好坏,用什么指标 

  1. 加载时间

    • 页面加载时间(Page Load Time):从用户发起请求到页面完全加载显示所需的时间。
    • 首次内容渲染时间(First Contentful Paint):页面上首次有内容渲染的时间,用户能够看到页面内容的时间。
    • DOM 加载时间(DOM Load Time):DOM 树加载完成的时间,影响页面的可交互性。
  2. 资源加载

    • 资源加载时间:各种资源(如图片、CSS、JavaScript 文件)加载完成的时间。
    • 缓存利用率:浏览器是否有效利用缓存,减少不必要的资源请求。
  3. 交互性能

    • 响应时间(Response Time):用户与页面交互后,页面作出响应的时间。
    • 滚动性能(Scroll Performance):页面滚动时的流畅度和响应速度。
  4. 渲染性能

    • 重绘与重排(Repaint & Reflow):页面的布局和样式改变时,浏览器重新绘制和重排元素的次数。
    • 帧率(Frame Rate):页面的动画和交互效果是否达到流畅的 60 FPS。

 

优化手段 从几秒到几毫秒 

  1. 减少 HTTP 请求

    • 合并 CSS 和 JavaScript 文件,减少文件数量和大小。
    • 使用 CSS 精灵将多个小图片合并为一个大图,减少图片请求次数。
  2. 使用 CDN 加速

    • 将静态资源部署到内容分发网络(CDN),加速资源的加载速度。
  3. 压缩资源

    • 压缩 HTML、CSS、JavaScript 代码,减小文件大小。
    • 使用图片压缩工具对图片进行压缩,减小图片文件大小。 
  4. 延迟加载

    • 对于非关键资源,可以延迟加载,等页面主要内容加载完毕后再加载其他资源。
  5. 使用缓存

    • 设置合适的缓存策略,让浏览器能够缓存页面资源,减少重复请求。
  6. 减少重排和重绘

    • 通过合并样式表、优化 DOM 结构等方式减少页面的重排和重绘操作。
  7. 使用 Web Workers
    • 将一些耗时的任务交给 Web Workers 处理,以减轻主线程的负担,提高页面响应速度。

过去遇到有挑战的事情,怎么解决的 

分析问题:

  1. 首先,我会深入了解问题的本质和背景,明确问题的范围和影响。这有助于我全面理解挑战,并为解决问题制定合适的方案做好准备。

  1. 持续学习:解决问题的过程也是一个学习的过程。无论问题的解决结果如何,我都会总结经验教训,明白成功的原因和失败的原因,以便将这些经验运用到未来的挑战中。

  2. 保持乐观:在面对挑战时,我会保持乐观的态度。我相信每个问题都有解决的方法,而挑战也是成长和进步的机会。

 

 xss攻击 怎么解决 

跨站脚本攻击(XSS)是一种常见的网络安全漏洞,攻击者通过在网页中注入恶意脚本,来获取用户信息或利用用户的权限进行攻击。以下是一些常见的方法来解决 XSS 攻击:

  1. 输入过滤和验证

    • 对用户输入的数据进行严格的过滤和验证,确保不含有恶意脚本。可以使用白名单机制,只允许特定类型的输入,过滤掉潜在的恶意代码。
  2. 转义输出

    • 在将用户输入的数据输出到网页上时,需要对其进行合适的转义处理,以防止其中的 HTML、JavaScript 或其他脚本代码得以执行。比如将 < 转义为 &lt;> 转义为 &gt; 等。

 

 CSRF避免方式:

添加验证码
使用token
服务端给用户生成一个token,加密后传递给用户

webpack如何实现代码分离 

1.入口起点:使用 entry 配置手动地分离代码。
2.防止重复:使用 CommonsChunkPlugin 去重和分离 chunk。
3.动态导入:通过模块的内联函数调用来分离代码。

常见的Webpack Loader? 如何实现一个Webpack Loader(NO) 

loader: 是一个导出为函数的javascript模块,根据rule匹配文件扩展名,处理文件的转换器。
file-loader:把文件输出到一个文件夹中,在代码中通过相对 URL 去引用输出的文件 (处理图片和字体)

url-loader: 与file-loader类似,区别是用户可以设置一个阈值,大于阈值会交给file-loader处理,小于阈值时返回文件base64 形式编码 (处理图片和字体)

babel-loader:把 ES6 转换成 ES5
sass-loader:将SCSS/SASS代码转换成CSS 

相关文章:

  • 论文研读_多目标部署优化:无人机在能源高效无线覆盖中的应用(ImMOGWO)精简版
  • 100个Linux操作命令和20个常用脚本
  • docker中的具名和匿名挂载
  • MySQL CTEs通用表表达式:进阶学习-递归查询
  • Qt将Unicode转换成UTF8中文
  • 哈希专题 - leetcode 1. 两数之和 - 简单难度
  • 代码随想录算法训练营day47|第九章 动态规划part09:198.打家劫舍、213.打家劫舍II、337.打家劫舍III
  • 掌握 Vue3、Vite 和 SCSS 实现一键换肤的魔法步骤
  • 基于redis实现用户登陆
  • 【Python爬虫实战】抓取省市级城市常务会议内容
  • 基于VUE3搭建项目步骤
  • Threejs之场景标注标签信息CSS2DRenderer
  • 数据库学习案例20240306-oracle数据库连接类故障trace
  • OpenGL实现礼物特效方案(直播)
  • Rust入门:Rust如何调用C静态库的函数
  • (三)从jvm层面了解线程的启动和停止
  • 《用数据讲故事》作者Cole N. Knaflic:消除一切无效的图表
  • 【MySQL经典案例分析】 Waiting for table metadata lock
  • Date型的使用
  • js对象的深浅拷贝
  • js中的正则表达式入门
  • Just for fun——迅速写完快速排序
  • Linux中的硬链接与软链接
  • Node项目之评分系统(二)- 数据库设计
  • PHP变量
  • Vue实战(四)登录/注册页的实现
  • 闭包,sync使用细节
  • 从零开始的无人驾驶 1
  • 排序算法学习笔记
  • 前端相关框架总和
  • 前端之React实战:创建跨平台的项目架构
  • 深度学习在携程攻略社区的应用
  • 携程小程序初体验
  • 原生JS动态加载JS、CSS文件及代码脚本
  • 追踪解析 FutureTask 源码
  • No resource identifier found for attribute,RxJava之zip操作符
  • hi-nginx-1.3.4编译安装
  • Python 之网络式编程
  • ​软考-高级-信息系统项目管理师教程 第四版【第19章-配置与变更管理-思维导图】​
  • #stm32整理(一)flash读写
  • $redis-setphp_redis Set命令,php操作Redis Set函数介绍
  • (LeetCode C++)盛最多水的容器
  • (第27天)Oracle 数据泵转换分区表
  • (附源码)计算机毕业设计大学生兼职系统
  • (理论篇)httpmoudle和httphandler一览
  • (每日持续更新)jdk api之FileFilter基础、应用、实战
  • (推荐)叮当——中文语音对话机器人
  • (一)基于IDEA的JAVA基础12
  • (转)linux自定义开机启动服务和chkconfig使用方法
  • (转载)VS2010/MFC编程入门之三十四(菜单:VS2010菜单资源详解)
  • (轉貼) 2008 Altera 亞洲創新大賽 台灣學生成果傲視全球 [照片花絮] (SOC) (News)
  • .net CHARTING图表控件下载地址
  • .Net Remoting(分离服务程序实现) - Part.3
  • .NET/C# 如何获取当前进程的 CPU 和内存占用?如何获取全局 CPU 和内存占用?
  • .Net6支持的操作系统版本(.net8已来,你还在用.netframework4.5吗)