前端防御性编程

一个页面在呈现给用户之前需要经过静态资源加载、后端接口请求和渲染这三个过程,我们要做的就是在各个过程中防御可能出现的异常情况,保持流畅的用户体验,同时还要应对来自外部的攻击。防网络目前主流的研发模式都是前后端分离,拿React举例来说functionApp(){const[data, setData] = useState(null); useEffect(()=>{ (asy...
摘要由CSDN通过智能技术生成

一个页面在呈现给用户之前需要经过静态资源加载、后端接口请求和渲染这三个过程,我们要做的就是在各个过程中防御可能出现的异常情况,保持流畅的用户体验,同时还要应对来自外部的攻击。

防网络

目前主流的研发模式都是前后端分离,拿React举例来说

functionApp(){const[data, setData] = useState(null); useEffect(()=>{ (async() => {constdata =awaitrequest(); setData(data); })(); });if(!data)returnnull;return(

Hello {data.name}
);}复制代码
网络较差数据返回慢,页面不渲染,一直展示空白页,体验很差,一般我们会加个过渡变成这样:

functionApp(){ … if (!data)return; …}复制代码

查看demo:CodeSandbox

这个能解决数据返回之前页面白屏的问题,但是忽略了静态资源加载的时长,这段时间页面还是处于白屏的状态,所以在加载静态资源之前也应该有个过渡效果,试着修改上面的例子:

首页 .loading {

  ...

}

复制代码

查看demo:CodeSandbox

先加载loading片段,再加载资源,看起来解决了整体的过渡问题,但是大家仔细观察会发现动画播放了一会又重新开始了,破碎感比较严重,原因相信大家也比较清楚,React重新渲染了loading的节点,所以在数据回来前,不应该让React接管页面,试着再次改造:

/* render.js /importReactfrom"react";importReactDOMfrom"react-dom";exportdefaultfunctionrender(Component, props){constrootElement =document.getElementById(“root”); ReactDOM.render(, rootElement);}/ index.js */import render from “./render”;import request from “./request”;import App from “./App”;(async () => { const data = await request(); render(App, { data });})();复制代码

查看demo:CodeSandbox

在页面内容呈现给用户之前,会一直保持loading动画的效果,避免因网络原因造成用户体验的中断。

防接口

静态资源加载完成之后,我们开始和后端进行通信获取页面数据,首先我们需要处理以下几种可能异常的情况。

超时

一个网页从访问到呈现出来,用户能容忍的等待时间大概是35s,在除去静态资源加载的时间大概12s左右,接口请求应该在3s内返回结果。

如果碰到用户网络较差,而我们又没有设置接口超时,页面会一

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在准备前端找工作时,以下是一些适合练习的知识点: 1. HTML和CSS:掌握HTML和CSS的基本语法和常用标签,了解盒模型、选择器、布局等概念,熟悉响应式设计和常见的CSS框架(如Bootstrap)。 2. JavaScript:掌握JavaScript的基本语法、数据类型、DOM操作、事件处理、异步编程(如Promise和async/await)、面向对象编程等概念,熟悉ES6+的新特性。 3. 前端框架:熟悉至少一种主流前端框架,如Vue.js、React或Angular,理解其核心概念、组件化开发和路由管理,能够使用框架进行项目开发。 4. 网络请求:了解HTTP协议、RESTful API设计原则,能够使用fetch或axios等工具发送网络请求,并处理响应数据。 5. 前端工具链:了解Node.js和npm的基本使用,掌握常用的构建工具(如Webpack或Vite)、打包工具(如Babel)、版本控制工具(如Git)等,能够配置和使用这些工具进行项目开发和部署。 6. 跨平台开发:熟悉移动端开发框架(如React Native或Flutter)或桌面应用开发框架(如Electron),能够开发跨平台的应用程序。 7. 浏览器兼容性:了解不同浏览器的特性和兼容性问题,能够解决常见的浏览器兼容性Bug。 8. 性能优化:了解前端性能优化的基本原则和常用技巧,包括减少HTTP请求数量、压缩和缓存静态资源、懒加载、代码分割等。 9. 调试和测试:熟悉浏览器开发者工具的使用,能够进行调试和排查代码问题,了解单元测试和集成测试的基本概念,能够编写简单的测试用例。 10. 前端安全:了解常见的前端安全漏洞(如XSS和CSRF),并了解相应的防御措施。 以上是一些前端找工作时适合练习的知识点,当然还可以根据具体职位要求和公司需求进行针对性的学习和练习。祝你找到理想的前端工作!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值