Page 87 - Node.js开发指南
P. 87
80 第 5 章 使用 Node.js 进行 Web 开发
阅读到这一章为止,你已经学习了许多知识,但还缺乏实战性的内容。本章,我们打算
从零开始用 Node.js 实现一个微博系统,功能包括路由控制、页面模板、数据库访问、用户
注册、登录、用户会话等内容。
我们会介绍 Express 框架、MVC 设计模式、ejs 模板引擎以及 MongoDB 数据库的操作。
通过实战演练,你将会了解到网站开发的基本方法。本章涉及的代码较多,所有的代码均可
以在www.byvoid.com/project/node找到,但你最好还是亲自输入这些代码。现在就让我们开
始一起动手来实现一个微博网站吧。
5.1 准备工作
在开始动手之前,我们首先要大致知道 Node.js 实现网站的工作原理。Node.js 和 PHP、
Perl、ASP、JSP 一样,目的都是实现动态网页,也就是说由服务器动态生成 HTML 页面。
之所以要这么做,是因为静态 HTML 的可扩展性非常有限,无法与用户有效交互。同时如
果有大量相似的内容,例如产品介绍页面,那么1000个产品就要1000个静态的 HTML 页面,
维护这1000个页面简直是一场灾难,因此动态生成 HTML 页面的技术应运而生。
①
最早实现动态网页的方法是使用Perl 和 CGI。在 Perl 程序中输出 HTML 内容,由 HTTP
服务器调用 Perl 程序,将结果返回给客户端。这种方式在互联网刚刚兴起的 20 世纪 90 年代
非常流行,几乎所有的动态网页都是这么做的。但问题在于如果 HTML 内容比较多,维护
非常不方便。大概在 2000 年左右,以 ASP、PHP、JSP 的为代表的以模板为基础的语言出现
了,这种语言的使用方法与 CGI 相反,是在以 HTML 为主的模板中插入程序代码 。这种方
②
式在2002年前后非常流行,但它的问题是页面和程序逻辑紧密耦合,任何一个网站规模变大
以后,都会遇到结构混乱,难以处理的问题。为了解决这种问题,以 MVC 架构为基础的平
台逐渐兴起,著名的 Ruby on Rails、Django、Zend Framework 都是基于 MVC 架构的。
MVC (Model-View-Controller,模型视图控制器)是一种软件的设计模式,它最早是
由 20 世纪 70 年代的 Smalltalk 语言提出的,即把一个复杂的软件工程分解为三个层面:模
型、视图和控制器。
模型是对象及其数据结构的实现,通常包含数据库操作。
视图表示用户界面,在网站中通常就是 HTML 的组织结构。
控制器用于处理用户请求和数据流、复杂模型,将输出传递给视图。
我们称 PHP、ASP、JSP 为“模板为中心的架构”,表 5-1 是两种Web开发架构的一个
对比。
——————————
① 是C++,任何语言都可以,Perl只是最常见的。
② 例如 ASP 的 <% %> 和 PHP 的 <?php ?> 标签,在这些标签内添加处理代码。