自问自答系列

JavaScript部分

JavaScript中箭头函数和普通函数的区别?

箭头函数和普通函数的区别

MVC 模式是什么?为什么现在前端框架不再使用?

MVC: Model、View、Controller

维基百科上的解释:

  • Model: 程序员编写程序应有的功能(实现算法等等)、数据库专家进行数据管理和数据库设计(可以实现具体的功能)
  • View: 界面设计人员进行图形界面设计
  • Controller:负责转发请求,对请求进行处理

mvc结构

图片来自维基百科。

MVC这个概念来自软件工程,是一种软件架构模式。MVC 不是一种技术,而是一种理念。

由于现在的web应用复杂度增加,已经可以作为一个应用看待,所以前端也有前端的架构模式。如 React + Redux, Vue + Vuex 等。但是前端的架构目前的主流架构模式应该是MVVM模式。

参考:

Mvvm 前端数据流框架精讲

Flux架构是什么?

在前端这块,React标榜自己是整个软件的V部分,在React中采用了Flux作为前端应用的架构模式。Flux相当于前端项目中的M和C的部分。

为什么需要这个架构呢?

因为React只是DOM的一个抽象层,并不是web应用的完整解决方案。web应用发展到今天,已经可以作为一个完整的软件项目对待了。

只有React的话,有两个方面是没法涉及到的:

  • 代码结构
  • 组件直接的通信

所以如果搭建大型应用,就必须要搭建一个前端框架: React + Flux,之后Flux和函数式编程结合,诞生了Redux,所以目前搭建大型应用都是使用 React + Redux 的模式。

但是也不是所有的项目都要用到Redux, 只有项目足够复杂,React无法解决问题,才需要引入Redux, Redux的适用场景:

  • 多交互
  • 多数据源

参考:

深入浅出React+Redux(三:Flux单向数据流,相关代码在github flux分支)

React中单项数据流指的是什么?有什么优势?

前端现在的的三大主流框架都是MVVM的模式(React也算是,和Redux或者Mobx结合?),但是Vue和Angular是双向数据绑定,React是单向数据绑定,需要用户手动绑定 View =》 Model 的数据流向。

  • 内置MVVM
    • Vue
    • Angular
  • 解耦MVVM
    • React(Redux, Mobx)
    • 需要中间层和框架衔接

css部分

vw和vh的区别?

  • vw
  • vh
  • em
  • rem