根据Webstorm新建Express的项目结构,对Express各个模块间功能和文件夹合作进行分析。
参考文章:
https://www.jianshu.com/p/02273a225e3e
1.新建Express项目目录:
- bin:启动配置文件,在 www 里修改运行端口号
- node_modules:存放所有的项目依赖库,就像java存放架包
- public:用于存放静态资源文件 图片,CSS,JAVASCRIPT文件..
- routers:路由文件相当于springmvc中的Controller,ssh中的action
- views:存放页面的地方
- package.json:项目依赖配置及开发者信息。
- app.js:应用核心配置文件,项目入口。
2.app.js配置详解
可以参考文章:
http://www.cnblogs.com/fhen/p/5257467.html
https://blog.csdn.net/qq_31411389/article/details/54019267
// 1. 导入相关模块
var createError = require('http-errors'); //引用
var express = require('express'); //引用express
var path = require('path'); // 服务器路径
var cookieParser = require('cookie-parser'); //解析cookie
var bodyParser = require('body-parser'); // 解析request,respond参数
var logger = require('morgan'); //日志功能,需要手动配置
var indexRouter = require('./routes/index'); //注册路由的位置
var usersRouter = require('./routes/users');
// 2. 注册var app = express()
var app = express();
// 3. 使用app.set 设置 express 内部的一些参数
// view engine setup
app.set('views', path.join(__dirname, 'views')); //设置模板文件夹的路径
app.set('view engine', 'ejs'); //设置视图模板为ejs
// 4. 使用app.use 来注册函数,可以简单的认为是向task的数组进行push操作
app.use(logger('dev')); //设为开发模式 输出信息
app.use(express.json());
app.use(express.urlencoded({ extended: false }));
app.use(cookieParser());
app.use(bodyParser.urlencoded({ extended:false }))
app.use(express.static(path.join(__dirname, 'public'))); //静态资源文件夹为public
app.use('/', indexRouter); //设置url为 /引向index路由
app.use('/users', usersRouter); //设置url为 /user引向user路由
// catch 404 and forward to error handler 捕获404错误信息
app.use(function(req, res, next) {
next(createError(404));
});
// error handler 错误处理中间件
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');
});
module.exports = app;
3.routes(index.js和user.js)
这个主要是配置完app.js之后,如何使用,主要涉及路由级中间件的使用。
# 1. index.js
var express = require('express');
var router = express.Router();
/* GET home page. */
router.get('/', function(req, res, next) {
res.render('index', { title: 'Express' });
});
module.exports = router;
# 2. users.js
var express = require('express');
var router = express.Router();
/* GET users listing. */
router.get('/', function(req, res, next) {
res.send('respond with a resource');
});
module.exports = router;
4 . Express项目运行的总体的过程和逻辑大致可以分为三步:
综合上面知识,可以看出一个页面的运行过程和逻辑大致分为三步,路由中间件(index.js)的书写同时中间件的模板(index.ejs)要写好、最后由app.js配置和调用路由中间件。
1.app.js配置
var indexRouter = require('./routes/index'); //注册路由的位置
var usersRouter = require('./routes/users');
app.use('/', indexRouter); //设置url为 /引向index路由
app.use('/users', usersRouter); //设置url为 /user引向user路由
2.routes 调用路由级中间件
# 1. index.js
var express = require('express');
var router = express.Router();
/* GET home page. */
router.get('/', function(req, res, next) {
res.render('index', { title: 'Express' });
});
module.exports = router;
# 2. users.js
var express = require('express');
var router = express.Router();
/* GET users listing. */
router.get('/', function(req, res, next) {
res.send('respond with a resource');
});
module.exports = router;
3.views 模板渲染
# index.ejs 模板
<!DOCTYPE html>
<html>
<head>
<title><%= title %></title>
<link rel='stylesheet' href='/stylesheets/style.css' />
</head>
<body>
<h1><%= title %></h1>
<p>Welcome to <%= title %></p>
</body>
</html>
express框架学习笔记:
https://www.cnblogs.com/liujiale/p/6023367.html
https://blog.csdn.net/qq_31411389/article/category/6371088
http://www.cnblogs.com/ostrich-sunshine/p/6756147.html
http://www.cnblogs.com/ostrich-sunshine/p/7474471.html
http://www.cnblogs.com/ostrich-sunshine/category/977656.html