首页 » 网站建设 » thinkjs和php衔接技巧_Nodejs的初步理解及框架选择

thinkjs和php衔接技巧_Nodejs的初步理解及框架选择

访客 2024-12-08 0

扫一扫用手机浏览

文章目录 [+]

序言

node为前端带来更多可能

thinkjs和php衔接技巧_Nodejs的初步理解及框架选择

这句话跟我目前的出境特殊应景,企业老板不重视后端,每次项目都是后端拖后腿。
node.js的存在为我的想法供应了可能。
09年node.js横空出世,Node为办理后端并发而生,但却无心插柳,成为大前真个基石。
伴随大前真个发展,Node也发展得越来越好,越来越主要,其运用处景从脚手架、赞助前端开拓(比如SSR、PWA等)的快速开拓实践,到API中间层、代理层,到专业的后端开拓都有非常成熟的履历。
其余,前端越来越繁芜,后端做事化,今日的前端要面临更多的寻衅,Node全栈给前端更多可能。

thinkjs和php衔接技巧_Nodejs的初步理解及框架选择
(图片来自网络侵删)

在我17年刚开始演习,node.js刚好进入Node8时期,同时这个版本也是一个LTS,除了性能提升之外,同时支持了ES6、ES7以及HTTP2(紧张优点多路复用、做事端推送)。

企业级Web开拓

Node根本框架除了运用最广泛的主流Web框架Koa外,Fastify也是一贯劲敌,作者MatteoCollina是Node.js核心开拓,Stream掌门,性能优化专家。
Fastify基于Schema优化,对性能提升极其明显。
最常用的三种框架如下:

Egg.js

阿里开源的企业级Node.js框架Egg发布2.0,基于Koa2.x,异步办理方案直接基于AsyncFunction。
框架层优化不含Node8带来的提升外,带来30%旁边的性能提升。
Egg采取的是『微内核+插件+上层框架』模式,对付定制,生态,快速开拓有明显提升,其余值得关注的是稳定性和安全上,也是极为出色的。

Nest

Nest是基于TypeScript和Express的企业级Web框架。
很多人开玩笑说,Nest是最像Java开拓办法的,确实,Nest采取TypeScript作为底层措辞,TypeScript是ES6超集,对类型支持,面向工具,Decorator(类似于Java里表明Annotation)等支持。
在写法上,保持Java开拓者的习气,能够吸引更多人快速上手。
TypeScript支持险些是目前所有NodeWeb框架都要做的头等大事,尤其是17年Nest算首个有名项目,在这里值得一提。

ThinkJS

ThinkJS是一款拥抱未来的Node.jsWeb框架,致力于集成项目最佳实践,规范项目让企业级团队开拓变得更加大略,更加高效。
秉承简洁易用的设计原则,在保持出色的性能和至简的代码同时,看重开拓体验和易用性,为WEB运用开拓供应强有力的支持。
ThinkJS是国产老牌Web框架,在2017年10月发布v3版本,基于Koa内核,在性能和开拓体验上有更好的提升。

整体来看,Node.js在企业Web开拓领域日渐成熟,无论微做事,还是Api中间层都得到了非常好的落地。
2017年,唯一遗憾的是Node.js在servless上表现的不太好,干系框架实践偏少。

Api中间层

前端越来越繁芜,后端做事化,今日的前端要面临更多的寻衅。
一个范例的场景便是在做事化架构里,前端面临的最头痛的问题是异构API,前后端联调的时候,多个后端相互推诿,要么拖慢上线进度,要么让前端性能变得极其慢。
进度慢找前端,性能差也找前端,但这个锅真的该前端来背么?

Node.js的Api中间层运用很好地办理了这个问题。
后端不想改的时候,实在弗成就前端自己做,更灵巧,更能应变(就像我现在,自给自足,丰衣足食)。

• 透传接口,对付内网或者非安全接口,可以采取中间层透传。

• 聚合接口,对异构API处理非常方便,如果能够梳理model,应变更随意马虎。

• Mock接口,通过Mock接口,供应前端开拓效率,对流程优化效果极其明显。
比如极客韶光上公布的去哪儿开拓的yapi便是专门办理这个问题的。
除此之外,前端如果想做一些技能驱动的事儿,SSR(做事器端渲染)和PWA(渐进式Web运用)也是非常不错的选择。

不是Node弗成,而是你不会用

这句话便是想说给那些不会node而不谢绝学习前端新技能的同学的。
前几年不说,从17年至今,Node.js从8.0发展到现在的11.9。
改进变革十分明显,比如:

• 比如Call back hell,现在可以通过Async函数办理。

• 比如作为过渡技能栈的thunk函数和generator,逐步的消逝在历史舞台。

• 比如Node是单进程非常薄弱,但是你真的支配对了么?

• 比如数据库事务问题,这是node的锅么?你用MongoDB玩不好,也要怪Node吗?

一样平常,后端开拓指的是Web运用开拓中和视图渲染无关的部分,但现在架构升级,Node承担了前后端分离重任之后,有了更多玩法。
从带视图的传统Web运用和面向Api接口运用,到通过RPC调用封装对数据库的操作,到供应前端Api代理和网关,做事组装等,统称为后端开拓,不再因此往只有和数据库打交道的部分才算后端,这样,就可以让前端工程师对开拓过程可控,更好的进行调优和性能优化。

对Node.js来说,一贯没有在后端取得其合理的霸占率。
缘故原由很大略:

利益分配,已有实现大多是Java或者其他措辞,基本是没法撼动的,重写的本钱是巨大的,其余,如果用Node写了,那么那些写Java的人怎么办?(我现在想用node纯粹想更换掉本团队的python,促进团队互助效率)抢人饭碗,这是要冒死的。
Node相对年轻,大家对Node的理解不足,回调和异步流程掌握略麻烦,很多架构师都不愿意花韶光去学习。
只管在Web运用部分处理起来非常大略高效,但在碰着问题时并不随意马虎排查定位,对开拓者水平哀求略高。
开拓者技能单一,很多是从前端转过来的,对数据库,架构方面知识欠缺,对系统设计也知之不多,这是很危险的,有种麻杆打狼两头害怕的觉得。
Node在科普、培训、布道等方面做的并不好,国外利用的非常多,海内却很少人知道,不如某些措辞做得好。

Node的优点:

• 前端实践,脚手架,工程化,快速开拓;

• API Proxy中间层实践,页面即做事观点;

• 面向企业开拓的Web框架;

• Node最新技能与性能调优。

Node框架

Web运用大致分2种,带视图的传统Web运用和面向API接口运用,而Node.jsWeb运用开拓框架的演进韶光线大致如下:

• 2010年Tj Holowaychuk写的Express。

• 2011年Derby.js开始开拓,8月5日,WalmartLabs的一位成员EranHammer提交了Hapi的第一次git记录。
Hapi原来是Postmile的一部分,并且最开始是基于Express构建的。
后来它发展本钱身自己的框架。

• 2012年1月21日,专注于Restapi的Restify发布1.0版本,同构的Meteor开始投入开拓,最像Rails的Sails也开始了开拓。

• 2013年Tj Holowaychuk开始玩ES6 Generator,编写co这个Generator实行器,并开始了Koa项目。
2013年下半年李成银开始ThinkJS,参考Think PHP。

• 2014年4月9日,Express发布4.0,进入4.x时期持续到本日,MEAN.js开始随着MEAN架构的提出开始开拓,意图大一统,其余Total.js开始起步,最像PHP里Laravel或Python里的Django或ASP.NETMVC的框架,代表着Node.js的成熟,开始从其他措辞里的成熟框架借鉴。

• 2015年8月22日,下一代Web框架Koa发布1.0,可以在Node.jsv0.12下面,通过co和generator实现同步逻辑,那时候co还是基于thunkfy的,在2015年10月30日,ThinkJS发布了首个基于Es2015+特性开拓的v2.0版本。

• 2016年09月,蚂蚁金服的Eggjs,在JS Conf China 2016上亮相并宣告开源。

• 2017年2月,下一代Web框架Koa发布v2.0正式版。

• 2017年10月,ThinkJS v3发布,基于Koa内核。

• 2017年12月,阿里巴巴开源Egg.jsv1,采取的是『微内核+插件+上层框架』模式。

• 2018年3月,阿里巴巴开源Egg.jsv2,全面支持async函数,性能提升30%以上。

框架的特性

Express

大略、实用,路由中间件等五脏俱全最著名的Web框架

Derby.js && Meteor

同构前后端都放到一起,模糊了开拓便捷,看上

Sails、Total

向其他措辞,Ruby、PHP等借鉴业界精良实现,也是 Node.js 成熟的一个标志

MEAN.js

面向架构类似于脚手架,又期望同构,结果只是蹭了热点

Hapi和Restfy

面向Api && 微做事 移动互联网时期Api的浸染被放大,故而独立分类。
尤其是对付微做事开拓更是利器

ThinkJS

面向新特性借鉴Think PHP,并逐步走出自己的一条路,对付Async函数等新特性支持,无出其右,新版v3.0是基于Koa v2.0的作为内核的

Koa

专注于异步流程改进下一代Web框架

Egg

基于Koa,在开拓上有极大便利企业级Web开拓框架

选择:个人学习求新,企业架构求稳,无非喜好与场景而已。

Node.js本来就为了做后端而设计的,这里我们再看看利益问题。
Node.js向后端延伸,一定会触动后端开拓的利益。
那么Proxy层的事儿,前后端抵牾的交界处,后端不想变,前端又求变,那么长此以往,API接口会变得越来越恶心。
后端是乐意把Api的事儿叫前真个,对后端来说,只要你不动我的数据库和做事就可以。

但是Node.js能不能做这部分呢?答案是能的,这个是Java、PHP类似的,一样平常是和数据库连接到一起,处理带有业务逻辑的。
目前海内大部分都因此Java、PHP等为主,以是要想吃到这部分并不随意马虎。

对付企业Web开拓来说,更重视稳定性和安全性,通过约定开拓办法,供应高效开拓效率。
目前Egg、Thinkjs、Nest这方面是先行者,目前新项目也将打算采取此类框架。

好:Flutter给予前端新活力

// 先看一段flutter代码感想熏染一下class ToolbarDemo extends StatelessWidget { @override Widget build(BuildContext context) { return new Scaffold( appBar: new AppBar( actions: <Widget>[ new IconButton( icon: new Icon(Icons.star), onPressed: _handleClickFavorite ), new IconButton( icon: new Icon(Icons.add), onPressed: _handleClickAdd ) ], ), body: new MovieDetailScreen(), ); } _handleClickFavorite() {} _ha// 将菜单项添加为App Bar的Actions。
这便是全部不须要再将图标导入成XML文件,不再须要重写回调。
并且只须要Widget上加一些小的Widgets就可以了。

Flutter的出身,最大的优点不是给予前端JS开拓者创造原生APP的机会,而是直接办理了兼容性问题(PS本日最大的新闻便是苹果撤销了FB的IOS企业开拓者证书),作为前端我将不再纠结于weex或者RN,而是直策应用flutter写重构原项目。

标签:

相关文章