首页 > 编程知识 正文

php游戏框架,nodejs后端开发框架

时间:2023-05-03 13:45:00 阅读:26545 作者:182

来自: http://www.cn blogs.com/sandea/p/5894004.html

JavaScript这种语言的设计虽然受到很多人的诟病,但由于它占据了浏览器,使用方便而得到了广泛的普及。 此后,随着Node.js的出现,npm软件包管理带来的强大生态功能进一步增强。 (截至2017年3月,npm拥有43万个软件包。 但这引起了JS社区变态的快速反复,大家跟不上,框架太多,选择太多,让人眼花缭乱。

Node.js非常适合Web开发,但现在它已经成为一个大型项目,无论是单个站点还是Web App,都包含前端、数据库、业务模块和功能模块等许多不同的部分。 对于大中型团队来说,使用Node.js从零开始进行Web开发可能是可行的,但对于个人或小型团队来说则是不现实的。 此时,框架成为Web开发的利器,几乎是个人开发中不可缺少的。 那么,如何选择Node.jsWeb开发框架呢?

首先,我们必须明确的是,需要——

程序or框架?

程序是一个已经成形的APP应用程序,你需要的是可以为它建立环境,添加部署,然后运行; 框架是APP应用程序的框架,需要添加数据模型和业务逻辑。 成为APP应用程序,开始提供服务。

事实上,对于Web开发来说,程序和框架的区分越来越模糊。 例如,大多数女性都知道的Wordpress是博客程序,但丰富的插件和高级定制可以支持较大的二次开发,这一点与一些PHP框架毫不逊色。 我个人认为,如果重点是提供服务而不是掌握技术,有WordPress这样的程序就不需要使用框架了。

遗憾的是,由于Nodejs还年轻,目前没有WordPress这样的程序,所以在Node.js开发中,如果想创作自己想要的作品,框架是必然的选择。 如果是特定类型的APP应用程序,请尝试开源程序,例如使用Nodejs创建博客。 有Hexo和Ghost等。

Node.js Web框架有什么?

Node.js的Web框架分为API框架和web APP应用程序框架。 前者可以开发rest风格的API,后者也可以开发rest风格的API,但也包括模板、渲染等为前端准备的功能。

使用API框架的方案是为跨平台APP应用程序提供统一的数据模型,而渲染由前端/客户端自行解决。 现在有名的API框架是

restify (文档、Github、NPM ) )。

ActionHero.js (官方网站、Github、NPM ) )。

LoopBack (官方网站、Github、NPM ) )。

Frisby (官方网站、Github、NPM ) ) )。

Fortune.js (官方网站、Github、NPM ) )。

web APP应用程序框架顾名思义,是为创建web APP应用程序而开发的框架。 这里有两种风格的web APP应用框架。

一种是Sinatra风格,另一种是Rails风格。 Sinatra和Rails都是Ruby语言的Web框架,后者影响力更大更有名。 现在我来简单说明两种风格是什么意思。

Sinatra样式是高度可配置的,注重开发自由度。 典型的Nodejs Web框架如下:

Express (官网、Github、NPM ) TJ大神开发,Node.js官方推荐

hapi (官方网站、Github、NPM ) )。

koa.js (官方网站,Github,NPM ) )。

flaliron (官方网站、Github、NPM ) )。

total.js (官方网站、Github、NPM ) )。

locomotive (官方网站、Github、NPM )。

Rails样式是不重复自己和约定优于配置,并且严格按照MVC结构进行开发。 代表性的框架如下:

Sails.js (官方网站,Github,NPM ) )。

geddy (官方网站、Github、NPM ) )。

CompoundJS (官网、Github、NPM )原railswayjs

这两种风格无论孰优孰劣,都取决于使用者的喜好。

除了这两种Web框架外,还有更大的框架,即全栈框架,其代表是MEAN。

离子?

MEAN是指mongodbexpressangular.js node.js。 这一组合包括运行环境、数据库、Web框架和前端引擎。 称为“全堆栈框架”。 其中,除了Node.js以外,每个Node.js都是可替换的,从前端到后端,目标都是使用javascript创建web APP应用程序。

由于这个框架的完备性,被称为LAMP的后继者。 LAMP是PHP的典型运行环境,Linux Apache MySql PHP经常用于各种虚拟主机。

MEAN看起来很庞大,但实际上,要构建完整的现代化web APP应用程序,特别是单页面APP应用程序(SPA ),这些组件是不可缺少的,每个组件都是当前情况下的最佳选择,因此新的web APP应用程序但是,由于实际业务的独特性,很可能会将MongoDB替换为Mysql等组件,因此学习其原理和体系结构,构建自己的类MEAN框架也是一种选择。

作为个人和小团队

,全栈框架MEAN基本上足够了,但目前大多数全栈框架还包含一项特性,那就是实时,拥有实时功能的框架我们又称为实时框架。

实时框架好吗?

实时框架(Real-time framework)指包含了webSocket的双向通信功能,能够在服务器和客户端做到实时通信的框架。

服务端和客户端自由通信的需求一直都在,但由于HTTP协议本身的局限性,因此催生了Comet等变通的方法,但即使这样也离实时相距甚远。而当 Node.js兴起后,另一个HTML5技术webSocket也渐渐成熟,人们突然发现,实时通信一下子变得触手可及,于是webSocket技术在 Node.js中得到大量的应用,其中最为知名的模块就是socket.io,而各种全栈框架也纷纷加入实时特性来应对更广阔的开发需求。

目前有代表性的实时框架有:

Meteor(官网、Github、NPM)

MEAN.io(官网、Github、NPM)

Derby(官网、Github、NPM)

SocketStream(官网、Github、NPM)

不过说实话,目前能看到的实时通信的应用场景其实不多,其中大多集中于聊天室、to-do、实时图表、在线游戏等领域。其他领域使用实时特性不但没必要,而且是对服务器资源的浪费。因此目前是否要采用实时框架,要看具体的项目而定。

以上基本就是Node.js Web框架的现状了,相信看到这里,对于选择何种框架读者已经心里有数了吧。最后再介绍一个容易搞混的概念,和解释一下我的选择。

YEOMAN?

第一次见到这个词,我还以为它和MEAN有什么联系。事实上,它们是截然不同的两个东西。YEOMAN由YO(脚手架)、grunt(构建工具)、bower(包管理器),它代表的是一种工作流,与框架开发的思维方式完全不同。具体的介绍可见这里。

YEOMAN能够和框架达到类似的目的,都是为构建一个Web应用做好准备,但是要不要采用YEOMAN,则是见仁见智。我个人的看法是,学习 YEOMAN本身就需要不少时间,并且有一定的学习门槛。至少在目前,使用框架开发还是相对经济的,而如果以后YEOMAN这种模式推广开来,再来学习也 不迟,更何况有一定的Node.js项目经验之后再来学习YEOMAN要轻松很多。

事实上,我还是很认可YEOMAN这种Generator+package Manager的模式的,这是因为Node.js本身崇尚微模块的 概念,即无论是多么小的功能,都将它们模块化,甚至大的模块也要拆分成小的模块,然后通过搭积木的方式来构建应用。这样能够彻底的解耦,对于不容易调试的 Javascript来说,也有助于定位和修复应用中的问题。Generator就是这种理念催生下的产物,通过选择不同的配置和选项,将积木搭起来。不 过对于这种模式目前大家也还处于实验当中,不急于进行实际应用。

为什么我选择了Hackathon Starter?

在我的个人项目中,使用的是Hackathon Starter,一个Node.js Web应用脚手架。

我使用它的原因是,要求高度可配置,同时又讨厌写一些配置的代码,因此它对于我来说是很好的选择。一些全栈框架对我来说,封装过多,将原生的 Node.js/Express API隐藏掉了,要使用还需要一定的学习成本。而Express这样的框架又太过简洁,在实际的项目中使用还需要大量的插件和配置,而这些在 Hackathon Starter中都已经帮我们做好了,同时还有一些示例代码以供学习,对于新人来说非常友好,可以避免过多的挫折感。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。