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. 20个基于 WordPress 搭建的精美网站

    WordPress 无处不在,小到人博客,大到广受欢迎的各类特色网站,你都能发现 WordPress 的影子,因为它是创建和维护一个网站最容易使用的平台. 另外,网络上有很多资源来创建你的网站,你基本 ...

  2. 今日推荐:10款在 Web 开发中很有用的占位图片服务

    设计网站时,将要使用的图像在一开始通常还不存在,这个时候布局是最重要的.然而,图像的尺寸通常是预先设置,实用一些占位图像可以帮助我们更好地预览和分析布局. 如今,有免费的占位图片自动生成工具可以使用, ...

  3. Pexels Videos – 可以免费商业使用的短视频

    Pexels 是一个巨大的平台,提供免费的精美照片,很多设计师和博客每天用它来寻找他们的个人和商业项目的照片.现在我们想介绍 Pexels 视频,他是用来帮助你找到免费的视频.所有的 Pexels 视 ...

  4. 使用ruby搭建简易的http服务和sass环境

    使用ruby搭建简易的http服务和sass环境 由于在通常的前端开发情况下,我们会有可能需要一个http服务,当然你可以选择自己写一个node的http服务,也比较简单,比如下面的node代码: v ...

  5. [应用][js+css3]3D盒子导航[PC端]

    CSS3构建的3D盒子之导航应用 1.在用css3构建的盒子表面,放上iframe,来加载导航页面. 2.鼠标左键按下移动可旋转盒子,寻找想要的网址. 3.左键单机盒子表面,将全屏现实所点盒子表面的网 ...

  6. JSOM 对User的操作

    一.操作当前用户 //Load current user info function LoadCurUser() { var curUser; curUser = curWeb.get_current ...

  7. 使用fastboot工具刷入recovery.img、boot.img、system.img等

    在Android SDK目录的platform-tools目录下有fastboot.exe刷机工具(注:需要将机器进入fastboo模式) 刷recovery.img: fastboot flash ...

  8. ReactiveCocoa框架下的MVVM模式解读

    记录一些MVVM文章中关于ReactiveCocoa的代码: 实例一:带有分页的文章列表,根据文章类别过滤出文章的列表,可以进入文章详细页面 1:YFBlogListViewModel 首先了解关于列 ...

  9. iOS多线程实现1-pthread

    1 操作系统.进程.线程简单介绍 现在的程序都是在操作系统上跑,很少有裸机的,而且大部分的嵌入式应用也都支持操作系统,当然还有一些很低端的嵌入式设备没有操作系统. iPhone手机跑的是iOS操作系统 ...

  10. 初识Go

    意外关注到一位牛人的微信,提到了2014年他推荐的编程语言是Go.于是乎饶有兴趣的淘了一本书<Go语言程序设计>,学习起来. 第一章的练习题我的答案如下: // Copyright © 2 ...