Page 88 - Node.js开发指南
P. 88

5.1  准备工作    81


                                              表5-1  Web 开发架构对比
                                                                                                      1
                    特  性                   模板为中心架构                            MVC  架构
                  页面产生方式            执行并替换标签中的语句                      由模板引擎生成 HTML 页面
                  路径解析              对应到文件系统                          由控制器定义
                                               ①
                  数据访问              通过 SQL 语句查询或访问文件系统               对象关系模型                           2
                  架构中心              脚本语言是静态 HTTP 服务器的扩展              静态 HTTP 服务器是脚本语言的补充
                  适用范围              小规模网站                            大规模网站
                  学习难度              容易                               较难
                                                                                                      3
                   这两种架构都出自原始的 CGI,但不同之处是前者走了一条粗放扩张的发展路线,由于
               易学易用,在几年前应用较广,而随着互联网规模的扩大,后者优势逐渐体现,目前已经成
               为主流。                                                                                   4
                   Node.js 本质上和 Perl 或 C++ 一样,都可以作为 CGI 扩展被调用,但它还可以跳过 HTTP
               服务器,因为它本身就是。传统的架构中 HTTP 服务器的角色会由 Apache、Nginx、IIS 之类
               的软件来担任,而 Node.js 不需要 。Node.js 提供了 http 模块,它是由 C++ 实现的,性能
                                              ②
               可靠,可以直接应用到生产环境。图5-1 是一个简单的架构示意图。                                                       5





                                                                                                      6





                                                                                                      7




                                            图5-1  Node.js 与 PHP架构的对比                                  8

                   Node.js 和其他的语言相比的另一个显著区别,在于它的原始封装程度较低。例如 PHP 中
               你可以访问 $_REQUEST 获取客户端的 POST 或 GET 请求,通常不需要直接处理 HTTP 协
                                                                                                      9

               ——————————
                  ① 例如 http://example.com/hello/world.php 对应服务器上的 /hello/world.php 这个文件。当然这不是绝对的,现在很多
                     PHP开发框架都是只提供单个入口,利用服务器的 Rewrite 支持实现了路径的自由控制。我们一般情况下指的是
                     原生的(或默认的)支持。                                                                     10
                  ② 或者说不是必要的,因为你也可以把 Node.js 的服务器当作 Apache 或 Nginx 后端。
   83   84   85   86   87   88   89   90   91   92   93