文章目录
使⽤过程中遇到的问题,如何解决的
在前端开发过程中,我遇到过的一些常见问题以及解决方式包括:
- 浏览器兼容性问题:使用 Feature Detection 检测浏览器是否支持某功能,并提供降级方案
- 使用 Polyfill 打补丁模拟实现浏览器不支持的 API。
- 性能优化问题:使用懒加载、缓存静态资源、压缩代码、Tree Shaking、SSR 等方式优化页面性能。
- 跨域请求问题:通过 CORS、JSONP、代理服务器等方式实现前后端跨域通信。
- 状态管理问题:使用 Redux、Mobx 等状态管理框架集中管理组件状态。
- 代码调试问题:使用 debugger 语句、breakpoints、Chrome DevTools 等调试工具定位BUG。
- 移动端适配问题:使用 Flex、媒体查询等响应式布局技术,实现组件自适应。
- 模块化问题:使用 Webpack、Rollup、Parcel 等打包工具,实现代码拆分和模块化。
- TypeScript 类型问题:合理的类型定义,编译时类型检查,兼容 JavaScript。
- 测试问题:编写单元测试、UI 测试,保证重构与新增功能的正确性。
JS是什么范式语⾔(⾯向对象还是函数式编程)
- JavaScript 支持面向对象编程:
- 可以定义类和对象,支持封装、继承、多态等面向对象特性
- 可以使用 this 引用对象实例
- 可以使用 new 关键字创建对象
- JavaScript 也支持函数式编程:
- 函数是一等公民,可以赋值给变量,作为参数,也可以作为返回值
- 支持匿名函数和闭包
- 可以使用高阶函数
- 支持不可变数据
- 函数没有副作用
综上所述,JavaScript 融合了面向对象编程和函数式编程的特点,是一个多范式的语言。
koa原理,为什么要⽤koa(express和koa对⽐)
Koa 的工作原理可以总结为以下几点:
- 利用洋葱模型(Onion Model)组织中间件。Koa 将一系列的中间件放入一个栈中,形成一个洋葱圈。请求从外到内,依次通过每一层中间件,响应则从内到外依次执行。
应用程序、上下文、请求及响应这四个对象。应用程序提供核心函数,上下文(Context)将 req 和 res 封装到单个对象,提供给中间件访问,请求(Request)和响应(Response)对象包含请求和响应的详细信息。 - 异步中间件通过 async/await 实现。Koa 应用是一个包含一组中间件函数的对象,每个中间件是一个 async 函数,它接收 ctx 和 next 作为参数。通过 await next() 来执行下一个中间件。
- 函数式编程。洋葱模型采用函数式编程方式,通过剥洋葱一样的一层层调用,使代码逻辑更清晰。
- 洋葱模型中间件执行流程:
- 最内层中间件首先执行。
- 执行完调用 next 触发后续中间件。
- 当后续中间件执行完,会回到上一层中间件。
- 直到所有中间件递归完毕,响应结果发送给客户端。
- 支持请求数据流化。可以通过 yield 将请求数据转换为流,这样可以处理大文件上传等场景。
综上,Koa 通过洋葱模型、async/await、上下文设计等使异步代码更优雅,增强了 Node.js Web 应用框架的表达力。
Koa相比Express有以下几点主要优势:
- Koa使用async/await,代码更直观易读;Express还需要回调函数。
- K