Node.js学习笔记(二)——express

什么是express?

基于 Node.js 平台,快速、开放、极简的 Web 开发框架。

具体可以参考:
Express中文网
https://blog.csdn.net/qq_45268602/article/details/109150525

如何使用?

可以参考:
https://www.expressjs.com.cn/starter/hello-world.html

  1. 安装express
npm install express
  1. 引入express
const express = require('express');
  1. app实例对象
const app = express();
  1. app.请求方式
  • app.get(请求路径,回调函数)
  • app.post(请求路径,回调函数)
  • app.all(请求路径,回调函数)
  1. 监听端口
const port = 3000; // 端口
app.listen(port, () => {}) // app.listen(端口, 回调函数)

express之路由

可以参考:
https://www.expressjs.com.cn/starter/basic-routing.html
https://www.expressjs.com.cn/guide/routing.html

路由 是指确定应用程序如何响应客户端对特定端点的请求,该特定端点是URI(或路径)和特定的HTTP请求方法(GET,POST等)。

而这样的操作需要事先在后台定义好规则,定义出来的规则我们叫做 路由规则

路由基本语法

  • 普通语法
    app.HTTP请求类型(请求路径,回调函数)
发送  GET请求:app.get(请求路径,回调函数)

发送  POST请求:app.post(请求路径,回调函数)

发送  任意请求:app.all(请求路径,回调函数)
  • 特殊语法
    app.use(请求路径,回调函数)

    • 区别1:use匹配任意类型请求
    • 区别2:use非完全匹配(只需要url前面匹配请求路径即可匹配)

路由参数获取

// :id 一般我们称之为 占位符,也叫做路由参数,代表这个是可变
// :type 一般我们称之为 占位符,也叫做路由参数,代表这个是可变
app.get('/news/:id/:type', (req, res) => {
    console.log(req.params); // 包含了请求的路由参数
    let id = req.params.id; 
    let type = req.params.type;
    res.send('Hello news  ' + id + ' type ' + type);

});

利用 Express 托管静态文件

可以参考:
https://www.expressjs.com.cn/starter/static-files.html

express.static()
Express框架中设置了固定语法允许指定目录下的文件被外部访问。

var express = require('express')
var app = express()
app.use('/public', express.static('public'));

模板引擎art-template

模板引擎可以把我们的 js 里面的变量或者数据放置在外部的页面里面。

  1. 我们外置的页面一般我们叫做模板,模板里面一般会放置很多的占位符,占位符值得是后面可以通过变量替换出来的。
  2. 使用模板引擎,把那些占位符通过变量替换出来。

使用示例

html代码:

<!DOCTYPE html>
<html lang="zh_CN">
<head>
    <meta charset="UTF-8">
    <title>搜索表单</title>
</head>
<body>
<form action="" method="get">
    <input type="text" name="kw">
    <input type="submit" value="提交">
</form>
<!-- {{ kw }} 形如这样的结构叫做占位符,也可以叫做插值表达式 -->
<p>用户搜索的关键字:<b>{{ kw }}</b></p>
<hr>
</body>
</html>

js代码:

const express = require('express');
const url = require('url');
const path = require('path');
const template = require('art-template');

const app = express();
const port = 3000;

app.get('/search', (req, res) => {
    // 获取用户输入的信息
    let kw = req.query.kw;
    let absPath = path.resolve(__dirname, './views/search.html');
    let htmlContent = template(absPath, {kw});
    res.send(htmlContent);
})

app.listen(port, () => {
    console.log("server is run at port " + port);
})

模板引擎express-art-template

使用示例
html代码:

<!DOCTYPE html>
<html lang="zh_CN">
<head>
    <meta charset="UTF-8">
    <title>搜索表单</title>
</head>
<body>
<form action="" method="get">
    <input type="text" name="kw">
    <input type="submit" value="提交">
</form>
<!-- {{ kw }} 形如这样的结构叫做占位符,也可以叫做插值表达式 -->
<p>用户搜索的关键字:<b>{{ kw }}</b></p>
<hr>
</body>
</html>

js代码:

const express = require('express');
const path = require('path');

const app = express();
const port = 3000;

// 静态资源
app.use(express.static('public'));

// 1. 代表我们现在的项目要有 art-template 模板引擎
// 注意:我们在使用时可能在文件中只引用express-art-template,但是我们也需要安装art-template,因为express-art-template需要依赖art-template
app.engine('html', require('express-art-template'));
// 2. 设置 运行模式 debug 调试  production 生成模式 development 开发模式
app.set('view options', {
    debug: process.env.NODE_ENV !== 'production'
});
// 3. 设置模板的目录
app.set('views', path.join(__dirname, 'views'));
// 4. 使用模板 art-template
app.set('view engine', 'html');

app.get('/search', (req, res) => {
    // 获取用户输入的信息
    let kw = req.query.kw;
    // render 第一个参数是带渲染的模板,第二个参数就是模板要使用的变量
    res.render('search', {kw});
})

app.listen(port, () => {
    console.log("server is run at port " + port);
})

Mongoose的使用

使用mongoose这个第三方库来实现mongodb的操作

可以参考:
http://www.mongoosejs.net/

简单示例
首先要安装mongoose

npm  install mongoose
// 1、引入mongoose
const mongoose = require('mongoose');
// 2、连接数据库
mongoose.connect('mongodb://localhost/test');
// 3、定义数据模型,参数一表示表名称,参数二表示字段
// 返回值相当于一个构造函数,可以实例化对象,实例化出来的对象代表表中的一条记录
const Cat = mongoose.model('Cat', { name: String });
// 4、实例化
const kitty = new Cat({ name: 'Zildjian' });
// 5、插入数据
kitty.save().then(() => {console.log('成功插入!')});

mongodb常用命令

    • db.表名.save({字段})
    • db.表名.remove({}) 删除所有
    • db.表名.remove({字段}) 删除指定字段
    • db.表名.update({字段},{$set:{字段}})
    • db.表名.update({字段},{$inc:{字段(数字)}})
    • db.表名.find() 查找所有数据
    • db.表名.find({age:19}) 查找指定字段
    • db.表名.find({age:{$gt:22}}) 大于22的数据
    • db.表名.find({age:{$lt:22}}) 小于22的数据
    • db.表名.find({age:{$gte:22}}) 大于等于22的数据
    • db.表名.find({age:{$lte:22}) 小于等于22的数据
    • db.表名.find({age:{ g t e : 30 , gte:30, gte:30,lte:22})大于等于30小于等于22的数据
    • db.表名.find({name:/alley/}) 模糊查询 找到数据中有alley的数据
    • db.表名.find({age:/^alley/}) 查找首字符是alley
    • db.表名.find({age:/alley$/}) 查找尾字符是alley
    • db.表名.find({},{name:1,_id:0}) 只显示name这个字段
    • db.表名.find().sort({age:1}) 正序
    • db.表名.find().sort({age-1}) 降序
    • db.表名.find().limit(n) 显示多少条数据
    • db.表名.find().skip(n) 跳过多少条数据
    • db.表名.find().skip(n).limit(m) 跳过多少条 显示多少条
    • db.表名.findOne({}) 查找一条数据
    • db.表名.find().count() 查询表中有多少条数据
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值