工程的结构文件
Express新建的microblog项目结构
1.app.js:项目入口及程序启动文件。 引入模块依赖, 模板引擎, 数据库引用等入口文件
2.package.json:存储着工程的信息及模块依赖,当在 dependencies 中添加依赖的模块时
3.node_modules:用来存放项目的依赖库, 存放安装的模块,当你在 package.json 添加依赖的模块并安装后,存放在这个文件夹下
4.public:存放用来存放静态文件( image、css、js)等文件
5.routes:路由控制器。
6.views:存放视图文件或者说模版文件 (MVC中的V), 相当于HTML页面
7.bin:项目的启动文件,存放可执行文件
8.models:数据模型(相当于MVC中的M)。
app.js 的配置说明
/* * @模块依赖 */ var express = require('express'); var path = require('path'); var favicon = require('serve-favicon'); var logger = require('morgan'); var cookieParser = require('cookie-parser');// 第三方中间件解析cookie, 可以在应用级加载, 也可以在路由级加载 var bodyParser = require('body-parser'); var partials = require('express-partials'); var session = require('express-session'); var MongoStore = require('connect-mongo')(session); var settings = require('./settings'); var flash = require('connect-flash'); /*设置路由*/ var index = require('./routes/index'); var users = require('./routes/users'); var app = express(); /* * @view engine setup 视图引擎设置 * @views 放模板文件的目录 * @view engine 模板引擎 */ app.set('views', path.join(__dirname, 'views')); app.set('view engine', 'ejs'); app.use(partials()); /* * @加载环境变量 */ // uncomment after placing your favicon in /public // app.use(favicon(path.join(__dirname, 'public', 'favicon.ico'))); app.use(logger('dev')); app.use(bodyParser.json()); app.use(bodyParser.urlencoded({ extended: false })); app.use(cookieParser()); // express.static 是express唯一内置的中间件, 基于serve-static, 负责在Express应用中提托管静态资源,每个应用可有多个静态目录 app.use(express.static(path.join(__dirname, 'public'))); app.use(flash()); // 数据库引用 app.use(session({ secret: settings.cookieSecret, store: new MongoStore({ // db: settings.db, url: 'mongodb://localhost/microblog', autoRemove: 'native' }) })); app.use(function(req, res, next){ // console.log("app.usr local"); res.locals.user = req.session.user; res.locals.post = req.session.post; var error = req.flash('error'); res.locals.error = error.length ? error : null; var success = req.flash('success'); res.locals.success = success.length ? success : null; next(); }); /* * @加载路由 */ app.use('/', index); app.use('/users', users); /* * @错误处理解决办法 */ // catch 404 and forward to error handler // 这是一个没有挂载路径的"常规404中间件", 应用的每个请求都会执行该中间件 app.use(function(req, res, next) { var err = new Error('Not Found'); err.status = 404; next(err); }); // error handler // 这是一个没有挂载路径的"错误处理中间件", 应用的每个请求都会执行该中间件 /* * 必须使用4个参数, 即使不需要next对象, 也必须声明它, 否则中间件会被识别为一个常规则中间件, 不能处理错误 */ app.use(function(err, req, res, next) { // set locals, only providing error in development res.locals.message = err.message; res.locals.error = req.app.get('env') === 'development' ? err : {}; // render the error page res.status(err.status || 500); res.render('error'); }); /* * @导出app对象 */ module.exports = app;
1.require() 用于在当前模块中加载和使用其他模块;此方法是模块的基础,使用中大概有路径的概念就行。PS:JS文件可以去掉".js"后缀
var express = require('express'); // js文件可以去除后缀.js var index = require('./routes/index');
2.express() 表示创建express应用程序
var app = express();
3.app.set(key, value) 是 Express 的参数设置工具,接受一个键(key)和一个值(value),可用的参数如下所示。
- views :视图文件的目录,存放模板文件。
- view engine :视图模板引擎。
- view options :全局视图参数对象。
- view cache :启用视图缓存。
- basepath :基础地址,通常用于 res.redirect() 跳转。
- strict routing :严格路径,启用后不会忽略路径末尾的“/ ”。
- jsonp callback:开启透明的 JSONP 支持。
- case sensitive routes:路径区分大小写。
/* * @view engine setup 视图引擎设置 * @views 放模板文件的目录 * @view engine 模板引擎 */ app.set('views', path.join(__dirname, 'views')); app.set('view engine', 'ejs');
4.app.use(path,callback) 加载执行, 使用中间件 function,可选参数path默认为"/"。使用 app.use() “定义的”中间件的顺序非常重要,它们将会顺序执行,use的先后顺序决定了中间件的优先级(经常有搞错顺序的时候);
/* * @加载路由 */ app.use('/', index); app.use('/users', users); // 数据库引用 app.use(session({ secret: settings.cookieSecret, store: new MongoStore({ // db: settings.db, url: 'mongodb://localhost/microblog', autoRemove: 'native' }) }));
5.app.render(view, [options], callback) 渲染 view, callback 用来处理返回的渲染后的字符串。
// 首页 router.get("/",function(req,res) { res.render("reg",{ title : "首页" }); });
6.app.listen() 给定的主机和端口上监听请求
app.listen('8808');
7.next函数主要负责将控制权交给下一个中间件,如果当前中间件没有终结请求,并且next没有被调用,那么请求将被挂起,后边定义的中间件将得不到被执行的机会。
/* * @错误处理解决办法 */ // catch 404 and forward to error handler // 这是一个没有挂载路径的"常规404中间件", 应用的每个请求都会执行该中间件 app.use(function(req, res, next) { var err = new Error('Not Found'); err.status = 404; next(err); });
相关文章
- java强制删文件夹_Java 删除文件夹 和 文件 集合
- python—whl文件介绍与安装
- Linux tftp命令:上传及下载文件
- Python读写LMDB文件「建议收藏」
- fat文件系统中,文件的物理结构_磁盘的文件系统结构
- python3 pickle_pickle文件是什么
- XSD文件结构详解
- mp3格式音频文件结构解析图_mp3文件结构
- JVM字节码学习笔记——class 文件结构
- (十)vuex 应用文件结构
- 【Java 虚拟机原理】Class 字节码二进制文件分析 二 ( 常量池位置 | 常量池结构 | tag | info[] | 完整分析字节码文件中的常量池二进制数据 )
- 【C 语言】文件操作 ( 学生管理系统 | 命令行接收数据填充结构体 | 结构体写出到文件中 | 查询文件中的结构体数据 )
- 浅析 Docker overlay2 文件结构
- Class类文件结构详解编程语言
- Linux快速移动文件的方法(linux怎么移动文件)
- 部署妙用Oracle TRM文件实现部署(oracletrm文件)
- Linux文件系统:存储结构分析(linux文件的存储结构)
- 深入Linux:探索文件系统结构(linux中文件结构)
- Linux实用技巧:轻松去除重复文件和内容(linux去掉重复)
- 如何在 Linux 中使用 C 语言拷贝文件(linuxc拷贝文件)
- 快速实现文件备份——Linux中如何复制目录及文件(linux复制目录及文件)
- MySQL中的FRM文件保存表结构的重要文件格式(mysql中frm文件)
- 高效实现ET文件导入Oracle系统(et文件导入oracle)
- 树型结构列出指定目录里所有文件的PHP类
- mssqlserver恢复ldf文件数据的方法
- 引入JS文件IE6报语法错误或缺少对象问题的解决方法
- Yii入门教程之目录结构、入口文件及路由设置
- thinkphp文件引用与分支结构用法实例