如果你一直在关注互联网的相关技术,你应该会有这样一种感觉,web技术正在发生着变革,虽然我们不愿相信,但一个事实已经越来越清晰的摆在了眼前:LAMP组合的时代将要成为历史,在web诞生的二十年间,它影响了互联网上的内容、协议、服务器以及客户端,而在今天看来,它即将成为一个过去的时代了。

## I. 1991-1999: HTML时代

HTML时代的核心是文档,HTML的最初构想是用来提供大型、虚拟化的文档系统。当时的web页面是静态的,文件的代码需要手工编写,相应的web客户端的文档解析也非常粗糙。总之,在这个时代,服务器与客户端都是静态的。

## II. 2000-2009: LAMP时代

LAMP时代的核心是数据库。与文档时代相比,主导的web组合为LAMP或类似LAMP的架构,无论是CGI,PHP,Ruby on Rails,或者Django,其主要模式是用数据填充HTML模板,服务器端提供动态的内容,但客户端仍然是静态的。

## III. 2010-??: Javascript时代

Javascript时代的核心是事件流。现代的web页面已经不再是普通的页面了,它们通过改变内容提供基于事件驱动的应用。web的核心-DOM(文档对象模型)-仍然存在,但是它不再充当HTML标记,DOM是内存中Javascript生成的经过高效编码后的数据结构。

LAMP架构已死,因为一些web应用需要对加载标记(markup)到客户端的一个小小的事件而使服务器满负荷运行,这仅需要借助Javascript来更新DOM的一个片段而已。Ajax可以实现这点,但是当你的LAMP架构的服务器端HTML模板中仅包含10%的HTML和90%的Javascript时,很明显你的设计存在着问题。

要认识到这种改变,就意味着需要丢掉以前的思维和观念,请不要单纯的把服务器作为文件传送者(HTML时代),或者将服务器看作一个模板渲染器(LAMP时代),我们可以把它看作是提供功能或者数据装配的角色。服务器的主要作用就变为传送应用到客户端(Javascript),同时携带数据(JSON),并让客户端组织成一个DOM。

服务器的第二个角色就是监听事件流(一次修改,一条信息,或者股票的实时变化),并能高效的返回响应给客户端。

对于上面所提的两种角色来说,node.js提供了一种理想化的服务器端架构。由于我们可以在服务器端使用柯里化的Javascript函数,我们应该用Javascript来写,并且还可以容易的将一些服务器端的功能转移到客户端(比如,我们就不再需要实现两个自定义字符串格式的类库了)。

对于事件流的处理,node.js是比较理想的,其异步、非阻塞的架构就意味着速度很快。node.js在使用HTTP 1.1,保持连接打开的情况下,仅需一台普通服务器就能实现并发处理数千个连接。

最后,值得一提的是,事件是简单的数据包,以及JSON是web数据的通用语言,JSON可以保存股票分时线的即时数据,或者到达的消息,对于node.js来说,是原生就支持的。

Javascript时代带给我们的更像是一个网络,而不仅仅是一个全球性的数字图书馆,它更像一个全球性的数字神经系统,这种影响才刚刚开始。你是否也这样认为?

NodeJS与Javascript时代的更多相关文章

  1. 遇见NodeJS:JavaScript的贵人

    在大家的印象中,相当长一段时间里,JavaScript是一门脚本语言,一般不能成为某个项目的担纲主角,作用只是在浏览器里帮忙校验校验输入是不是正确,响应一下鼠标.键盘事件,或者让某个HTML元素动起来 ...

  2. NodeJS,JavaScript正在吞噬这个世界

    NodeJS,JavaScript正在吞噬这个世界 NodeJS,一个基于Google Chrome V8 JS引擎的服务器端JavaScript运行时,曾经被认识只是一个赶时髦的技术,有谁会想到,它 ...

  3. nodejs选择JavaScript作为开发语言,是因为一般的开发语言的标准库都是带有IO模块的,并且通常这个 模块是阻塞性的,所以nodejs选择了没有自带IO模块的Javascript

    Javascrip本身不带IO功能,nodejs选择JavaScript作为开发语言,是因为一般的开发语言的标准库都是带有IO模块的,并且通常这个 模块是阻塞性的,所以nodejs选择了没有自带IO模 ...

  4. nodejs与javascript中的aes加密

    简介 1.aes加密简单来说,在密码学中又称Rijndael加密法,是美国联邦政府采用的一种区块加密标准.这个标准用来替代原先的DES,已经被多方分析且广为全世界所使用.高级加密标准已然成为对称密钥加 ...

  5. nodeJs和JavaScript的异同(转)

    原文:https://blog.csdn.net/lazycode_cat/article/details/61916291 JavaScript组成:ECMAScript(定义这门语言的基础,比如语 ...

  6. nodeJs和JavaScript的异同

    JavaScript组成:ECMAScript(定义这门语言的基础,比如语法.数据类型.结构以及一些内置对象等).DOM(基于ECMASCRIPT,扩展出来的用于操作页面元素的方法).BOM(基于EC ...

  7. NodeJS & Dapr Javascript SDK 官方使用指南

    Dapr 是一个可移植的.事件驱动的运行时,它使任何开发人员能够轻松构建出弹性的.无状态和有状态的应用程序,并可运行在云平台或边缘计算中,它同时也支持多种编程语言和开发框架.Dapr 确保开发人员专注 ...

  8. nodejs,javascript过滤emoj表情

    1 前言 由于带emoj表情的昵称无法存储在mysql character_set_server= utf8模式下,按照参考文章[1],改成utf8mb4,无效(可能使用方法不对). 总体思路是,把昵 ...

  9. 【转】了解nodejs、javascript间的关系!bom&dom&ecmascript

    地址:https://www.cnblogs.com/JetpropelledSnake/p/9450810.html bom&dom:https://www.cnblogs.com/wang ...

随机推荐

  1. Maven项目结合POI导出Excl表格Demo-亲测可用

    Maven项目结合POI导出Excl表格 一.POM文件添加依赖 <!-- https://mvnrepository.com/artifact/org.apache.poi/poi --> ...

  2. Discuz常见小问题-如何设置为人工审核

    全局-注册与访问控制-人工审核    

  3. [原创-性能调优]借助AWR报告分析解决oracleCPU过高的问题

    简介:在oracle数据库中,有两个非常实用的自带监控工具EM(Enterprise Manager)和AWR(Automatic Workload Repository).其中,通过AWR报告可以生 ...

  4. 【转】web服务器工作原理

    一.静态网页的工作原理如下:A.用户在浏览器的地址栏输入要访问的地址并回车,触发这个浏览请求. B.浏览器将请求发送到Web服务器.C.Web服务器接受这个请求,并根据请求文件的后缀名判定是否为HTM ...

  5. 算法笔记_028:字符串转换成整数(Java)

    1 问题描述 输入一个由数字组成的字符串,请把它转换成整数并输出.例如,输入字符串“123”,输出整数123. 请写出一个函数实现该功能,不能使用库函数. 2 解决方案 解答本问题的基本思路:从左至右 ...

  6. js获取事件源及触发该事件的对象

    怎样获取事件源及触发该事件的对象,方法有非常多,js中能够通过event来实现.以下有个不错的演示样例,感兴趣的朋友能够參考下: function myfunction(event) { event ...

  7. IDEA中同窗口导入新的maven项目

    创建请看这个:http://www.cnblogs.com/oskyhg/p/6649266.html 下边开始导入: 完毕. 结果展示:

  8. android使用achartengine 实现折线图

    折线图的实现分为下边几个步骤: 1.第一步:数据的准备 XYMultipleSeriesDataset mDataset = new XYMultipleSeriesDataset(); XYSeri ...

  9. iOS-开发者相关的几种证书(转)

    分享一篇关于苹果开发者证书非常详细的解释. 哈哈,我太懒了,直接转发链接. iOS-开发者相关的几种证书

  10. 【LeetCode】81. Search in Rotated Sorted Array II (2 solutions)

    Search in Rotated Sorted Array II Follow up for "Search in Rotated Sorted Array":What if d ...