程序员最近都爱上了这个网站  程序员们快来瞅瞅吧!  it98k网:it98k.com

本站消息

站长简介/公众号

  出租广告位,需要合作请联系站长


+关注
已关注

分类  

暂无分类

标签  

暂无标签

日期归档  

在node中使用express框架

发布于2021-09-15 22:15     阅读(380)     评论(0)     点赞(4)     收藏(1)


Express


  • 原生的 http 在某些方面表现不足以应对我们的开发需求, 所以就需要使用框架来加快开发效率
  • 官网: https://www.expressjs.com.cn/

安装:

> npm install express --save
// 0. 安装
// 1. 引包
const express = require('express');

// 2. 创建服务器应用程序
// 也就是原来的 http.createServer()
const app = express();

// 公开指定目录
// 只要这样做了,就可以直接通过 /public/xx 的方式访问 public目录中的所有资源了
app.use('/public/', express.static('./public/'));

// 当服务器收到 get 请求 / 的时候, 执行回调函数
app.get('/', (req, res) => {
    // 在 Express 中可以直接使用 req.query 来获取url传递的参数
    console.log(req.query);
    // 在 express 中 write 和 end 方法依然可以用
    // res.write('hello ');
    // res.end('express !')
    res.send('hello express!');
});


// 相当于 server.listen
app.listen(3000, () => {
    console.log('port 3000, Server is Running...');
});

1 基本路由

组成:

  • 请求方法
  • 请求路径
  • 请求处理函数

get:

// 当你以 GET 方法请求 / 的时候, 执行对应的处理函数
app.get('/',(req,res)=>{
    res.send('Hello World');
});

post:

// 当你以 POST 方法请求 / 的时候, 执行对应的处理函数
app.post('/',(req,res)=>{
    res.send('Got a POST request');
})

2 静态服务

// 引入
const express = require('express');
// 创建 app
const app = express();

// 当以 /public/开头的时候, 去 ./public/ 目录中查找对应的资源
app.use('/public/', express.static('./public'));

app.get('/', (req, res) => {
    res.send('hello world');
});

app.listen(3000, () => {
    console.log('express app is Running....');
});


访问 login.html 不省略第一个参数时:
在这里插入图片描述

访问 login.html 省略第一个参数时:

// 当省略第一个参数的时候, 则可以通过省略 '/public' 的方式来访问对应资源
app.use(express.static('./public/'));

​		[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-n3t6nUSn-1630378931791)(img/image-20210327150216653.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ksZMWqZk-1630378931795)(img/image-20210327150238262.png)]

特殊写法:

// 必须是 /a/public 目录中的资源具体路径
// 可以理解为  '/a/' 是 '/public/' 的别名
app.use('/a/', express.static('./public/'));

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-lbxpSdRf-1630378931798)(img/image-20210327150914564.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-5uyvmncu-1630378931801)(img/image-20210327150924347.png)]

3 在 Express 中配置使用 art-template 模板引擎

安装:

npm install --save art-template
npm install --sava express-art-template

配置 :

// 第一个参数, 标识, 当渲染以 .html结尾(可更改)的文件的时候, 使用 art-template模板引擎
// express-art-template 是专门用来在 Express 中把 art-template 整合到 Express 中
// 虽然外面这里不需要加载 art-template , 但是也必须安装
// 原因就在于 express-art-template 依赖了 art-template
app.engine('html', require('express-art-template'));

使用:

// Express为 Response 响应对象提供了一个方法: reader
// reader 方法默认是不可以使用的, 但是如果配置了模板引擎就可以使用了
// res.render('html模板名',{模板数据});
// 第一个参数不能写其他路径, 默认会去项目中的 views 目录查找该模板文件

app.get('/', (req, res) => {
    res.render('404.html');
});




如果想要修改默认的 views目录, 可以这么做:

app.set('views',要修改的路径);

实例演示

// E:\Exercises\Node\express-demo\feedback-express\express使用art-template.js
const express = require('express');

const app = express();
// 配置
app.engine('html', require('express-art-template'));

// 使用
app.get('/', (req, res) => {
    res.render('404.html');
});

app.get('/admin', (req, res) => {
    res.render('admin/index.html', {
        title: '管理系统'
    });
});


app.listen(3000, () => {
    console.log('running....');
});

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-JukhnjHz-1630378931803)(img/image-20210327155156766.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-nyNj8WeN-1630378931804)(img/image-20210327155207428.png)]

4 在Express 中获取表单 POST 请求体数据

在 express 中没有内置获取表单 POST请求体的 API , 这里需要使用一个第三方包 : body-parser

安装:

npm install --sava body-parser

配置:

var express = require('express')
// 0. 引包
var bodyParser = require('body-parser')

var app = express()

// 配置 body-parser
// 只要加入这个配置, 则在 req请求对象上会多出来一个属性: body
// 也就是说可以直接通过req.body 来获取表单 POST请求体数据
// parse application/x-www-form-urlencoded
app.use(bodyParser.urlencoded({ extended: false }))

// parse application/json
app.use(bodyParser.json())

app.use(function (req, res) {
  res.setHeader('Content-Type', 'text/plain')
  res.write('you posted:\n')
  // 可以通过 req.body 来获取表单 POST 请求体数据
  res.end(JSON.stringify(req.body, null, 2))
})

5 在Express 中获取表单 GET 请求参数

Express 内置了一个 API , 可以直接通过 req.query来获取

req.query



所属网站分类: 技术文章 > 博客

作者:程序员的人生

链接:http://www.qianduanheidong.com/blog/article/192683/3bc01a5f1447c8e2de5b/

来源:前端黑洞网

任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任

4 0
收藏该文
已收藏

评论内容:(最多支持255个字符)