Node.js学习笔记6【express--hello world】

来源:互联网 发布:淘宝客贴吧 编辑:程序博客网 时间:2024/06/05 19:24

准备工作

MVC(模型—视图—控制器)

l  模型是对象及其数据结构的实现,通常包含数据库操作

l  视图表示用户界面,在网站中通常就是HTML的组织结构

l  控制器用于处理用户请求和数据流、复杂模型,将输出传递给视图

我们称PHP/ASP/JSP为“模板为中心的架构”

特性

模板为中心架构

MVC架构

页面产生方式

执行并替换标签中的语句

由模板引擎生成HTML页面

路径解析

对应到文件系统

由控制器定义

数据访问

通过SQL语句查询或访问文件系统

对象关系模型

架构中心

脚本语言是静态HTTP服务器的扩展

静态服务器是脚本语言的补充

适用范围

小规模网站

大规模网站

学习难度

容易

较难

 

这两种架构都出自原始的CGI,但不同之处是前者走了一条粗话扩张的发展路线,由于易学易用,在几年前应用较广,而随着互联网的扩大,后者优势逐渐体现,目前已成为主流。

Node.js本质上和Perl工C++一样,都可以作为CGI扩展被调用,但它还可以跳过HTTP服务器,因为它本身就是。传统架构中的http服务器角色会由Apache NginxIIS之类的软件来担任,而Node.js不需要。Node.js提供了http模块,它是由C++实现的,性能可靠,可以直接应用到生产环境。

express框架

express(http://expressjs.com/)除了为http模块提供了更高层的接口外,还实现了许多功能:

  •  路由控制
  •   模板解析支持
  •   动态视图
  •   用户会话
  •  CSRF保护
  •   静态文件服务
  •   错误控制器
  •   访问日志
  •   缓存
  •   插件支持

需要指出的是,Express不是一个无所不包的一能框架,像Rails或Django那样实现了模板引擎甚至ORM。它只是一个轻量级的Web框架,多数功能只是对HTTP协议中常用操作的封装,更多的功能需要插件或者整合其他模块来完成。

下面用Express重新实现前面的例子:

var express =require(“express”);

var app =express.createServer();

app.use(express.bodyParser());

app.all('’,function(req,res){

     res.send(req.body.title+req.body.text)

});

app.listen(3000);

可以看到,我们不需要手动编写req的事件监听器了,只需要加载express.bodyParser()就能直接通过req.body获取POST的数据了。

快速开始

 

首先我们要安装Express。如果一个包是某个工程的依赖,那么我们需要在工程的目录下使用本地模式安装这个,如果要通过命令行调用这个包中的命令,则需要全局模式安装,因此按钮理说我们使用本地模式安装Express即可。但是Express像很多框架一样都提供了Quick Start工具,这个工具的功能通常是建立一个网站最小的基础框架,在此基础上完成开发。当然你可以完全自己动手,但我还是推荐使用工具更快速地建立网站。为了使用这个工具,我们需要全局模式安装Express,因为只有这样我们才能在命令中使用它。npminstall – g express (好像新版的安装不是这样的啦,我做实验时用的安装是npm install –g express-generator)


 

建立工程

通过以下命令建立网站基本结构.Express在初始化一个项目的时候需要指定模板引擎,默认支持Jade和ejs,为了降低学习难度我们推荐使用ejs,同时暂时不添加CSS引擎和会话支持。

express –t ejs  microblog (我做实验用时node v0.10.28,如果使用ejs则命名行中使用express –e )

启动服务器使用在microblog目录下npm start 在地址栏里输入http://127.0.0.1:3000可以在浏览器上看到Express welcome to express。百度了一下,网上有如下解释:http://www.myexception.cn/javascript/1663199.html

 

 

由Express创建的网站架构如下图:

 

 

这是一个典型的MVC架构,浏览器发起请求,由路由控制器接受,根据不同的路径定向到不同的控制器。控制器处理用户的具体请求,可能会访问数据库中的对象,即模型部分。控制器还要访问模板引擎,生成视图的HTML,最后再由控制器返回给浏览器完成一次请求

1 0