第2章-使用Express.js4创建Node.js的Web应用程序-2.4.手动创建Express.js4中的Hello World例子

这次我们不使用生成器、高级模块和中间件来搭建Express.js的应用。

一、手动创建流程

1.创建文件夹
2.NPM初始化和配置package.json
3.依赖声明
4.app.js文件
5.结合Jade
6.运行应用

二、创建文件夹

1.node_modules:Express.js和第三方模块的依赖都在这个目录下
2.views:Jade或者其他模板引擎文件
3.routes:包含请求处理程序的Node.js模块
4.db:MongoDB的种子数据和脚本
5.public:所有前端的静态文件,包括HTML、CSS、浏览器端的JavaScript和Stylus或者其他CSS框架文件

mkdir {public,public/css,public/img,public/js,db,views,views/includes,routes}

三、NPM添加项目中所有的元数据

手动创建package.json并书写内容,或者$npm init命令生成初始package.json文件,然后书写内容

安装模块并添加到package.json文件中。

$npm install <package-name> --save

如:$npm install express@4.13.0 --save

四、依赖声明 npm install

书写package.json文件内容并执行$npm install

{
  "name": "hello-world",//程序名称
  "version": "0.0.1",//程序版本
  "private": true,//私有的
  "scripts": {//脚本
    "start": "node app.js"//入口文件
  },
  "dependencies": {//依赖
    "express": "4.1.2",
    "jade": "1.3.1",
    "mongoskin": "1.4.1",
    "stylus": "0.44.0"
  }
}

命令$npm install执行完后,所有依赖模块都会安装到node_modules目录中
入口文件-“start”: node app.js指定了,

$node app.js
$node app
$node start

都可以启动他

如果我们给入口文件命名为index.js,那么可以执行$node 启动脚本

五、app.js文件

基于Express.js应用的主文件app.js一般由以下部分组成。
1.引入依赖
2.设置相关配置
3.连接数据库(可选)
4.定义中间件
5.定义路由
6.开启服务
7.在多核系统上启动cluster多核处理模块(可选)

===============华丽丽的分割线====================================
1.使用require()引入依赖

var express = require('express');
var http = require('http');
var path = require('path');

2.实例化对象(Express.js使用函数模式)

var app = express();

3.其中一种配置Express.js设置的方式是使用app.set(),使用键值对的形式
app.set('port', process.env.PORT || 3000);//服务器应该监听请求的端口号
app.set('views', path.join(__dirname, 'views'));//视图模板的绝对路径
app.set('view engine', 'jade');//模板文件的扩展,例如:jade、html

4.中间件是Express.js框架中的骨干部分,有两种生成方式:
4.1.由外部第三方的模块定义:例如:来自Connect/Express.js,body-parser:app.use(bodyParser.json());的bodyParser.json
4.2.由应用本身或他的模块所定义,例如:app.use(function(req,res,next){…});

中间件是用来组织和复用代码的一种方式,函数中只有三个参数:request、response和next.

5.路由一般会放在中间件的后面,但是有些也放在前面,如:错误处理
在Express.js中,定义路由的方式在辅助程序app.VERB(url,fn1,fn2,...,fn)中,
其中fn是用来处理请求的,
url是RegExp中的URL对象
VERB的值如下所示:
5.1.all:捕获每一个请求(所有方式的)
5.2.get:捕获GET请求
5.3.post:捕获POST请求
5.4.put:捕获PUT请求
5.5.del:捕获DELETE请求
(del和delete是别名:只要记住在JavaScript/ECMAScript中delete是一个有效的操作,这Node.js中也是一样。该操作会删除对象中的一个属性,例如:

delete books.nodeInAction)
app.all('*', function(req, res) {
  res.render('index', {msg: 'Welcome to the Practical Node.js!'})
})

函数res.render(viewName, data, callback(error, html))参数说明如下:(模板,数据,回调)
viewName:带有文件名扩展的模版名或者未设置扩展的模板引擎
data:一个由locals传递的可选对象,例如:在Jade中使用msg,我们需要有{msg:”…”}
callback:一个可选的函数,由错误或者HTML绘制完成后调用

res.render()不在Node.js的核心函数中,而是纯粹的Express.js函数,如果被调用,他会调用res.end()从而结束响应。
即在res.render()函数后面,中间件的链不会进行任何处理。

6.启动服务,由核心的http模块和他的createServer方法组成的。这个方法中,系统通过所有的设置和路由传递Express.js中的对象

http.createServer(app).listen(app.get('port'), function(){
  console.log('Express server listening on port ' + app.get('port'));
});

===============华丽丽的分割线====================================

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值