MEAN和LAMP在编程的未来

LAMP的铁杆支持者注意了:MongoDB、ExpressJS、AngularJS和Node.js的灵活简单可不是开玩笑的

Thinkstock.

从尖端的好奇心到实用的工作机器的转变并不是很多技术都能做到的。昨天那些早熟的新贵们常常无法实现他们的0.1版本承诺——对于那些组成缩写为MEAN堆栈的技术来说就不是这样了。

这只是一个几年前的MongoDB,Express.js,AngularJS和Node.js的是提高自己的眉毛。现在,他们已经长大了,拉帮结派,和他们一起在做严肃的工作,从浩瀚的LAMP阵营挖走了不小的一些开发商。但是,究竟怎样完成这个新奇的东西MEAN叠起来反对LAMP?当它更好的选择经过充分测试的,成熟的灯在JavaScript为中心的技术,这种暴发户收藏?

答案是,当简单和常见的结构,使您的生活更轻松。MongoDB中提供用于存储数据的更灵活的,可容纳层。Node.js的提供运行的服务器更好的关系,而Express.js帮助标准化如何建立自己的网站。在客户端,AngularJS提供加入互动功能和AJAX驱动组件丰富的清洁方式。把它们放在一起,他们做一个干净的,一致的机制,从用户移动数据到磁盘的农场,然后再返回。

然而,真正的解释更为深刻。在这里,我们提供了9个理由,让MEAN在你的下一个项目中有机会。并不是每个人都有时间或预算在最新、最时髦的框架中抛弃旧的代码,也不应该抛弃像Apache、MySQL或PHP这样经过战斗测试的工具的坚如磐石的可靠性。但对于那些可能受益于灵活性、简单性和性能的新项目,使用MEAN可能会让你的生活比你想象的更好。

MongoDB是为云而构建的

如果你的Web应用计划包括实现云计算中每个cpu的便士的承诺,MEAN堆栈在MongoDB中提供了一个引人注目的数据库层。这个现代数据库配备了自动分片和完整的集群支持,开箱即用。插入MongoDB,它就会扩展到您的服务器集群,提供故障转移支持和自动复制。考虑到应用程序可以轻松地在云中开发、测试和托管,几乎没有理由不考虑MongoDB作为你的下一个项目。

MySQL的结构限制(和高估)

任何开发或维护过基于lamp的应用程序的人都知道,MySQL作为关系数据库的强大功能有时会让人感觉有点像坐牢。与所有关系数据库一样,MySQL强制您将数据推入表中。如果每一个条目都符合完全相同的格式,这不是一个问题,但世界上有多少次会如此慷慨呢?如果两个人拥有相同的地址,但不是相同的账户呢?如果您希望地址有三行而不是两行呢?谁没有尝试过通过将太多数据塞进一个列来修复关系数据库呢?否则,您最终将添加另一列,表将无限增长。

另一方面,MongoDB提供了一种灵活得多的文档结构。想要添加一个新的个人信息到您的用户配置文件?只需将该字段添加到表单中,将其与JSON文档中的其余数据一起卷起来,并将其放入MongoDB集合中。这对于不断变化的项目和处理最终可能难以用表格形式约束的数据非常有用。

磁盘空间很便宜

关系数据库的重大发现之一是JOIN命令。使用JOIN,我们可以通过删除城市、州和邮政编码等重复字段来节省磁盘空间。通过将这些频繁访问和重复的数据存储在单独的表中(这些表可以通过JOIN包含在将来的结果中),我们可以保持数据库整洁和磁盘苗条。

但是join对于某些人来说很棘手,在RAM上也很困难,尽管通过join隔离和访问单独表中的数据仍然是一个好主意,但是现在磁盘驱动器以多tb为单位,因此不需要节省磁盘空间。空间是如此的便宜,以至于一些数据库设计人员最终将他们的数据去规范化,因为join太慢了。一旦这样做了,就不那么需要关系数据库了。为什么不使用MongoDB呢?

Node.js的简化了服务器层

在LAMP堆栈的不同层中导航可能是一场复杂的舞蹈,这需要您在不同语法的配置文件中进行调整。MEAN通过使用Node.js简化了这一点。

想要改变应用程序路由请求的方式?添加一些JavaScript,让Node.js完成剩下的工作。想要更改用于回答查询的逻辑吗?也可以使用JavaScript。如果您想重写url或构造一个奇怪的映射,也可以使用JavaScript。MEAN栈对Node.js的依赖将这种管道全部放在一个地方,全部用一种语言,全部放在一堆逻辑中。您不需要重新阅读关于PHP、Apache以及添加到堆栈中的任何其他内容的手册页。虽然LAMP生成的所有配置文件都不同,但Node.js完全避免了这个问题。将所有内容都放在一个层中意味着更少的困惑和更少的由多个层之间的奇怪交互产生的奇怪bug的机会。

MEAN使得代码同构

简单性不会在服务器上使用JavaScript停止。通过去的意思是,你可以享受相同的JavaScript在客户端上,也留下了LAMP堆栈的客户机/服务器精神分裂症后面。如果您为节点编写代码,并决定它最好放在AngularJS,您可以通过轻松移动,并且几乎可以肯定的运行方式相同。这种灵活性使得编程基于均值应用显著容易。另外,如果你是人手一个项目,你并不需要寻找一个PHP专家,一个JavaScript专家,或前端和后端的专家。相反,它是整个堆叠中的所有的JavaScript。

JSON无处不在

AngularJS和MongoDB都使用JSON, Node.js和Express.js也是如此。数据在所有层之间整齐地流动,而不需要重写或重新格式化。MySQL回答查询的原生格式完全是它自己的。是的,PHP已经有了导入MySQL数据的代码,并使其易于在PHP中处理,但这对客户端层没有帮助。对于LAMP经验丰富的老手来说,这可能并不重要,因为有许多经过良好测试的库可以轻松转换数据,但这一切似乎都有点低效和令人困惑。MEAN对所有地方的数据使用相同的JSON格式,这使得它更简单,并节省了在经过每一层时重新格式化的时间。此外,JSON通过MEAN堆栈的普遍性使得使用外部api变得更加容易:GET、操作、呈现、POST和存储都使用一种格式。

Node.js的是超快

阿帕奇是伟大的,但这些天,Node.js的常常是直率的速度更快。一些人基准测试表明Node.js的提供了更好的性能,同时做得更多。也许这是代码时代。也许Node.js事件驱动架构更快。没关系。这些天,尤其是在不耐烦的移动设备用户中,将应用的性能降低哪怕是几毫秒都很重要,而Node.js可以做到这一点,同时提供了一种图灵完备的机制来重新编程。

深度的问题

PHP爱好者喜欢抱住了为像WordPress或Drupal的主导平台,内置的代码的大图书馆。他们有充分的理由感到自豪,但他们的优势正在消失的Node.js的赶上。

Node.js包管理器,NPM,使得它更容易共享代码,以及公众资源库瞄准的Node.js正在迅速增长。虽然PHP的人群可以在这个时刻引领,未来可能有利于Node.js的此外,任职者往往被证明是在转移的趋势面前脆。每次尝试用新版本手段的现代化盘踞平台一样的Drupal有更多的开发商可能是让他们的眼光投向了周围Node.js的建立更新,更灵活的平台上徘徊

AngularJS是新鲜

将“MEAN”中的“A”与LAMP堆栈中的任何东西进行比较是不完全公平的,因为LAMP不包括模拟值。如果你想在客户端做点什么,那就得靠自己了。当然,有很多很好的基于php的框架可以与MySQL一起工作,但每个框架都有一点不同,并朝着自己的方向发展。例如,WordPress、Joomla和Drupal提供了不同的策略,很难在它们之间切换,更不用说将代码从一个移植到另一个了。涂抹一个客户端框架可以增加一致性和稳定性。

AngularJS是由拥有20年构建Web应用经验的人构建的,这一点也很有帮助。他们非常了解HTML和CSS的设计工作。他们还想出了如何添加一点JavaScript来扫描HTML。AngularJS的设计者考虑了人类擅长什么,然后定制了JavaScript以支持人类。模板系统和逻辑层比我们以前看到的要干净得多,部分原因是团队找到了更简单的方法,利用JavaScript的本地功能来猜测您在做什么。

混合和匹配

当然,如果你真的很挑剔,没有理由你不能把它混合一点。很多开发人员在Apache和PHP中使用MongoDB,而其他人则更喜欢在Node.js中使用MySQL。AngularJS在任何服务器上都能很好地工作,即使是运行PHP从MySQL传送数据的服务器。你不需要成为缩略语的奴隶。

相关文章

这篇文章“MEAN vs. LAMP for the future of programming”最初是由信息世界

加入网络世界社区足球竞猜app软件脸谱网LinkedIn评论是最重要的主题。

版权©2015足球竞彩网下载

工资调查:结果在