当前位置:   article > 正文

Express项目实践_express 项目

express 项目

一 建一个空目录

二 在地址栏删除文字,输入cmd 进入dos模式
 

express 项目名

如: express demo2

  1. demo2
  2. │ app.js
  3. │ package.json
  4. ├─bin
  5. │ www
  6. ├─public
  7. │ ├─images
  8. │ ├─javascripts
  9. │ └─stylesheets
  10. │ style.css
  11. ├─routes
  12. │ index.js
  13. │ users.js
  14. └─views
  15. error.jade
  16. index.jade
  17. layout.jade

  • app.js  应用的初始化文件,包括引入应用程序的基础依赖项、设置视图即view的引擎目录以及模板、设置静态资源路径、配置通用的中间件、引入路由和一些错误处理中间件等。
  • package.json  应用的配置文件,文件内包含程序的基础信息、启动脚本和依赖包等。
  • bin/www  应用的启动文件,文件内包含引用要启动的应用、设置应用监听的端口和启动http服务等。
  • public/**  应用的静态资源文件目录,该目录下的文件资源不需要经过文件映射就可以直接访问。
  • routes/**  应用的路由文件,这些路由文件中设置的接口最终会以指定的HTTP请求方式暴露给用户,并在用户请求之后将结果返回。
  • views  应用的视图文件,在app.js中设置好视图引擎和模板之后,该目录即为应用视图的根目录,然后路由文件就会根据app.js中的设置加载并渲染该目录下的视图文件。



 

附:

安装这里后会有3个选项,先不管,看一下:

打开项目:cd demo2

安装:npm install

启动项目:npm start

目录结构:

bin: 用于应用启动,可在里面设置启动的端口号等。

/public: 静态资源目录

/routes:可以认为是controller(控制器)目录,路由。

/views: jade模板目录,可以认为是view(视图)目录

www文件详解

以下是添加了注释后的应用启动文件bin/www中的代码:

  1. #!/usr/bin/env node
  2. // 引入依赖
  3. var app = require('../app');
  4. var debug = require('debug')('express:server');
  5. var http = require('http');
  6. // 设置应用监听的端口
  7. var port = normalizePort(process.env.PORT || '3000');
  8. app.set('port', port);
  9. // 创建http服务器
  10. var server = http.createServer(app);
  11. // 监听端口
  12. server.listen(port);
  13. server.on('error', onError);
  14. server.on('listening', onListening);
  15. // 格式化应用监听的端口
  16. function normalizePort(val) {
  17. var port = parseInt(val, 10);
  18. if (isNaN(port)) {
  19. // named pipe
  20. return val;
  21. }
  22. if (port >= 0) {
  23. // port number
  24. return port;
  25. }
  26. return false;
  27. }
  28. // http的错误监听函数
  29. function onError(error) {
  30. if (error.syscall !== 'listen') {
  31. throw error;
  32. }
  33. var bind = typeof port === 'string'
  34. ? 'Pipe ' + port
  35. : 'Port ' + port;
  36. // handle specific listen errors with friendly messages
  37. switch (error.code) {
  38. case 'EACCES':
  39. console.error(bind + ' requires elevated privileges');
  40. process.exit(1);
  41. break;
  42. case 'EADDRINUSE':
  43. console.error(bind + ' is already in use');
  44. process.exit(1);
  45. break;
  46. default:
  47. throw error;
  48. }
  49. }
  50. // http端口监听函数
  51. function onListening() {
  52. var addr = server.address();
  53. var bind = typeof addr === 'string'
  54. ? 'pipe ' + addr
  55. : 'port ' + addr.port;
  56. debug('Listening on ' + bind);
  57. }

bin/wwww文件的内容就很简单了,就是创建HTTP服务,监听端口和错误。

2 安装依赖

npm install

3 启动项目

npm start

文件详解

app.js文件详解

以下是初始化的Express应用中的已经做了一些注释说明后的app.js文件中的代码:

  1. // 引入依赖包
  2. var createError = require('http-errors');
  3. var express = require('express');
  4. var path = require('path');
  5. var cookieParser = require('cookie-parser');
  6. var logger = require('morgan');
  7. // 引入路由文件
  8. var indexRouter = require('./routes/index');
  9. var usersRouter = require('./routes/users');
  10. // 创建应用实例
  11. var app = express();
  12. // 设置视图目录和模板引擎
  13. app.set('views', path.join(__dirname, 'views'));
  14. app.set('view engine', 'jade');
  15. // 以下皆为注册中间件
  16. // 内置中间件
  17. app.use(logger('dev'));
  18. app.use(express.json());
  19. app.use(express.urlencoded({ extended: false }));
  20. app.use(cookieParser());
  21. app.use(express.static(path.join(__dirname, 'public')));
  22. // 路由中间件
  23. app.use('/', indexRouter);
  24. app.use('/users', usersRouter);
  25. // 404错误处理中间件
  26. app.use(function(req, res, next) {
  27. next(createError(404));
  28. });
  29. // 错误处理中间件
  30. app.use(function(err, req, res, next) {
  31. // set locals, only providing error in development
  32. res.locals.message = err.message;
  33. res.locals.error = req.app.get('env') === 'development' ? err : {};
  34. // render the error page
  35. res.status(err.status || 500);
  36. res.render('error');
  37. });
  38. // 导出app实例对象
  39. module.exports = app;

 根据代码中的注释,我们可以看到,app.js的作用主要是初始化Express应用的一些设置,包括引入依赖包、引入路由文件、注册各类中间件的一些操作。

router/**详解

router/**包含了路由文件,每个路由文件中包含了不同HTTP请求对用的路由以及逻辑处理函数,此处以router/index.js文件为例,以下是index.js文件的代码:

  1. // 引入依赖包
  2. var express = require('express');
  3. // 创建路由对象
  4. var router = express.Router();
  5. // 获取首页
  6. router.get('/', function(req, res, next) {
  7. res.render('index', { title: 'Express' });
  8. });
  9. module.exports = router;

view/**详解

view/**主要存放应用的页面,以view/index.jade为例,代码如下:

  1. extends layout
  2. block content
  3. h1= title
  4. p Welcome to #{title}

 然后客户端就看到了如上的页面:

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/2023面试高手/article/detail/120263
推荐阅读
相关标签
  

闽ICP备14008679号