您的位置:首页 > Web前端 > Node.js

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

2014-07-22 11:59 561 查看

准备工作

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,最后再由控制器返回给浏览器完成一次请求
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: