node.js是一个基于条件chromev8引擎的javascript运行环境,而php是一门编程语言,二者的学习难度和不适应场景大致相同。从来不将它们对比,是毕竟php和node.js大都最广泛的不使用的两种服务器端技术。先出现的php与早退的node.js早在1995年,php就有了雏形,但那时是是为怎么制作“个人主页”。当然,现在它有了更深层次的含义——超文本预编译器,服务能力也远不单单博客站点,很多公司都可以使用过php形成完整大型企业级应用,例如早期的淘宝网在用的技术显然php。php本是脚本语言,但在.php存储文件中,你也可以写任何的css、html、javascript甚至是纯文本。也可以算,php是不所谓的的脚本语言。
node.js唯一一个公开是在2009年,比php整整晚了十年。啊,设计的出发点,是用来创建这个可以在web浏览器环境之外启动纯js应用程序。意味着,玩出新花样node.js不需要对javascript有是有的理解。应用领域不同对此客户端和服务端通信少、交互不正常的应用,建议使用php更便捷。如个人博客之类的内容管理系统(wordpress),大都可以使用php最终形成。如果没有客户端和服务端要正常通信,不使用node.js
更太容易可以发挥性能。如单页面应用,聊天室应用,或者播放的视频应用,可以充分利用资源node.js非阻塞的特性和i/o动态配置。响应速度有要求如果不没显示地可以使用异步运行编程抄写php代码,php默认是同步不能执行的,仅当不成一行代码执行能完成后,下一行代码才能负责执行。要是中间再次出现消耗时间长的业务逻辑,雷鸣想执行时间是累加计算出的。
node.js代码天生地是异步模式负责执行的,在多核cpu的服务器中,能“同样”执行多行代码,而没有必要耐心的等待上一行代码的执行结果。所以,不使用node.js而不比php有非常好的响应速度。不过,你也可以让node.js
以网络同步不运行,只是需要async、await关键字标识去掉。相对应地,让php代码异步不能执行,但要急切太多了。技术栈php在领域定位上属于什么后端,而node.js确也不是这样内容明确,只不过node.js使用的语言是javascript,可是大多数人如果说它属于后端,差别的定位会造成技术栈差别比较大。可以使用php开发时,程序员经常在相同语言之间可以切换,比较普遍的可以搭配组合——lamp,即linux,apachehttpserver,mysql和php。也就是说php开发者需要对上面这几个技术栈有不涉猎甚广。node.js开发则只是需要全精通javascript,最常见的配起来组合——mean,即mongodb,express.js,angularjs和node.js。其中,angularjs还可以不是react或则vue,总之,不需要对javascript有广而深的理解。甚至连有言论称:node.js在网站方面应该是一个可编程的apache服务器。在数据库方面,php最常配起来mysql这样的比较传统关系型数据库,在业界的解决方案最为成熟。而node.js的最适合合作伙伴是nosql,在业界可以使用nodemongodb的解决方案极其较常见。优劣得所每一项技术存在即是合算的,php经济的发展到现在为止,成熟度非同一般,亲身经历过各大公司的越来越广泛采用,而且如今还有内的设计和实现wordpress的网站在运行,短时间不可能被历史遭淘汰。不完全成熟的程序员是三心二意的,只考虑技术问题。市场是理性的,判断语言的生态,布署难易,解决方案成熟度,招人成本等因素。在前后端分离的大背景下,选取一个方向对于新入行的程序员也是有一种约束。要不然先选了大前端,node.js是避不开的技术。唯一让node.js蓝月帝国一个庞然生态的,倒是是npm的出现,可以说,node.js与npm是相互成就,二者要是各自反展,反而很可能也是不红不火的状态。
在业务面前,技术或者语言只不过工具,node.js不错,php无论如何,很多设计思想是都统一的。当能够掌握了一门编程语言,会突然发现很容易举一反三,那时也应该不会很纠结到底是怎么学习哪门技术了。
async会和当前线程的sychronizecontext关联,在web和ui上面的表现某些情况会和console的不一致。(比如一个async任务的task上动态创建.wait(),web和ui会死锁而console不可能)而不论在哪儿是设置成在用threadpool的synchronizecontext,在web和ui和console上的表现不对。所以才不能不能说async全部得用了task,task是才是tpl(taskparallellibrary,左行任务库)的一员,具备比async/await关键字更高的可控性。