前端(一)——前端开发遇到的普遍问题以及解决策略

在这里插入图片描述
博主:小猫娃来啦
文章核心:前端开发遇到的普遍问题以及解决策略

前端十万个为什么?

有人说vue框架是基于mvvm实现的?这种说法对吗?
mvc和mvvm的区别是什么?
mvvm是否是mvc的升级?
mvvm和mvc有什么关系?为什么有人说mvvm是基于mvc实现的?
什么时候使用mvc模式,什么时候使用mvvm模式?
如何优化mvc模式的缺点?
前端框架如何简化视图层开发?
Vue.js是基于哪种架构模式实现的?
Vue 2和Vue 3的区别是什么?
为什么现在很少有人在UniApp中使用Vue 3?
为什么不直接使用Vue.js开发跨平台应用,而要使用UniApp呢?
Vue2,Vue3和Vue.js为什么名称不一样?有什么区别吗?
大家天天说解耦,那么到底什么是解耦?
TS和软件设计的架构模式有什么关系吗?
React和Vue有什么区别?
为什么发际线越来越高?

这些问题涉及到前端架构模式的概念、特点、优化以及具体的框架和技术选择等方面。可以说跨度比较大,但其实比较一体化。我们一起来研究一下这些问题,把这些问题之间的关系捋一遍。
关于这些问题,会出系列文章,今天着重从前端开发中遇到的问题开始聊。

文章目录

  • 前端十万个为什么?
  • 前端开发遇到的普遍问题
  • 解决问题的策略
    • 首当其冲的浏览器兼容问题解决策略:
    • 前端性能优化策略:
    • 响应式布局和移动端适配策略:
    • 数据管理和状态管理策略:
    • 跨域问题的解决策略:
    • 安全性问题策略:
    • 维护和可扩展性策略:

前端开发遇到的普遍问题

前端开发遇到的普遍问题是什么?
相信各位开发者都遇到过各种各样的问题
1.比如样式,同样的1em,在不同浏览器的大小就是不一样的。火狐浏览器谷歌浏览器IE10都有差异,因为不同浏览器对默认字体尺寸的定义方式有差异。
2.你也看到过很多代码中出现样式前面要加--webkit--moz等等的书写方式。这是因为某些样式需要加不同的前缀来兼容不同内核的浏览器。
3.再比如在没有promise之前,都经历过地狱回调。
4.图片加载过慢,造成的很差的用户体验感。
5.由静态布局到自适应布局,到响应式布局
6.跨域问题
7.网页不进行登录验证,可以随意获取页面数据
8.页面的维护问题,以及页面内容的可扩展性问题

诸如此类

总结一下,前端开发遇到的普遍问题,主要体现在以下几个方面:

浏览器兼容性问题:不同浏览器对于HTML、CSS和JavaScript的解析和渲染有一些差异,可能导致页面在不同浏览器中显示不一致或出现兼容性问题。

前端页面的性能优化:前端性能是用户体验的重要因素,但常常会遇到加载慢、页面渲染缓慢、JavaScript执行效率低等性能问题。需要优化代码、减少HTTP请求、压缩资源、使用缓存等方式来提高性能。

响应式布局和移动端适配:在不同设备和屏幕尺寸上保持页面的可用性和美观性是挑战之一。需要使用响应式布局、媒体查询、弹性布局等技术来适应不同的屏幕尺寸和设备。

数据管理和状态管理:随着应用规模的增长,前端应用中的数据管理和状态管理变得复杂。需要合理组织和管理应用的数据流,使用合适的状态管理库或模式(如Vuex、Redux)来管理应用的状态。

跨域问题:由于浏览器的同源策略限制,前端请求不同域的资源可能会受到限制。需要通过配置CORS、使用代理服务器或JSONP等方式来解决跨域问题。

安全性问题:前端应用中可能存在一些安全漏洞,如跨站脚本攻击(XSS)、跨站请求伪造(CSRF)等。需要注意安全编码和防御措施,如输入验证、输出编码、使用安全的接口等。

维护和可扩展性:随着项目的发展,前端代码可能会变得越来越复杂和难以维护。需要遵循良好的代码组织和设计原则,使用模块化、组件化等方式来提高代码的可维护性和可扩展性。

调试和错误处理:前端开发中常常会遇到各种错误和异常,需要使用调试工具和技术来快速定位和解决问题。合理处理错误,提供友好的错误提示和日志记录,以便快速定位问题。


解决问题的策略

技术需要更新,需要迭代,是为什么?
说是更新迭代,不如说是革命,只不过没有革命彻底。技术的更新迭代大都是渐进式的。需要给广大开发者适应的一个过渡期。

技术的更新、迭代、产生是为了更好的解决某些现存的顽固问题,或者产生能够替代老旧解决方案的新方案;或者是在前进路上遇到新问题,并基于以往经验思考、实践而创造的新概念、新产品。
                                                                                               ——小猫娃来啦

那么为了解决前端开发遇到的普遍性问题,都有哪些技术的产生和迭代呢?


首当其冲的浏览器兼容问题解决策略:

  • 使用CSS预处理器(如Sass、Less)来减少浏览器兼容性问题。
    这边给个传送门sacc官网,less官网
    本人之前博客写过关于less的使用,这边给个传送门详细介绍less(css预处理语言)
    关于本片博客,本人写过一个less写法的demo,这边给一个传送门less使用demo( css预处理语言)
  • 使用CSS Reset或Normalize.css等库来统一不同浏览器的默认样式。
  • 使用Can I Use等工具来检查和了解不同浏览器的兼容性支持情况。
  • 使用-webkit-前缀实现Webkit内核浏览器的兼容、使用-moz-前缀实现Gecko内核浏览器的兼容。
  • 针对某些特定的浏览器进行CSS样式的调整,以实现页面在不同浏览器中的一致展示。
    使用* + html来针对只有IE6生效的样式hack。
  • 对于浏览器不支持的新特性或API,通过引入Polyfill(填充器)或Shim(垫片)来提供相似的功能或行为,一般用babel-polyfill库提供ES6+的新特性在旧浏览器中的兼容支持。
  • 利用浏览器开发者工具检查CSS布局、执行JavaScript,查看浏览器控制台输出错误信息等。

跨浏览器测试工具:

  • 在多个常见浏览器中进行测试,及时发现并解决兼容性问题。可以使用工具如BrowserStack或Sauce Labs进行跨浏览器测试。比如可以利用这些工具测试页面在Chrome、Firefox、Safari等多个主要浏览器中的展示和功能是否正常,并及时修复问题。

细说一下前缀兼容:
CSS属性使用webkit前缀(适用于WebKit内核浏览器,如Chrome和Safari):

/* 使用webkit前缀的transform属性 */
-webkit-transform: rotate(45deg);

CSS属性使用moz前缀(适用于Gecko内核浏览器,如Firefox):

/* 使用moz前缀的box-shadow属性 */
-moz-box-shadow: 0 0 5px rgba(0, 0, 0, 0.5);

CSS属性同时使用webkit和moz前缀(用于同时兼容WebKit和Gecko内核浏览器):

/* 使用webkit和moz前缀的transition属性 */
-webkit-transition: all 0.3s ease;
-moz-transition: all 0.3s ease;

前端性能优化策略:

  • 图片优化:使用适当的图片格式(如JPEG、PNG、WebP)来减小图片的文件大小,使用图片压缩工具(如TinyPNG)来减小图片文件的大小,使用懒加载来延迟加载图片,只有当图片进入可视区域时才加载。
  • 资源合并和压缩:减少HTTP请求次数,将多个CSS文件合并成一个文件,将多个JavaScript文件合并成一个文件,并使用压缩工具(如UglifyJS、Terser)来压缩合并后的文件,减小文件大小和加载时间。
  • 使用CDN(内容分发网络):将静态资源(如CSS、JavaScript、图片)部署到CDN上,使用户可以从离用户更近的服务器获取资源,减小延迟和提高加载速度。
  • 使用缓存:使用浏览器缓存来存储静态资源,使得用户在再次访问页面时可以直接从缓存中获取资源,减少网络请求。
  • 使用异步加载:通过将不影响页面显示的资源(如JavaScript)延迟加载或异步加载,可以提高页面的首次加载速度。可以使用'; var sanitizedInput = sanitizeInput(userInput); document.getElementById('output').textContent = sanitizedInput;

    CSRF防护:

    // 生成CSRF Token,并将Token添加到每个请求中
    function addCsrfTokenToRequest(request) {
      var csrfToken = '生成的CSRF Token';
      request.headers['X-CSRF-TOKEN'] = csrfToken;
    }
    
    // 示例:Ajax请求发送时添加CSRF Token
    var xhr = new XMLHttpRequest();
    xhr.open('POST', '/api/endpoint', true);
    addCsrfTokenToRequest(xhr);
    xhr.send();
    
    

    这里要说明一下,光前端做安全性处理是不够的,实际开发中,往往需要前后端商量着来,比如前后端商量以什么样的加密方式来处理数据,怎么解密等等。


    维护和可扩展性策略:

    • 遵循模块化和组件化的开发方式,将代码分解为独立的模块和组件,提高代码的可维护性和可复用性。
    • 使用合适的设计模式和架构模式来组织代码,如MVC、MVVM、组合式等。
    • 使用版本控制工具(如Git)来管理代码,进行分支管理和团队协作。
      关于Git版本管理工具这边给一个下载的传送门点击下载git版本管理工具

    到这,对于前端开发遇到的普遍性问题,以及通常的解决方法已经有所了解。这像是一部前端的历史。只有知道这些才能后续更好的研究更深入的问题。
    在这里插入图片描述


你可能感兴趣的:(前端,前端,前端框架,vue.js,react.js,javascript,css,https)