OCaml大的特性是其函数式语言特性,我们再看下其对于不可变类型的支持,我们使用OCaml stdlib实现的不可变类型如下:
moduleIntMap=Map.Make(struct
typet=int
letcompare(x:int)y=comparexy
end)
lettest()=
letm=refIntMap.emptyin
letcount=1000000in
fori=0tocountdo
m:=IntMap.addii!m
done;
fori=0tocountdo
ignore(IntMap.findi!m)
done
let()=test()
  而如果要用FacebookImmutable实现的代码为:
'usestrict';
varImmutable=require('immutable');
varMap=Immutable.Map;
varm=newMap();
functiontest(){
varcount=1000000;
for(vari=0;i<count;++i){
m=m.set(i,i);
}
for(varj=0;j<count;++j){
m.get(j);
}
}
test();
  性能评测下,二者的执行时间对比为:
  · BuckleScript: 1186ms
  · JavaScript: 3415ms
  编译后的体积为:
  · BuckleScript (production): 899 Bytes
  · JavaScript: 55.3K Bytes
  ReasonML
  ReasonML与React师出同门,是基于OCamel设计的语法友好、编辑器支持程度高,并且有强大的编译工具支持的语言。建议阅读Sean Grove对ReasonML的介绍。本文简单介绍几个JavaScript与Reason的语法对比:

  Purescript
  另一个强类型、高性能的能够编译到JavaScript的编程语言,其定位与Elm类似,主要特性为:
  · 没有运行时错误
  · 严格的,类似于JavaScript的计算
  · 支持JavaScript 对象语法
  · 提供相较于Hashkell更强大方便的类型系统
  · 更方便地JavaScript库集成
  Webpack-blocks
  Dan Abramov说过,Webpack的定位是在相对底层,因此将配置以编程块的方式实现会更加完备。
const { createConfig, defineConstants, env, entryPoint, setOutput, sourceMaps } = require('@webpack-blocks/webpack2')
const babel = require('@webpack-blocks/babel6')
const devServer = require('@webpack-blocks/dev-server2')
const postcss = require('@webpack-blocks/postcss')
const autoprefixer = require('autoprefixer')
module.exports = createConfig([
entryPoint('./src/main.js'),
setOutput('./build/bundle.js'),
babel(),
postcss([
autoprefixer({ browsers: ['last 2 versions'] })
]),
defineConstants({
'process.env.NODE_ENV': process.env.NODE_ENV
}),
env('development', [
devServer(),
devServer.proxy({
'/api': { target: 'http://localhost:3000' }
}),
sourceMaps()
])
]);
  GraphQL
  GraphQL是个不错的REST替代查询语言,特别是对于那些拥有大量数据的公司。这个案例分析很好地阐述了从REST到GraphQL的转变之路。我能够想象2017年GraphQL会继续处于上升势头,不过要谈到真的大规模实施,还要到2018年吧。
  React Storybook
  相信大家对于React Storybook并不陌生了,你能够独立于应用而交互式的开发你的组件

  [jQuery 3.0]()
  爷爷辈的jQuery仍然处于不断的迭代更新中,可能很多开发者忽略了2016年6月份发布的jQuery 3.0版本,可以参考这里获取更多信息。
  Pixi.js
  如果你打算在浏览器中实现精彩的2D效果,特别是对于使用WebGL的游戏开发者,Pixi.js是个值得一看的库,可以参考这里获取更多的Demo。
  Preact与[inferno]()
  非常的React的替代库。
  Rust
  Rust可以编译到JavaScript啦(通过emscripten)。
  Custom Elements
  Custom Elements(包括Shadow DOM)一直不被主流的开发者接受,不过看似2017这一点将会发生些许变化。变化的关键因素在于浏览器支持比例的改善。个人还是蛮期待Custom Elements的,可以关注SmashingMag或者Google’s关于Custom Elements的解释。
  WebRTC
  很难相信WebRTC已经五岁了,Facebook、Slack、Snapchat以及WhatsApp都在他们的服务中集成了WebRTC。可以预见WebRTC会在2017年被更多的公司采用,蒸蒸日上。
  Next.js
  Next.js是个基于React、Webpack与Babel构建的,支持服务端渲染的小框架,其来源于ZEIT团队,在React社区获得了不小的关注度。