认识项目结构

之前就大概翻了一下node.js开发指南这本书,自己并没有真正的写过node.js的代码,这里回忆一下node.js的一些基础知识。
在blog项目下面主要有三个目录,public,routes以及views,public中存放的是一些css和图片等资源文件,views文件夹中存放在我们的页面模板文件,routes中存放在我们的源代码。
先来看看app.js,该文件是启动文件。
var express = require('express');
var path = require('path');
var favicon = require('serve-favicon');
var logger = require('morgan');
var cookieParser = require('cookie-parser');
var bodyParser = require('body-parser');
var routes = require('./routes/index');
var users = require('./routes/users');
这几行加载项目所依赖的模块。
node.js中以模块的形式组织代码的,可以简单的理解为一个文件就是一个模块,一个文件夹也可以作为一个模块。
如何创建模块?node.js提供了exports和require两个对象,exports为模块暴露接口,require从外部获取模块的接口。例如:创建文件module.js
var name;
exports.setName = function(thyName) {
name = thyName;
};
exports.sayHello = function() {
console.log('Hello ' + name);
};
在module.js同目录下创建getmodule.js文件
var myModule = require('./module');
myModule.setName('BYVoid');
myModule.sayHello();
在getmodule.js中可以通过require获取模块module,并调用模块module中通过exports暴露的接口。
//设置视图文件的根路径
app.set('views', path.join(__dirname, 'views'));
//设置项目的视图引擎
app.set('view engine', 'ejs');
//app.use 加载用于处理http請求的middleware(中间件),当一个请求来的时候,会依次被这些 middlewares处理。
app.use(logger('dev'));
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: false }));
app.use(cookieParser());
app.use(express.static(path.join(__dirname, 'public')));
//routes,users分别对应两个路由器,不同的请求连接被不同的路由器进行路由
app.use('/', routes);
app.use('/users', users);
我们先来看看routes
var express = require('express');
var router = express.Router();
router.get('/', function(req, res) {
res.render('index', { title: 'Express' });
});
module.exports = router;
如果请求问"/"那么交由路由route进行路由,路由route中根据请求的连接交由不同的函数进行处理,res.render('index', { title: 'Express' }),res.render(templateName, valueMap),进行模板渲染,在之前设置的视图根目录下面需要对应的视图模板,然后用值valueMap进行渲染,并将渲染之后的html页面返回给客户端。我们还可以直接往响应中输出字符串来响应客户的请求: res.send('respond with a resource');
var server = app.listen(app.get('port'), function() {
debug('Express server listening on port ' + server.address().port);
});
最后启动服务,并监听指定的端口,这样一个简易的web服务器就ok了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值