标签:重构 包管理 mode exp blog prot 大型 http服务 flags
https://github.com/nodejs/LTS#lts-schedule
根据node.green统计Node.js 6.x(LTS下面)的es 2015即es6兼容99%
作为决策的结果,高朋团队使用Node.js重建整个Web层
他们在多个平台使用Node:
当前,高朋有70个Node.js生产应用。应用在30个国家。
skycatch是家数据公司,帮助捕获、管理和分析商业无人机数据。skycatch看到挖掘数据需要大量查询数据库。使用现有的工具如原始SQL查询是困难和耗时的,而skycatch的解决方案可以方便地从网站中提取可操作的数据。
“我们在你能想得到的地方都使用了node - Node是我们的胶水”。
通过Node.js,工程师队可以拥有从UI到后端整个堆栈的全部开发职责,前端他们能够重用自己在JavaScript和HTML上的精通。
现在他们可以很快地把新的功能放一起做原型设计做研究和做一些用户测试。然后把这个想法应用到生产级别并发布,不会导致应用程序栈其他部分的风险
原文http://www.jdon.com/48441
上面是国外的一些,据我所知很多大公司都用Node.js只是没人出来讲而已,创业公司就更加数不胜数了。
调查一下,用Koa的公司来顶一下 这个帖子,7个月之前,统计Koa都很20家左右,所以整体来看,普及力度还不错的。
2016年3月份,kik是Azer写的模块,但Kik同时是手机通信录的社交软件,所以这个社交软件上就无耻的直接说让Azer把kik名字给他们,Azer不同意,他们就拿律师函恐吓,并让npm妥协,所以npm就妥协了
Azer一怒之下将自己在 npm 上的 273 个封包全部撤下,其中就包括 left-pad 封包。一石激起千层浪,依赖 left-pad 的上千个项目包括 babel 和 react-native 瞬间崩溃。大量开发者看着自己项目构建失败,顿时被吓尿。
观点
1)就没见过这么傻逼的公司,一个红包就能解决的事儿,非要用强权,如果对方在改模块上耗费心血少的话,转给你也没啥问题的。去年百度从我手里要走了一个模块,一个红包而已
2)11行代码要不要封装成一个包?
sindresorhus: Containing complexity is not about putting everything in one-line functions/modules.
你的模块必须含有一定的复杂性,不然就没啥意义了。
从我开始讲Node.js全栈大约是3月份,那是npm上是25.6万个吧,截止到年底是35万个,我想说的是那个包仓库都是有好有坏,按照80/20原则,数量是也是相当可观的。总比那些某些语言连包管理机制都不完善的要强吧!
If the version is less than 24 hours old, you can unpublish it. The package will be completely removed from the registry.
http://blog.npmjs.org/post/141905368000/changes-to-npms-unpublish-policy
2016年10月份, Facebook 和 Google 联手搞出 Yarn,你一个新的包管理器。一周之内,在github上star过万,现在已经21843个star了。
替换的原因
与hack npm限制的做法相反,Facebook编写了Yarn
Yarn, which promises to even give developers that don’t work at Facebook’s scale a major performance boost, still uses the npm registry and is essentially a drop-in replacement for the npm client.
很多人说和ruby的gem机制类似,都生成lockfile。确实是一个很不错的改进,在速度上有很大改进,配置cnpm等国内源来用,还是相当爽的。
https://blog.hospodarets.com/nodejs-debugging-in-chrome-devtools
要求
步骤
https://blog.hospodarets.com/nodejs-debugging-in-chrome-devtools
另外推荐一个electron包装的devtool,也非常好
https://github.com/Jam3/devtool
非常好用,babel等都大量应用
Flow 是一个新的开源JavaScript静态类型检查器给JavaScript增加了静态类型来提高开发人员的生产力和代码质量。特别是,静态类型提供了一些极大的助益,如前期错误检测,它可以帮助您避免某些种运行时故障;如代码的智能提示,这有助于代码维护、导航、转换和优化。
TypeScript是JavaScript类型(es6)的超集,它可以编译成纯JavaScript。可以在任何浏览器、任何计算机和任何操作系统上运行,并且是开源的。类型检查啊也是非常棒的。
由于大规模和深度js应用,导致js编写复杂性越来越高,而且又要多人合作,所以对于静态类型的需求会尤其大,flow相对更加轻量级,ts更加像一揽子解决方案。以我的观察,flow就是react这阵风带起来的,喜欢轻量级的可以考虑,长久来看,ts可能会有更大的发展潜力。我相信在2017年ts会有更好的成长,无论是前端,还是Node.js,都会大量应用。
这里加异步流程演进部分,目的是为了后面讲述框架变化做铺垫,同时异步流程控制也是Node.js非常核心的内容,是每个开发者都必须掌握的。
JavaScript流程控制的演进过程,分以下6部分:
看起来挺简单的,作为*js(沾边)工程师的各位自测一下,当前是哪个阶段?
我对异步流程控制的总结
我整理了一张图,更直观一些。
结论:Promise是必须会的,那你为什么不顺势而为呢?
推荐:使用Async函数 + Promise组合,如下图所示。
(跨平台Mac OS X、Windows和 Linux )
vsc的宣传语是:
一个运行于 Mac OS X、Windows和 Linux 之上的,针对于编写现代 Web 和云应用的跨平台源代码编辑器。
按它说的,vsc特别适合来作为前端开发编辑器。
内置html开发神器emmet(zencoding),对css及其相关编译型语言Less和Sass都有很好的支持。
当然,最nice的还是写js代码了,这也是我接下来要着重介绍的功能。
目前vsc已经开源了:
Node.js能干什么?
当Web Server接收到一个HTTP request的时候,它会以HTTP response的形式相应这个请求,也就是返回一个HTML页面, Web Server可以响应一个静态的HTTP页面,也可以转发或者代理请求到其他的服务端脚本引擎(CGI, JSP或者ASP、PHP、Node.js等等),然后返回一个动态的相应。不管以什么样的服务端技术, Web Server大多说情况都只是以HTML德形式返回一个HTTP响应。
根据Application Server的定义, Application Server是为客户端应用提供业务逻辑,它与客户端应用的交互可以通过多种协议,其中也包括HTTP协议, 一个Web Server主要是处理HTTP请求,发送HTML到浏览器,而Application Server为客户端应用提供了访问业务逻辑的接口。客户段应用可以像调用一个对象的方法一样调用这些业务逻辑。
apache、nginx等http server,主要提供静态http服务和反向代理
但有一个问题,如果你期望的文件要处理header或者其他变态请求,nginx就没法给你处理(nginx + lua也是可以,但比较麻烦),这是使用Node.js的server就会非常好用。
纯http来看,nginx和node能够的功能是非常类似的,我们做的最多的是nginx挡在node前面,所以很多人都不太清楚这个点。
使用Node.js处理静态资源,单机过亿次是轻轻松松的。
这就是我们大部分理解的Node.js作用。动不动就Express或Koa,连接数据库crud等
反向代理功能同nginx,这里不细讲,Node.js也有模块可以完成一样的功能,如果会Node.js比玩nginx要简单
比如淘宝基于Node的前后端分离
这里的Node.js服务
一般大型网站都会非常复杂,做个了很多版本升级、重构,那么必然会慢慢的向服务化靠拢,无论是SOA还是微服务,都会提供非常多的服务,而且各种协议都有,那么你的前端要怎么处理呢?
放到前端来说,肯定是不好的,所以比较合理的方式就是在服务和前端直接,增加Node.js作为代理。
我希望在2017年这个地方能够做的更好
Node.js从2009横空出世之后,至今已经7年有余,各种web框架也林林总总,目前大约在npm上有35万左右包,刨去前端和一些无意义的封装,也是有非常可观的优秀的模块的。其中web框架也是特别抢眼的,从早期的express到现在koa,对异步流程控制的改进前仆后继。随着移动端崛起面向api的框架hapi和restify也如火如荼,更有一些面向特性的框架,比如thinkjs对es6/es7/typescript支持,整体来说,质量都是非常不错的,算百花齐放,还是那句话,即使不优化,你也能用这些框架获得较高的性能。
很多人都争论这个问题,不同的leader也有不同的解决方案,那么,如何做框架选型呢?我总结了一下,大概有3个决定因素
无论如何,至少要有一个人能cover住,这是我选型的根本,框架再好,也不是给你设计的,所以难免会各有各种各样的问题,那么你就只有一个选择了
f**k = fork or fuck
要么fork了自己改,要么what the fuck。。。
在2017年,Node.js会往后端继续前进,如果能够把rpc服务组装部分做好,我觉得就非常好了。随着React、Vue、Typescript、Flow、Lerna、Webpack、Vscode等带动,Node.js一定会取得更辉煌的成绩!
Node.js 2016 回顾以及2017展望(转自 i5ting )
标签:重构 包管理 mode exp blog prot 大型 http服务 flags
原文地址:http://www.cnblogs.com/qinxingnet/p/6362767.html