node 学习(二) -- Express

举报
阿童木 发表于 2021/10/25 15:16:24 2021/10/25
【摘要】 1. 基本使用首先安装 express 框架 yarn add express获取 appconst app = express()基本路由配置get当 get 请求的时候才会执行这个app.get("/", function (req, res) { res.send("hello page");});app.get("/login", function (req, res) { r...

1. 基本使用

首先安装 express 框架

 yarn add express

获取 app

const app = express()

基本路由配置

get

get 请求的时候才会执行这个

app.get("/", function (req, res) {
  res.send("hello page");
});
app.get("/login", function (req, res) {
  res.send("login page");
});

post

post 请求执行

app.post("/", function (req, res) {
  res.send("hello page post");
});

监听窗口

app.listen(3000, function () {
  console.log("服务已经启动");
});

启动服务

node '文件名'

2. 静态资源

开放公共资源

app.use("/public/", express.static("./public/"));

这样当我们访问 public 路径时,就会去加载公共资源 public 下资源

http://localhost:3000/public/

当公共资源路径和 app.get 绑定的路径相同时,会执行 app.get 绑定的事件回调

app.use("/", express.static("./public/"));app.get("/", function (req, res) {  res.send("hello page");});

此时页面显示 hello page

当省略第一个参数时,可以通过省略 public 的方式来访问资源

3. 在 express 中使用模板引擎

安装 art-template 模块

yarn add art-templateyarn add express-art-template

配置

采用 engine 来配置

第一个参数表示,以渲染 .art 结尾的文件的时候,使用 art-template 模板引擎

app.engine('art',require('express-art-template'))

express-art-template 专门将在 express 中把 art-template 整合在 Express

express-art-template 不需要加载,但要安装,它依赖了 art-template

render 方法默认是不可以使用的,需要先配置模板引擎

res.render('html模板名',{模板数据})

第一个参数不能写路径,默认会去 views 目录下找模板文件,因此我们需要将所有的视图文件放到 views

当我们文件名不匹配时,会遇到下面这样的情况

image-20210915202416992

我们需要将文件名改成 art 结尾才可以

我们也可以将匹配的 .art 结尾改成匹配 html 结尾文件

app.engine("html", require("express-art-template"));

image-20210915203129060

可以通过 set API 来更改默认路径的 views 路径

app.set("views", "./public");

简单使用

将评论数据渲染在 index.html

首先我们需要准备一下渲染的假数据

let comments = [  {    name: "小丞同学1",    message: "志愿时长为0",    dataTime: "2021-6-4",  },  {    name: "小丞同学2",    message: "志愿时长为01",    dataTime: "2021-6-4",  },]

配置模板引擎

// 配置模板引擎,第一个参数是匹配的文件后缀app.engine("html", require("express-art-template"));

配置请求响应

// 配置请求响应app.get("/", (req, res) => {  res.render("index.html", { comments });});

监听端口

app.listen(3000, () => {  console.log("服务在3000端口启动");});

在我们需要进行模板数据渲染的文件内,我们进行一些数据的获取

// views/index.html<body>    {{each comments}}    <h1>{{$value.name}},{{$value.message}},{{$value.dataTime}}</h1>    {{/each}}</body>

这样我们的数据就成功的渲染出来了

image-20210915205655824

4. 在 express 中处理表单 post 请求数据

get 请求通过 req.query 来获取 get 请求传递的内容

通过 redirect 来重定向路由

利用中间件来实现,在新版本express 已经集成了获取 POST 请求体的 API

我们可以使用 express.urlencoded 方法来解析 POST 数据

app.use(express.urlencoded({extended: false}))app.use(express.json())

这个时候我们在请求的响应处理函数中,输出 req.body

image-20210915211514051

我们就能的到我们输入的数据,这个数据很工整,我们可以将它直接添加到假数据数组中

let comment = req.body;comments.unshift(comment);

这样我们重定向回首页,得到的就会是一个添加了新数据的列表

res.redirect("/");

image-20210915211707119

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

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

全部回复

上滑加载中

设置昵称

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

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

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