`
star65225692
  • 浏览: 275501 次
  • 性别: Icon_minigender_1
  • 来自: 上海
文章分类
社区版块
存档分类

Javascript的兴起是否意味着LAMP的终结

阅读更多

Metamarket的CTO Mike Driscoll最近发表了一篇略带煽动性的帖子,讨论了Web应用的架构。他认为Node.js等框架预示着LAMP的终结。

三个月前,我们决定废弃仪表盘选用的框架:Python的Django,并用Node.js(服务器端的Javascript)重新构建了框架。鉴于LAMP堆栈已经死亡,我们才做出了这个决定。

Mike认为Web有三个阶段:

  • 1991-1999:HTML时代——这是个文档的时代。
  • 2000-2009:LAMP时代——使用数据库的时代。
  • 2010-??:Javascript时代。Javascript时代是事件流的时代。

现代的Web页面已经不再是页面了,它们都是事件驱动的应用,信息会通过这些应用流转。

他解释道:

LAMP架构已经死了,因为对于响应里的Mashup,很少有应用愿意把全部的有效负载转移到很小的事件上去;他们只想用 Javascript更新DOM的一个片段。AJAX做到了这一点,但如果服务器端的LAMP模板有10%的HTML和90%的Javascript,这 么做显然是不对的……

Mike认为,服务器的主要作用就是带着数据(JSON)把应用发送到客户端(Javascript),并让客户端从中构造UI。服务器的次要作用则是监听处理事件的流,并有效地把响应推回客户端,这些事件可能是一次新的编辑、一条消息、或是Ticker发生了变化。英特尔在Android的重点

一些人对此发表了评论:

Bruce Atherton赞成Mike的观点,但他认为事件并不会通过HTTP来流转:

Websockets和SPDY将会接管这方面的处理,因为和HTTP相比,它们更合适这个任务。

Chase Sechrist已经在很多地方使用了Node.js,即便如此,他仍然列举了一些对Node.js的担忧:

你还需要知道一些高级知识,比如竞态条件的调试方法、事件循环的工作原理,甚至在递归回调导致栈溢出时,调用堆栈的处理方式。正因为如此,对那些写了二十年C的人、还有刚开始编程的初级工程师来说,控制流还是非常奇怪、令人费解的。人人

“Jorjun”指出,以现在的变化速度来看,即使Javascript这个新的架构是合理的,它也不会太持久:

两年之内会有一种更高效的方式对宝贵的IP进行编码。需要注意的是,新的方式正在出现,Java对它们没有任何意义——这些方式 在九十年代末还没有出现。Javascript的愚蠢名副其实。它有大括号、奇怪的Fudgery、极其恼人的Artefact,对我这样的老学究来 说,Javascript看起来轻率、讨厌、太复杂而容易混淆。女装品牌排行榜

NOLOH的联合创始人Asher Snyder认同帖子的前提条件:“Web应该、也正在转向事件。”但并不相信Javascript能引领方向。他认为“我们正在走向一个平台或统一语言的时代,因为只有平台或统一语言才能让快速开发真正处理好Web的疯狂”。

Subbu Allamaraju最近发布了Node.js和Play的一些性能对比数据,InfoQ和他简单讨论了一下:

就个人而言,我发现Node.js和Play等框架让Web开发人员觉得很兴奋,因为它们带来了一些新的思想。在Web框架领 域,特别是在Java端,这样的简单性已经很久违了。尤其是Play,它在Netty之上,而不是传统的Servlet框架,是一个很不错的选择。

Web应用架构的演进确实很快。由于Web应用变得越来越“厚重”,特别是在事件驱动的世界里,人们只能思考REST还剩下什么,看来我们要回到最 初开始的地方了。最近我们确实没怎么听说有关REST及其统一接口的消息,还有它怎样成功改变Web应用架构的相关内容。你对Web应用架构的未来持什么 观点呢?你怎么看Javascript成为主流的编程语言?

分享到:
评论

相关推荐

    LAMP兄弟连PPT--JavaScript高级

    LAMP兄弟连PPT--JavaScript高级

    Lava Lamp 0.2.0 JavaScript 导航条

    "Lava Lamp 0.2.0 JavaScript 导航条" 是一款基于jQuery库的动态导航菜单插件,其设计灵感来源于20世纪60年代流行的熔岩灯,因此得名。这款插件旨在为网站增添一种独特且吸引人的用户交互体验,通过滑动效果使导航条...

    JavaScript语言精粹完整版

    JavaScript是一种弱类型的语言,这意味着变量在声明时不需要指定类型,而类型是在运行时自动确定的。它支持基本数据类型如数字(Number)、字符串(String)、布尔值(Boolean)、空值(null)和未定义值(undefined),以及...

    JavaScript书籍(JavaScript从入门到精通(第2版).pdf+高性能JavaScript.pdf)

    最后,随着Node.js的兴起,JavaScript已经不再局限于浏览器,而是可以用于服务器端开发,实现了全栈开发的可能性。学习Node.js的模块系统、事件驱动的非阻塞I/O模型,以及如何使用npm(Node Package Manager)管理...

    JavaScript 语言精粹

    而将函数视为一等公民,意味着函数可以作为变量赋值、作为参数传递以及作为返回值,这是JavaScript实现高阶函数的基础。 书中会详细介绍JavaScript的数据类型,包括基本类型(如Undefined、Null、Boolean、Number和...

    JavaScript技术讲座

    JavaScript支持动态类型,意味着变量的类型可以在运行时改变,这为编程提供了灵活性,但也可能导致一些潜在的错误。 第三讲,JavaScript的程序构成讲解了如何组织代码,包括函数、循环、条件语句等控制流程,以及...

    轻轻松松学用javascript编程 、悟透JavaScript

    "悟透JavaScript"意味着要理解其内在机制,比如垃圾回收机制和执行上下文。JavaScript的垃圾回收是自动的,用于释放不再使用的内存。执行上下文分为全局上下文、函数上下文和块级上下文,理解它们对于正确处理变量...

    JavaScript犀牛书电子版

    1. **基础语法**:JavaScript是一种基于原型的动态类型语言,这意味着变量在声明时不需要指定数据类型,而是根据赋值自动确定。了解变量、常量、数据类型(如字符串、数字、布尔值、null、undefined、对象、数组和...

    Javascript Obfuscator代码混淆

    混淆(Obfuscation)这个术语来源于拉丁语,意味着“使迷惑”。在编程领域,它指的是将源代码转化为一种复杂、难以阅读的形式,同时保持代码的原始功能。JavaScript Obfuscator就是这样一个工具,它能够将清晰可读的...

    VS2015安装证书,JavaScript_ProjectSystem.msi,JavaScript_LanguageService.msi

    在这个场景中,我们关注的是VS2015的安装过程中涉及到的证书问题以及两个特定的组件:JavaScript_ProjectSystem.msi和JavaScript_LanguageService.msi。 首先,关于“VS2015安装证书”,这通常是指安装过程中需要...

    javaScript小游戏

    描述中的"简单易懂"可能意味着这些小游戏的代码结构清晰,适合初学者学习。JavaScript小游戏可以帮助开发者学习和巩固基础语法、事件处理、DOM操作、闭包、函数、对象和类等概念。通过实践,开发者可以更好地理解...

    JavaScript深入理解

    `typeof undefined` 返回的是 "undefined",但赋予变量undefined并不意味着清除变量,而是给变量添加了一个值为undefined的属性。 2. null:代表空或不存在的引用,它是一个特殊的值,表示有意为之的“无”。虽然`...

    JAVASCRIPT 面向对象编程精要

    JavaScript是一种基于原型的语言,这意味着它不像传统的面向对象语言(如Java或C++)那样拥有类的概念。在JavaScript中,对象是核心,一切都可以视为对象。JavaScript的对象是动态的,即可以在运行时添加或删除属性...

    JavaScript API

    其次,"W3C+Javascript.chm" 提到了W3C标准,这意味着它可能涵盖了W3C制定的JavaScript规范,包括ECMAScript标准和Web APIs。W3C是全球互联网标准的主要制定者,它的JavaScript规范对于确保代码的跨浏览器兼容性至关...

    Javascript语言参考大全

    变量在JavaScript中是松散类型的,意味着它们不需要预先声明类型,可以在运行时自动转换。例如,var myVar = "Hello"; 和 var myVar = 123; 都是合法的。此外,JavaScript还支持立即调用的函数表达式(IIFE),常...

    【原创】javascript 飞机 雷电 (未完成版)

    在描述中提到“读书的时候写的”,这可能意味着该游戏是作者在学习JavaScript的过程中作为练习或项目作业编写的。这种实践方式对于理解编程概念和提升编程技能非常有效。开发者通过实际操作,不仅可以巩固语法知识,...

    JavaScript函数式编程.pdf

    在JavaScript中,函数是一等公民,这意味着函数可以被赋值给变量、作为参数传递给其他函数以及作为其他函数的返回值。函数式编程强调纯函数(pure functions)和不可变性(immutability),纯函数指的是相同的输入...

    javascript版象棋

    【描述】提及,这个JavaScript版象棋实现了基本的游戏功能,意味着它能支持常见的象棋规则,如棋子的移动、吃子、将军、将死、和棋等。它是针对对战模式设计的,允许两位玩家在同一个界面上进行实时互动。然而,值得...

    JavaScript V2.0 参考大全第二版

    2. **基于原型的对象**:JavaScript的对象是基于原型的,这意味着对象可以继承自其他对象。这种继承机制使得创建和扩展对象变得非常简单。 3. **函数作为一等公民**:JavaScript将函数视为与其他数据类型(如数字和...

    javascript试题(附答案)

    JavaScript是一种广泛应用于网页和网络应用的编程语言,尤其在客户端脚本方面扮演着核心角色。这份"javascript试题(附答案)"是为初学者设计的,旨在帮助他们更好地理解和掌握JavaScript的基础知识。 一、变量与数据...

Global site tag (gtag.js) - Google Analytics