25年,前端开发项目中的难点亮点【最强面试版】

94 阅读9分钟

本书将聚焦前端开发中的项目难点创新亮点,通过真实案例、最佳实践和前沿探索,剖析技术背后的思考与解决方案。无论你是初入行业的新人,还是经验丰富的工程师,希望这些经验能为你提供启发,助你在瞬息万变的技术浪潮中把握方向,打造更高效、更可靠、更极致的用户体验。

—— **代码不止于运行,更在于创造价值。**有需要更多前端资料,看文末免费领取

2025年前端项目细节和疑难点

1、测试和调试

2、跨域请求问题

3、数据安全和隐私保护

4、移动端触摸事件处理

5、性能优化

6、响应式布局的挑战

7、浏览器兼容性问题

8、获取首页链接里面的参数问题。

9、更新文件缓存的坑。

10、解析后端返回的map格式数据的坑。

11、vue组件动态加载的坑。

12、页面缓存的坑。

13、路由传参的功能的坑。

14、axios请求中post请求的坑。

15、为什么需要二次封装组件库?

16、请结合一个组件库设计的过程,谈谈前端工程化的思想

17、如何对一个组件库进行测试?

18、在使用qiankun时,你如何处理多个子项目的调试问题?

19、你能解释一下 qiankun 如何实现 keep-alive 的需求吗?

20、在使用qiankun时,你如何处理js 沙箱不能解决的js 污染问题?

21、在项目中有没有单独封装组件

22、在项目中发送请求怎么携带token

23、工作中有用到git吗

24、git版本发生冲突你怎么解决的

25、如何快速让一个盒子水平垂直居中

26、首屏加载白屏怎么进行优化

27、路由传参 query与 params区别

28、项目基础优化

29、对 $nextTick异步渲染的理解

30、你是怎么对axios进行二次封装的,有什么作用

31、用户token失效你是怎么处理的

32、说一下项目的流程

33、商品和增删改查

34、Element-UI的form表单验证你是怎么使用的

35、项目中的商品详情页你是怎么实现的

36、什么是数组扁平化

37、你这个项目登陆是怎么实现的

38、项目中的权限管理怎么实现的

39、Vue的$nextTick0方法有用到过吗

............................................

1.测试和调试

H5页面需要在多种设备和环境下进?测试,确保其稳定性和兼容性。

解决方法:

使用模拟器或真实设备进行测试。

利用浏览器的开发者?具进?调试。

采用自动化测试框架,如 Selenium或Appium,进行持续集成和测试。

通过了解和解决这些常见的问题,开发者可以提高H5页面的质量和性能,为用户提供更好的体验。

而持续学习和适应新技术才是避免和解决这些问题的关键

2. 跨域请求问题

在进行Ajax请求或API调?时,可能会遇到跨域问题,导致请求失败。

解决方法:

使用JSONP来绕过同源策略限制。

在服务器端设置CORS(跨源资源共享)策略,允许特定的外部域访问资源。

3.数据安全和隐私保护

在处理用户数据时,开发者必须确保数据的安全性和用户的隐私权。

解决方法:

采用HTTPS协议来加密数据传输。

遵循数据最小化原则,只收集必要的用户信息。

提供清晰的隐私政策,告知用户数据的使用方式和目的

4.移动端触摸事件处理

在移动端,触摸事件的处理与桌面端的鼠标事件有所不同,需要特别注意。

解决方法:

使触摸事件(touchstart,touchmove,touchend)代替鼠标事件。

·考虑使用框架或库,如 jQuery

5. 性能优化

H5页面的性能直接影响用户体验。加载时间过长或运行缓慢的页面会导致用户流失。

解决方法:

·对图片和视频进行压缩,减少资源文件的大小。

·利用浏览器缓存和 CDN 服务来加速资源的加载。

·优化 CSS 和 JavaScript 代码,避免重绘和重排,提高页面渲染效率。

6.响应式布局的挑战

为了适应不同屏幕尺寸和分辨率,开发者需要创建响应式布局。这可能导致CSS和JavaScript 代码复杂,难以维护。

解决方法:

·使用媒体查询来适应不同的屏幕尺寸。

·利用CSS框架,如Bootstrap或Foundation,它们提供了一套响应式网格系统,简化了布局的开发。

7.浏览器兼容性问题

在开发H5 页面时,开发者需要考虑到不同浏览器和设备的兼容性。一些特性在某些浏览器上可能不被支持,或者在不同浏览器上表现不一致。

解决方法:

-使用特性检测库,如Modernizr,来检测浏览器是否支持特定的功能。

·采用渐进增强的策略,确保基础功能在所有浏览器上都能正常工作,高级功能则根据浏览器能力逐步增强

8.获取首页链接里面的参数问题。

获取是可以获取到,只要不跳转出这个项目的页面,都是可以的,但是该项目链接了许多外链,所以,有时候返回的时候,页面就会显示空白,因为获取的参数出了问题。解决办法:将参数设:置成了缓存,但是返回的速度快了,首页同样还是会出现拿不到参数,的问题。

解决方法:将获取连接的templateld写在Home页面

if (templateId) {

this.$store.commit('updateTemplatedId',templateId);

window.localStorage.setItem('templateId', templateId);

console.log('store===templateId',this.$store.state.templateId)

}else{

setTimeout(function() {

window.location.reload()

},1500);

}

9.更新文件缓存的坑。

每次打包好文件给后端更新的时候,用户手机上总会留下,上次版本的信息,而且每次都得清下缓存,才会显示最新版本的数据。后来,我师傅提了个建议,让后端返回一个更新版本的接口,前端每次更新版本的时候,都会给后端传入时间戳,然后后端接收后判断和库里的时间戳是否相同,相同的返回不需要更新,不相同的话,返回要更新,然后前端这边的处理方法是:需要更新的话,清除掉缓存,刷新页面即可。

虽然说给.js.css文件后缀加上时间戳也是可以的,但是页面的入口index.html每次都是一样的,所以。。。就不会更新,,百度一些说在nginx服务器上,写上强制更新,但是由于公司服务器上的文件很多,万一操作失误那就麻烦了

10.解析后端返回的map格式数据的坑。

之前解析数据的时候,直接就可以拿去,然后直接渲染页面使用即可。但是这次遇到后端返回的是map格式的数据,这就得解析下了。例如:body['1]。根据返回的格式,自己解析成自己需要的数据格式。

11.vue组件动态加载的坑。

由于首页的排版不确定,然后想着,让组件动态显示,根据后端传入的数据,传入那个组件的数据,就显示那个组件。解决办法:和后端商量好,做个标识。前端根据标识判断,动态显示组件。使用到了vue中的,刚开始想着是不是和原生js一样使用append直接可以插入进入呢,但是后来发现根本不可以,思路是可以的,但是实现起来是行不通的。因为append后面插入的必须是个节点,而不是组件。后来就去查阅vue文档。

12. 页面缓存的坑。

有个填写信息的页面,需要填写一部分信息,进入查新协议页面,返回的时候,页面上填写的!信息还需要留存。解决办法:使用vue提供的keep-alive,来完成页面的缓存的。

13.路由传参的功能的坑。

之前一直使用路由传参,但是当本页面刷新的时候,页面上是没有参数的,因为参数是从上个·页面传入进来的。解决办法:使用了缓存,和vuex状态管理。但是由于项目并不是很大型的项目,所以使用最多的是缓存。

14. axios请求中post请求的坑。

刚开始的坑是,使用axios的post方法请求数据,数据被拦截,数据一直传不到后端那边。后来查文档才得知axios对于post请求是有拦截功能的,需要自己判断,或者使用提请的qs方法,将传给后端的数据进行下处理。

15.为什么需要二次封装组件库?

实际工作中,我们在项目中需要自定义主题色,更改按钮样式,自定义图标,自定义table组件等等,这些都可以基于antd组件库进行二次封装,减少重复工作,提升开发效率。

所以我们在封装的时候按照下面这四个原则进行思考就行了,另外本身封装组件库对于项目来说也是没有任何风险,因为一开始我们把PropsType直接进行转发,内部再进行增加业务的功能,这样就是达到完全的解耦

·统一风格:在一个大的项目或者多个相关的项目中,保持一致的界面风格和交互方式是非常重要的。通过二次封装,我们可以定义统一的样式和行为,减少不一致性。

●降低维护成本:当底层的组件库更新时,我们可能需要在项目的多个地方进行修改。但是如果我们有了自己的封装,只需要在封装层面进行更新即可,这大大降低了维护成本。

·增加定制功能:有些时候,我们需要在原有组件库的基础上增加一些特定的功能,如特定的验证、错误处理等。二次封装提供了这样的可能。

·提高开发效率:在一些常用的功能(如表单验证、全局提示等)上,二次封装可以提供更方便的 API,提高开发效率。

d4da615c84ac6c313da048becbcf6b44_v2-f5cca96da8421287a698aaf1ef3ff451_1440w.jpg

有需要更多前端资料,或本篇完整版,点此免费获取