Web网站技术选型

存在即合理,没有最好的框架,只有最合适的框架。前端

一切脱离需求和技术储备的选型都是耍流氓!vue

 

鱼与熊掌:选择流行框架仍是兼容低版本IE(IE8及如下)

HTML五、CSS3

HTML5新标签以及CSS3的新属性在IE6/IE7/IE8上不能识别。react

jQuery

jquery2.0以后的版本开始不支持IE8。(可用1.9.x版本,最新版本v3.2.1)jquery

Bootstrap

Bootstrap3已再也不支持IE8,官网提供了兼容方法,须要引入额外的文件。webpack

Angular

Angular1.3版本之后再也不支持IE8。(可用1.2.x版本,最新版本Angular4)web

React

从React v15开始,React DOM将再也不支持IE8。(可用v0.14.x版本,最新版本v15.6.1)vue-router

Vue

不支持IE8vuex

真的有必要兼容IE8(甚至IE6,IE7)吗? 

  • 产品定位:门户网站,给用户看的;优雅,用户体验优先。
  • 平衡一下支持老版本IE带来的的收益和成本(开发、测试的投入,以及伤开发人员士气等等)。
  • 为了兼容IE6-8,要多花不少时间,并且不敢使用最新的技术。
  • 为了兼容低版本浏览器须要加入一些额外的代码,致使运行速度也会被拖累。
  • 与其花费时间、精力在低版本浏览器的兼容上,不如在其余方面投入更多以得到更优质的用户体验。

三分天下(一个框架、两个类库)

Angular:Google团队开发、完整的一套框架,大而全。 redux

React:facebook团队开发,强调组件化的类库。后端

Vue:国产、关注视图层的渐进式框架。

 

  • Angular是框架;React 和Vue是类库,这就意味着须要其余的库配合才能造成一套完整的框架。
  • Angular是一个大而全的 MVC 框架,它提供了咱们所须要的各类功能:如模块管理、双向绑定等等。它涵盖了开发中的各个层面,而且层与层之间都通过了精心调适。
  • 常见的React开发组合: React + react-router + redux
  • Vue官方推荐的全套方案: Vue + vue-router + vuex + webpack + vue-loader

大而全的Angular

  • Angular是一个完整的框架,有着诸多特性,最为核心的是:MVC、模块化、自动化双向数据绑定、语义化标签、依赖注入等等。
  • 不少人说Angular很重,可是这个重是在于它给你提供了一切你想要、或者说你可能会用到的库。好比:react中作http通信,那你就必须引入第三方的库如 isomorphic-fetch 等等,然而,在angualr2中直接提供了http库@angular/http;再好比:react中路由,那你须要引入react-router,然而在angular2中直直接提供了Router功能。使用React,一切都须要你本身负责,你要本身整合一大堆开源类库来打造一个完整的应用,类库之间互不相干且变更频繁。(无选择性疲劳)
  • Angular的核心团队默认在文档中使用TypeScript,这意味着相关的示例应用和开源项目更有可能保持一致性(优点也多是缺点,并不是全部人都喜欢 TypeScript)
  • Angular还拥抱了Web Component标准。当然Web Components的浏览器支持度依然很弱,但长期来看,对Web Components友好是很大的优点。

两个类库React && Vue

  • React与Vue存在不少类似之处,他们都是JavaScript的UI框架,专一于创造前端的富应用。不一样于早期的JavaScript框架“功能齐全”,Reat与Vue只有框架的骨架,其余的功能如路由、状态管理等是框架分离的组件。
  • Vue2.0和React都使用了Virtual DOM。
  • 提供了响应式(Reactive)和组件化(Composable)的视图组件
  • 将注意力集中保持在核心库,而将其余功能如路由和全局状态管理交给相关的库。
  • React和Vue都有本身的构建工具。

React:单向数据流,大胆的设计理念

  • 新的语法—JSX。(其实不少人很是不喜欢 jsx 这种 HTML 和 JS 在一块儿的方式)
  • 现成的UI组件库:蚂蚁金服基于React开发的UI组件库
  • 完善的生态圈,活跃的社区,facebook在其背后强大的技术支持。
  • React最大的优点是React native,能在手机上建立原生应用,可让React轻松运行在不一样的平台之上。(React在这方面处于领先位置)
  • React报错清晰快速,JSX具有的代码自动补全、编译时检查与丰富的错误提示创造奢华的开发体验。
  • React支持服务端渲染。
  • React没法优雅的处理动画。

Vue:把高大上的思想变得平易近人

  • 国产框架,轻量,学习成本低,容易上手,拥有完善的中文文档。
  • 现成的UI组件库:饿了么团队基于Vue开发的UI组件库
  • 相对完善的生态圈。(Vue 的社区当然比不上 React,但也不算小)
  • 更符合传统web开发的思路,模版样式与逻辑分离。
  • 配合 webpack 和 vue-loader,每一个页面都是一个 .vue 文件,写起来、管理起来很方便。
  • 适合作组件化开发(每一个组件也是一个 .vue 文件,能够全局或者在须要的地方引入),若是遇到比较复杂的、父子组件间须要频繁通讯的场景,能够用 vuex 搞定。

SPA与SEO

单页应用( SPA)优势:

  • 用户体验好、快,内容的改变不须要从新加载整个页面,web应用更具响应性和更使人着迷。
  • 良好的先后端分离。SPA和RESTful架构一块儿使用,后端再也不负责模板渲染、输出页面工做,web前端和各类移动终端地位对等,后端API通用化。
  • 同一套后端程序代码,不用修改就能够用于Web界面、手机、平板等多种客户端。

单页应用( SPA)缺点:

  • 不利于搜索引擎优化( SEO)
  • 初次加载耗时相对增多。
  • 前进、后退、地址栏等,须要程序进行管理。

make a choice

技术选型须要考虑的点:

  • 技术(兼容性、是否成熟、架构和模式、生态系统、文档是否完备)
  • 业务
  • 效率(上手、开发难易度、团队人员的知识储备以及浏览器运行效率)

方案分析:

  • jQuery浏览器兼容性最好,低版本的angular和react也能作到部分兼容,vue不支持IE8及如下。
  • jQuery最成熟,API也比较多,对应的插件库也多。angular、react、vue都是近几年的新兴产物,可是发展迅速。angular1.x因为其设计缺陷,已逐渐被淘汰,取而代之的angular2则比较成熟。Vue也推出了2.0版本,借鉴了React和angular的优势。
  • 社区生态方面,React是目前最成熟也最活跃的,各种工具库层出不穷。Vue相对较少,可是配置设施也齐全,同时拥有完善的中文文档。Angular因为其大而全的特性,不须要额外的工具库,文档较少。
  • 上手、开发难易度:vue > angular > react
  • 运行效率:vue、react位于第一梯队,Angular次之,jQuery因为其历史悠久性在其运行效率及用户体验性较差。