`
star65225692
  • 浏览: 273346 次
  • 性别: 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成为主流的编程语言?

分享到:
评论

相关推荐

    Lava Lamp 0.2.0 JavaScript 导航条

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

    JavaScript全能终结版分页-Pager

    具体请见Demo 支持HTML,apsx,jsp,php,Ajax,javascript等分页 支持模式Link:Content.aspx?pageIndex=1&pageSize=10...Content.aspx?...支持模式Javascript:Javascript:setMyPager(index,pageSize);

    JavaScript学习帮助文档_JavaScript学习帮助文档_javascript_

    这意味着在编写代码时,无需提前声明变量的类型,变量可以在运行时改变其数据类型。JavaScript的主要结构包括语句(如if...else、for、while等)、函数(自定义可重复使用的代码块)和控制流(用于决定程序执行顺序...

    javaScript经典实例

    描述中提到“内容丰富”,意味着这个压缩包可能包含了各种类型的JavaScript应用场景,包括但不限于DOM操作、事件处理、动画效果、表单验证、AJAX请求、JSON处理、函数与闭包、对象与原型链、异步编程、模块化、以及...

    Dart VS JavaScript上篇:JavaScript的历史包袱.docx

    JavaScript 作为一门脚本语言,具有悠久的历史,自 Netscape 时代起步,逐步壮大,直到 AJAX 的兴起,JavaScript 成为网络应用的核心语言。然而,JavaScript 同时也存在许多问题,如性能不高、代码冗长、缺乏严格的...

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

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

    JavaScript入门教程_适合初学者

    弱类型意味着变量在声明时无需指定数据类型,这使得代码更加灵活但同时也可能导致一些难以预料的错误。基于原型的特性则意味着对象可以继承自其他对象,形成了一个可扩展的对象层次结构。 JavaScript主要应用于...

    JavaScript犀牛书电子版

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

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

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

    Javascript Obfuscator代码混淆

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

    JavaScript 帮助 学习 文档

    了解高阶函数(如map、reduce、filter)、函数作为一等公民(意味着函数可以作为其他函数的参数,也可以作为返回值)以及函数组合的概念,能够提高代码的可读性和可维护性。 事件处理是JavaScript与用户交互的关键...

    javascript变量作用域

    JavaScript 还没有块级作用域,这意味着在 if 语句、for 循环、while 循环等语句块中定义的变量,在整个函数体内都是可见的,而不是只在语句块中可见。 在 JavaScript 中,函数中声明的变量在整个函数中都有定义。...

    犀牛JavaScript第5版下

    JavaScript支持动态数据类型,这意味着一个变量可以存储不同类型的数据。书中详细解释了基本数据类型(如字符串、数字、布尔值)和复杂数据类型(如对象和数组),以及如何声明和使用变量。此外,作用域规则决定了...

    javascript课件

    它强调的是"常用"和"1500个前端开发javascript特效",这意味着这些课件会涵盖JavaScript在网页特效、用户交互以及前端框架中的应用。 前端开发中的JavaScript特效通常包括以下内容: 1. 动画效果:JavaScript可以...

    Javascript语言参考大全

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

    Iroh是JavaScript的动态代码分析工具

    在标签中提到的"JavaScript开发-其它杂项",可能意味着Iroh是一个专为JavaScript开发设计的独特工具,它可能包含了非标准的或特定场景下的功能,这些功能在其他常规开发工具中可能并不常见。 在压缩包中的文件名...

    Javascript程序设计教程

    JavaScript支持基于原型的面向对象编程,这意味着对象可以直接继承其他对象的属性和方法。随着ES6的引入,类的概念也被引入,提供了更接近传统面向对象编程的语法。 事件处理是JavaScript在网页交互中的关键部分。...

    javascript核心

    4. **函数**:深入探讨函数的定义、作用域、参数、返回值,以及函数作为一等公民的角色,这意味着函数可以被赋值给变量、作为参数传递给其他函数,也可以作为其他函数的返回值。 5. **数组**:讲解了数组的创建、...

    javascript试题(附答案)

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

    javascript

    在JavaScript中,函数是“一等公民”,意味着它们可以作为变量存储,作为参数传递,甚至作为其他函数的返回值。函数的定义可以立即执行,也可以赋值给变量。预编译阶段,JavaScript会解析所有的函数定义,这导致了...

Global site tag (gtag.js) - Google Analytics