二十七、Node.js搭建第一个Express应用框架

举报
毛利 发表于 2021/07/15 04:50:41 2021/07/15
【摘要】 @Author:Runsen @Date:2020/6/8 人生最重要的不是所站的位置,而是内心所朝的方向。只要我在每篇博文中写得自己体会,修炼身心;在每天的不断重复学习中,耐住寂寞,练就真功,不畏艰难,奋勇前行,不忘初心,砥砺前行,人生定会有所收获,不留遗憾 (作者:Runsen ) 作者介绍:Runsen目前大三下学期,专业化学工程与工艺,大学沉迷日语...

@Author:Runsen
@Date:2020/6/8

人生最重要的不是所站的位置,而是内心所朝的方向。只要我在每篇博文中写得自己体会,修炼身心;在每天的不断重复学习中,耐住寂寞,练就真功,不畏艰难,奋勇前行,不忘初心,砥砺前行,人生定会有所收获,不留遗憾 (作者:Runsen )

作者介绍:Runsen目前大三下学期,专业化学工程与工艺,大学沉迷日语,Python, Java和一系列数据分析软件。导致翘课严重,专业排名中下。.在大学60%的时间,都在CSDN。决定今天比昨天要更加努力。

我预计写前端写到五十多篇,慢慢来,才能不断地成长

这次Node.js搭建第一个Express应用框架。搞起来,不对,兄弟们,和我一起嗨起来。

Express

Express 框架:是一个Node.js的Web开源框架,该框架可以快速搭建Web项目开发的框架。其主要集成了Web的Htpp服务器的创建、静态文件管理、服务器URL请求处理、GET和POST请求分发、Session处理等功能。

在cmd命令行输入安装express,进行全局安装

npm install -g express-generator

  
 
  • 1

获取、引用

var express = require('express');
var app = express();

  
 
  • 1
  • 2

快速上手

进入工作空间执行 ,即可创建应用

C:\Users\YIUYE>cd Desktop

C:\Users\YIUYE\Desktop>express app warning: the default view engine will not be jade in future releases
  warning: use `--view=jade' or `--help' for additional options create : app\ create : app\public\ create : app\public\javascripts\ create : app\public\images\ create : app\public\stylesheets\ create : app\public\stylesheets\style.css create : app\routes\ create : app\routes\index.js create : app\routes\users.js create : app\views\ create : app\views\error.jade create : app\views\index.jade create : app\views\layout.jade create : app\app.js create : app\package.json create : app\bin\ create : app\bin\www change directory: > cd app install dependencies: > npm install run the app: > SET DEBUG=app:* & npm start

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34

然后进入app目录下安装所需的模块,执行npm install

运行应用,执行npm start

Node.js监听的3000端口,访问地址: http://localhost:3000

我们回头看看生成的工程目录里面都有什么,打开我们的 app文件夹,里面如图所示:

  • app.js:启动文件,或者说入口文件

  • package.json:存储着工程的信息及模块依赖,当在 dependencies 中添加依赖的模块时,运行npm install ,npm 会检查当前目录下的 package.json,并自动安装所有指定的模块

  • node_modules:存放 package.json 中安装的模块,当你在 package.json 添加依赖的模块并安装后,存放在这个文件夹下

  • public:存放 image、css、js 等文件

  • routes:存放路由文件

  • views:存放视图文件或者说模版文件

  • bin:存放可执行文件

打开app.js,让我们看看里面究竟有什么,下面我写了注释。

var createError = require('http-errors');
var express = require('express');
var path = require('path');
var cookieParser = require('cookie-parser'); 
var logger = require('morgan');

var indexRouter = require('./routes/index');
var usersRouter = require('./routes/users');

var app = express(); //生成一个express实例 app

// view engine setup
app.set('views', path.join(__dirname, 'views')); //:设置 views 文件夹为存放视图文件的目录, 即存放模板文件的地方,__dirname 为全局变量,存储当前正在执行的脚本所在的目录。
app.set('view engine', 'jade'); // 设置视图模板引擎为 jade。

app.use(logger('dev')); //加载日志中间件。
app.use(express.json()); //加载解析json的中间件。
app.use(express.urlencoded({ extended: false }));
app.use(cookieParser());//加载解析cookie的中间件。
app.use(express.static(path.join(__dirname, 'public'))); //设置public文件夹为存放静态文件的目录。

app.use('/', indexRouter); //路由控制器
app.use('/users', usersRouter);

// catch 404 and forward to error handler
// 捕获404错误,并转发到错误处理器
app.use(function(req, res, next) {
  next(createError(404));
});

// error handler
// 开发环境下的错误处理器,将错误信息渲染error模版并显示到浏览器中
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; //导出app实例供其他模块调用。

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43

从代码中发现还有一个/users路由,于是访问下

路由控制

下面去routes文件夹发现对于路由的js的。

routes/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;

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

这段代码的意思是当访问主页时,调用 jade模板引擎,来渲染 index.jade模版文件(即将 title 变量全部替换为字符串 Express),生成静态页面并显示在浏览器中。

下面是在view文件夹下的 index.jade模版文件。

extends layout

block content
  h1= title
  p Welcome to #{title}

  
 
  • 1
  • 2
  • 3
  • 4
  • 5

静态页面渲染

因此我很快知道了浏览器静态页面的构造原理。

在上面的静态页面处理过程中,我们已经使用了路由Router。路由的具体使用方法如下:

在入口文件app.js中引入实际处理的路由。比如我们实际处理静态页面index的路由是/routes/index.js, 那么在app.js中我们可以通过下列代码引入index 路由router

var indexRouter = require('./routes/index');
设定静态页面/模板目录
app.set('views', path.join(__dirname, 'views'));
......
//中间省略数行代码
......
app.use(express.static(path.join(__dirname, 'public')));

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

这里的__dirname表示当前目录,这行代码指定了静态页面/模板的目录。

3.通过app.use指定相关路径的处理路由

app.use('/', indexRouter);

  
 
  • 1

这里表示,当访问网站时,系统会使用index路由处理,即<project>/routes/index.js

而前面我们讲到过在index.js中,系统调用了res.render()方法传入模板文件,即返回浏览器静态页面。

其实users路由也一样。通过res.send()方法进行。

router.get('/', function(req, res, next) {
  res.send('respond with a resource');
});

  
 
  • 1
  • 2
  • 3

示例代码可以查看/routes/users.js。

这就是处理路径/users的路由,将路由信息在app.js中写入即可。

var usersRouter = require('./routes/users');
app.use('/users', usersRouter);

  
 
  • 1
  • 2

当用户通过浏览器访问http://localhost:3000/users时,系统会调用/routes/users.js中的response.get()方法返回信息给客户端。

如果本文对你有帮助,大家可以点赞转发一波,有错误大家可以评论指出,感谢!

大家继续加油,未来可期!Runsen的征途是星辰大海!

文章来源: maoli.blog.csdn.net,作者:刘润森!,版权归原作者所有,如需转载,请联系作者。

原文链接:maoli.blog.csdn.net/article/details/106631094

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。