《2016ThoughtWorks技术雷达峰会----js爆炸下的技术选型》
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爆炸下的技术选型》的更多相关文章
- 简单物联网:外网访问内网路由器下树莓派Flask服务器
最近做一个小东西,大概过程就是想在教室,宿舍控制实验室的一些设备. 已经在树莓上搭了一个轻量的flask服务器,在实验室的路由器下,任何设备都是可以访问的:但是有一些限制条件,比如我想在宿舍控制我种花 ...
- 利用ssh反向代理以及autossh实现从外网连接内网服务器
前言 最近遇到这样一个问题,我在实验室架设了一台服务器,给师弟或者小伙伴练习Linux用,然后平时在实验室这边直接连接是没有问题的,都是内网嘛.但是回到宿舍问题出来了,使用校园网的童鞋还是能连接上,使 ...
- 外网访问内网Docker容器
外网访问内网Docker容器 本地安装了Docker容器,只能在局域网内访问,怎样从外网也能访问本地Docker容器? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并启动Docker容器 ...
- 外网访问内网SpringBoot
外网访问内网SpringBoot 本地安装了SpringBoot,只能在局域网内访问,怎样从外网也能访问本地SpringBoot? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装Java 1 ...
- 外网访问内网Elasticsearch WEB
外网访问内网Elasticsearch WEB 本地安装了Elasticsearch,只能在局域网内访问其WEB,怎样从外网也能访问本地Elasticsearch? 本文将介绍具体的实现步骤. 1. ...
- 怎样从外网访问内网Rails
外网访问内网Rails 本地安装了Rails,只能在局域网内访问,怎样从外网也能访问本地Rails? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并启动Rails 默认安装的Rails端口 ...
- 怎样从外网访问内网Memcached数据库
外网访问内网Memcached数据库 本地安装了Memcached数据库,只能在局域网内访问,怎样从外网也能访问本地Memcached数据库? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装 ...
- 怎样从外网访问内网CouchDB数据库
外网访问内网CouchDB数据库 本地安装了CouchDB数据库,只能在局域网内访问,怎样从外网也能访问本地CouchDB数据库? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并启动Cou ...
- 怎样从外网访问内网DB2数据库
外网访问内网DB2数据库 本地安装了DB2数据库,只能在局域网内访问,怎样从外网也能访问本地DB2数据库? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并启动DB2数据库 默认安装的DB2 ...
- 怎样从外网访问内网OpenLDAP数据库
外网访问内网OpenLDAP数据库 本地安装了OpenLDAP数据库,只能在局域网内访问,怎样从外网也能访问本地OpenLDAP数据库? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并启动 ...
随机推荐
- ZeroClipboard 复制到剪贴板
使用 ZeroClipboard 可以简单的将内容复制到剪贴板,通过 Adobe Flash 和 JavaScript 来实现.“Zero” 意义为这个类库没有界面,界面需要由你来建立. 版本: Ze ...
- Kafka主要参数详解(转)
原文档地址:http://kafka.apache.org/documentation.html ############################# System ############## ...
- 转-Nmap扫描原理与用法
1 Nmap介绍 操作系统与设备类型等信息. Nmap的优点: 1. 灵活.支持数十种不同的扫描方式,支持多种目标对象的扫描. 2. 强大.Nmap可以用于扫描互联网上大规 ...
- Autodesk View and Data API练练手
大家如果参加过我们的活动,你应该已经听过看过不少关于View and Data Web Service的例子里,如果还没有的话,请看看下面这几篇: http://www.cnblogs.com/jun ...
- Sharepoint学习笔记—习题系列--70-576习题解析 -(Q59-Q62)
Question 59You are designing a collection of Web Parts that will be packaged into a SharePoint 2010 ...
- Android 开源框架Universal-Image-Loader完全解析(二)--- 图片缓存策略详解
转载请注明本文出自xiaanming的博客(http://blog.csdn.net/xiaanming/article/details/26810303),请尊重他人的辛勤劳动成果,谢谢! 本篇文章 ...
- 小谈KVC中KeyPath的集合运算符
由于知识点比较简单,这里不再陈述一大堆的原理,直入主题. KVC中的集合运算符有以下三类: 1.简单集合运算符:@avg.@sum.@max.@min.@count (只能用在集合对象中,对象属性必须 ...
- 解决Android studio 非法字符的问题
前言:今天遇到一个问题,从一个项目中把一些类拷贝到Android studio 里面,运行的时候,报错. 显示刚才拷贝的类中有非法字符,我又检查了一遍,发现类中没有非法字符. 在网上查到了,相关的解决 ...
- Android Launcher 3 简单分析
最近在学习Android Launcher的相关知识,在github上找到可以在Android studio上编译的Launcher 3代码,地址:https://github.com/rydanli ...
- 数据存储与IO(一)
应用程序沙盒简介:iOS应用程序只能在系统为它分配的文件区域内读写文件,这个区域就是此应用程序的沙盒,Application目录下的GUID文件夹就是沙盒,这个文件夹是系统随机命名的.程序所有的非代码 ...