JS爆炸下的技术选型    刘尚奇    ThoughtWorks, 高级咨询师

  JS每6个星期出现一个新框架,那么如何进行JS的选型。以下从四个方面来分析。

  1、工具

     NPM for all the things   用来管理项目依赖就足够了。

     Webpack    除了资源的loader,还可以做编译构建等。

     很多时候只是用NPM +Webpack就足够对前端工程进行构建,打包,压缩等,不用再去引入像Gulp、Grunt这样的工具。

  2、类库

    react,官方更愿意是一个类库,是mvc中V的部分。

  3、框架

    对Angular.JS持谨慎态度

      首先,使用Angular.JS的团队并没有考虑到自己项目的真实情况。像这种MVVM框架 不能做SEO,可能去做企业内部的项目很合适,但是去做互联网的面对终端的一些项目,

    可能不是非常合适。另外,像Angular.JS这种双向绑定可能在管理数据复杂度上会有一些问题。如果你的应用增长到非常大的规模,如果你的状态维护成了一个问题,

    可能不是那么的合适。还有一点,Angular 2比Angular 1的api做了非常大的改变,导致Angular的前景和未来不是很明朗。

    推荐的替代框架

      Ember.js,它的命令行构建工具,约定优于配置的设计,以及ES6的支持为它赢得了诸多的支持者。

      Aurelia.js ,采用最新的javaScript:ECMAScript2016标准开发而成,被认为是下一代JavaScript客户端开发框架。Aurelia最了不起的是它的高度模块化,包含了许多小型库,

    可以非常方便的进行定制化开发。Aurelia遵循约定优于配置的理念,而且其约定恰到好处,很容易进行模块的产生和使用。

  4、语言

    不在推荐使用javaScript的一些替代性语言,相反去年ES6终于来了。 它里面包含等待已久的一些特性,比如Modules、Classes、Promises、Destructuring 。

    更重要的是JavaScript已经变成了一个事实的标准。可以确定, 如果现在你要开始一个项目,你应该使用ES6进行开发。

    总结:从工具》类库》框架》语言,类库和工具可以很容易替换,但是框架对项目的侵入性非常强,语言是项目非常难以改变的。依赖程度不断加深,越是往核心选型越应该谨慎。

  讲完了选型,下面来聊下架构

  那么在js爆炸下,什么样是一个好的架构,可以帮助你更好的升级技术。可以从以下这几个维度来看

  1、建立分层和抽象,提炼出POJO

    任何的项目都是需要一个合适的分层和抽象,这一部分是和具体的技术是无关的,更换技术时可以复用。

  2、模块化和依赖注入方便组件替换和升级

  3、依赖可翻转,让框架依赖核心代码

    在核心层构建代码,把代码注入到框架里,这样替换框架时,只是在替换调用点。

  4、可测试

    总结:认为架构选择比技术选择更重要。与其投入更多的时间去选择技术,不如投入更多的时间在一个合适的架构上。

    

《2016ThoughtWorks技术雷达峰会----js爆炸下的技术选型》的更多相关文章

  1. 简单物联网:外网访问内网路由器下树莓派Flask服务器

    最近做一个小东西,大概过程就是想在教室,宿舍控制实验室的一些设备. 已经在树莓上搭了一个轻量的flask服务器,在实验室的路由器下,任何设备都是可以访问的:但是有一些限制条件,比如我想在宿舍控制我种花 ...

  2. 利用ssh反向代理以及autossh实现从外网连接内网服务器

    前言 最近遇到这样一个问题,我在实验室架设了一台服务器,给师弟或者小伙伴练习Linux用,然后平时在实验室这边直接连接是没有问题的,都是内网嘛.但是回到宿舍问题出来了,使用校园网的童鞋还是能连接上,使 ...

  3. 外网访问内网Docker容器

    外网访问内网Docker容器 本地安装了Docker容器,只能在局域网内访问,怎样从外网也能访问本地Docker容器? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并启动Docker容器 ...

  4. 外网访问内网SpringBoot

    外网访问内网SpringBoot 本地安装了SpringBoot,只能在局域网内访问,怎样从外网也能访问本地SpringBoot? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装Java 1 ...

  5. 外网访问内网Elasticsearch WEB

    外网访问内网Elasticsearch WEB 本地安装了Elasticsearch,只能在局域网内访问其WEB,怎样从外网也能访问本地Elasticsearch? 本文将介绍具体的实现步骤. 1. ...

  6. 怎样从外网访问内网Rails

    外网访问内网Rails 本地安装了Rails,只能在局域网内访问,怎样从外网也能访问本地Rails? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并启动Rails 默认安装的Rails端口 ...

  7. 怎样从外网访问内网Memcached数据库

    外网访问内网Memcached数据库 本地安装了Memcached数据库,只能在局域网内访问,怎样从外网也能访问本地Memcached数据库? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装 ...

  8. 怎样从外网访问内网CouchDB数据库

    外网访问内网CouchDB数据库 本地安装了CouchDB数据库,只能在局域网内访问,怎样从外网也能访问本地CouchDB数据库? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并启动Cou ...

  9. 怎样从外网访问内网DB2数据库

    外网访问内网DB2数据库 本地安装了DB2数据库,只能在局域网内访问,怎样从外网也能访问本地DB2数据库? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并启动DB2数据库 默认安装的DB2 ...

  10. 怎样从外网访问内网OpenLDAP数据库

    外网访问内网OpenLDAP数据库 本地安装了OpenLDAP数据库,只能在局域网内访问,怎样从外网也能访问本地OpenLDAP数据库? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并启动 ...

随机推荐

  1. ZeroClipboard 复制到剪贴板

    使用 ZeroClipboard 可以简单的将内容复制到剪贴板,通过 Adobe Flash 和 JavaScript 来实现.“Zero” 意义为这个类库没有界面,界面需要由你来建立. 版本: Ze ...

  2. Kafka主要参数详解(转)

    原文档地址:http://kafka.apache.org/documentation.html ############################# System ############## ...

  3. 转-Nmap扫描原理与用法

    1     Nmap介绍 操作系统与设备类型等信息. Nmap的优点: 1.      灵活.支持数十种不同的扫描方式,支持多种目标对象的扫描. 2.      强大.Nmap可以用于扫描互联网上大规 ...

  4. Autodesk View and Data API练练手

    大家如果参加过我们的活动,你应该已经听过看过不少关于View and Data Web Service的例子里,如果还没有的话,请看看下面这几篇: http://www.cnblogs.com/jun ...

  5. Sharepoint学习笔记—习题系列--70-576习题解析 -(Q59-Q62)

    Question 59You are designing a collection of Web Parts that will be packaged into a SharePoint 2010 ...

  6. Android 开源框架Universal-Image-Loader完全解析(二)--- 图片缓存策略详解

    转载请注明本文出自xiaanming的博客(http://blog.csdn.net/xiaanming/article/details/26810303),请尊重他人的辛勤劳动成果,谢谢! 本篇文章 ...

  7. 小谈KVC中KeyPath的集合运算符

    由于知识点比较简单,这里不再陈述一大堆的原理,直入主题. KVC中的集合运算符有以下三类: 1.简单集合运算符:@avg.@sum.@max.@min.@count (只能用在集合对象中,对象属性必须 ...

  8. 解决Android studio 非法字符的问题

    前言:今天遇到一个问题,从一个项目中把一些类拷贝到Android studio 里面,运行的时候,报错. 显示刚才拷贝的类中有非法字符,我又检查了一遍,发现类中没有非法字符. 在网上查到了,相关的解决 ...

  9. Android Launcher 3 简单分析

    最近在学习Android Launcher的相关知识,在github上找到可以在Android studio上编译的Launcher 3代码,地址:https://github.com/rydanli ...

  10. 数据存储与IO(一)

    应用程序沙盒简介:iOS应用程序只能在系统为它分配的文件区域内读写文件,这个区域就是此应用程序的沙盒,Application目录下的GUID文件夹就是沙盒,这个文件夹是系统随机命名的.程序所有的非代码 ...