node.js 学习 -- koa

这篇具有很好参考价值的文章主要介绍了node.js 学习 -- koa。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、搭建项目

1. 安装 Koa 框架

yarn add koa

2. 引入

const Koa = require("koa");
const app = new Koa();

3. 配置中间件

// ctx 所有http的上下文
// 配置中间件
app.use((ctx, next) => {
  ctx.body = "hello api";
});

4. 监听端口

app.listen(3000, () => {
  console.log("Server on 3000");
});

二、项目基本优化

1. 配置文件

安装 dotenv 包

yarn add dotenv

创建 .env 文件

APP_PORT = 8000

在当前目录下创建 config 文件夹,用来保存配置文件,并添加config.default.js

const dotenv = require("dotenv")
dotenv.config()
// 暴露
module.exports = process.env

改写 主进程内容

// 引包
const Koa = require("koa");
const app = new Koa();
// env
const { APP_PORT } = require("./config/config.default");
// ctx 所有http的上下文
// 配置中间件
app.use((ctx, next) => {
  ctx.body = "hello api";
});
app.listen(APP_PORT, () => {
  console.log("Server on 3000");
});

三、添加路由(处理不同的url请求)

路由:根据不同的 URL,调用对应处理函数

1. 安装 koa-router

yarn add koa-router

koa-router 官方文档

步骤:

  1. 导入包
  2. 实例化对象
  3. 编写路由
  4. 注册中间件

2. 导入包

const Router = require("koa-router")

3. 实例化对象

const indexRouter = new Router()

4. 编写路由

indexRouter.get('/',(ctx,next)=>{    ctx.body = "hello index"})

5. 注册中间件

app.use(indexRouter.routes())

这里需要特别注意的是,配置中间件的时候需要调用 routes 方法,不能直接传入对象

app.use(indexRouter) // 错误

node.js 学习 -- koa

会报错

四、处理路由文件

如果我们要将全部的路由文件写在 main.js 文件中,会造成代码的混乱,这一点在 express 中也遇到了,我们可以将路由请求放在一个单独的文件夹中router,分别处理不同场景的路由

1. 引入包

例如我们需要一个专门处理用户路由的文件 user.route.js ,这个文件专门处理用户路由

同时一个很重要的点:我们可以给 Router 构造函数传递一个对象{prefix: "/users"} ,用来配置请求的前缀

const router = new Router({ prefix: "/users" });

这样配置后,当我们请求 /路径时,实际上请求的是 /users/

2. 编写路由

我们在 user.route.js 中编写路由

const Router = require("koa-router");const router = new Router({ prefix: "/users" });router.get("/", (ctx, next) => {  ctx.body = " hello users";});

并暴露出 router

module.exports = router;

3. 改写 main.js

将暴露的 router 引入 main.js 中,引入中间件即可

// 引包const Koa = require("koa");const app = new Koa();// envconst { APP_PORT } = require("./config/config.default");const userRouter = require("./router/user.route")// 配置中间件app.use(userRouter.routes()) // 新增app.listen(APP_PORT, () => {  console.log("Server on 8000");});

五、 优化目录结构

1. 将 Http 服务和 app 业务拆分

在 src 目录下创建 app 文件夹,用来处理业务

新增一个 index.js 文件,将 main.js 入口文件中的部分代码移植到这里

// 引包const Koa = require("koa");const app = new Koa();const userRouter = require("../router/user.route");// 配置中间件app.use(userRouter.routes());module.exports = app

改写 main.js 优化了代码

const app = require("./app/index");// 读取env配置const { APP_PORT } = require("./config/config.default");app.listen(APP_PORT, () => {  console.log("Server on 8000");});

2. 将路由和控制器拆分

路由:解析 URL,分发给控制器对应的方法

控制器:处理业务

改写 user.route.js

用来匹配路径

const Router = require("koa-router");// 导入控制器接口const { register ,login} = require("../controller/user.controller");const router = new Router({ prefix: "/users" });// 注册接口router.post("/register", register);// 登录接口router.post("/login",login)module.exports = router;

改写 user.controller.js

将路由的请求处理函数写在这个文件中

class UserController {  async register(ctx, next) {    ctx.body = "注册接口";  }  async login(ctx, next) {    ctx.body = "登录接口";  }}module.exports = new UserController();

通过创建一个类的方式,再返回一个实例化的对象,就可以调用对应的函数了

六、解析 body

1. 安装 koa-body

yarn add koa-body

2. 注册中间件

const Koa = require("koa");// 注册中间件app.use(KoaBody())

3. 解析请求数据

通过 request.body 来获取数据

const { user_name, password } = ctx.request.body;ctx.body = ctx.request.body;

4. 拆分 service 层

专门用来操作数据库

在文件目录下创建一个 service 文件夹,用来存放 service 文件

class UserService {    async createUser(user_name,password) {        return '写入成功'    }}module.exports = new UserService()

换个视频看,这个视频偏向实战,不够系统

koa 学习(二)

B站视频:Node框架koa从入门到实战写接口(2021)

编写一个接口

首先和 express 一样,我们需要建立 app.js 入口文件,routes 管理路由接口,model 创建模型

1. 入口文件

 app.js 中编写主程序

// app.js// 引入依赖const koa = require("koa");const Router = require("koa-router");const mongoose = require("mongoose");const bodyParser = require("koa-bodyparser");// 实例化const app = new koa();const router = new Router();// 配置post 中间件app.use(bodyParser());// 引入 api 模块const users = require("./routes/api/user");// 配置路由地址router.use("/api/users", users);// 配置路由app.use(router.routes()).use(router.allowedMethods());// 监听端口app.listen(3000, () => {  console.log("3000启动");});

一定要配置中间件,不然会 not Found

app.use(router.routes()).use(router.allowedMethods());

注意:这里的router.use 第一个参数,设置的是路由地址前缀api/users

我们要访问 /test 时,需要访问 /api/users/test

2. 数据模型

在 model 中创建 User.js 文件,用来连接数据库,处理用户数据模型

const UserSchema = new Schema({  name: {    type: String,    required: true,  },  password: {    type: String,    required: true,  },  email: {    type: String,    required: true,  },  avatar: {    type: String,    required: true,  },  data: {    type: Date,    default: Date.now,  },});module.exports = mongoose.model("User", UserSchema);

3. 路由处理

引入 router 挂载路由即可

const Router = require("koa-router");const router = new Router();// 引入 User modelconst User = require("../../models/User");// 路由router.get("/test", async (ctx) => {  ctx.status = 200;  ctx.body = {    msg: "hello",  };});

4. 巨坑点

当我们使用测试工具测试邮箱时,我们填写邮箱时尽量不要打 .com 不然会被解析成对象,导致数据出错

node.js 学习 -- koa

. 去掉

测试工具采用 postman ,body 选择 x-www-form-unlencoded

数据加密

采用 bcryptjs 来进行数据加密

yarn add bcryptjs

引入

const bcrypt = require("bcryptjs")

使用

await bcrypt.genSalt(10, function (err, salt) {    bcrypt.hash(newUser.password, salt, function (err, hash) {    if (err) {        throw err;    }    newUser.password = hash;    });});

传入我们的密码,然后更改实例对象的数据

存在问题,我们在控制台上打印处理的数据是加密的,但是在数据库中的仍然是明文文章来源地址https://www.toymoban.com/news/detail-464127.html

到了这里,关于node.js 学习 -- koa的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • node.js+NPM包管理器+Webpack打包工具+前端项目搭建

    javascript运行环境(无需依赖html文件) BFF,服务于前端的后端 官网下载安装,node -v查看是否安装成功 ①、创建一个01.js文件 ②、通过CMD命令执行(或者通过工具的集成终端) node 01.js 如果出现权限原因,可以通过管理员方式打开工具 ③、通过浏览器访问http://127.0.0.1:8888 如

    2024年02月07日
    浏览(73)
  • Node.js的安装与环境的搭建(详细版)

    npm: Nodejs下的包管理器。 webpack: 它主要的用途是通过CommonJS的语法把所有浏览器端需要发布的静态资源做相应的准备,比如资源的合并和打包 vue-cli: 用户生成Vue工程模板(帮你快速开始一个vue的项目,也就是给你一套vue的结构,包含基础的依赖库,只需要 npm install就可以安装

    2024年02月05日
    浏览(38)
  • 【热门前端【vue框架】】——vue框架和node.js的下载和安装保姆式教程

    👨‍💻个人主页 :@程序员-曼亿点 👨‍💻 hallo 欢迎 点赞👍 收藏⭐ 留言📝 加关注✅! 👨‍💻 本文由 曼亿点 原创 👨‍💻 收录于专栏 :vue框架开发   Vue.js 是一款流行的 JavaScript 前端框架,它以其简单、灵活和高效的特性,成为了构建现代化 Web 应用程序的首选工具

    2024年04月27日
    浏览(56)
  • 自学WEB后端01-安装Express+Node.js框架完成Hello World!

    前端         前端开发主要涉及用户界面(UI)和用户体验(UX),负责实现网站的外观和交互逻辑。前端开发使用HTML、CSS和JavaScript等技术来构建网页,并通过各种工具和框架(如React、Vue.js、Angular等)来简化开发过程。前端开发关注于网页设计、布局、样式、动画效果以及

    2024年02月07日
    浏览(64)
  • Node.js安装与Vue项目的创建

    node.js – js运行平台和工具库 npm – node.js中的一个开发工具, 作用类似于maven, 管理项目的依赖 创建时要注意当前所在的目录是不是你想要存放工程的目录

    2024年02月12日
    浏览(98)
  • 【Node.js】一文带你开发博客项目之接口(处理请求、搭建开发环境、开发路由)

    个人简介 👀 个人主页: 前端杂货铺 🙋‍♂️ 学习方向: 主攻前端方向,也会涉及到服务端 📃 个人状态: 在校大学生一枚,已拿 offer(秋招) 🥇 推荐学习:🍍前端面试宝典 🍉Vue2 🍋Vue3 🍓Vue2Vue3项目实战 🥝Node.js 内容 参考链接 Node.js(一) 初识 Node.js DNS 解析,建

    2023年04月21日
    浏览(55)
  • Vue路由的使用及node.js下载安装和环境搭建

    目录 一、Vue路由 1.1 简介 ( 1 )  特点 ( 2 )  作用 1.2 实例 ( 1 )  引入 ( 2 )  组件 ( 3 )  关系 ( 4 )  路由 ( 5 )  事件 ( 6 )  锚点 二、nodeJS 2.1  下载 2.2  安装 2.3  环境搭建 新增 添加 测试 配置 运行 Vue路由是Vue.js框架中用于管理页面 导航的插件 。它允许开发者通过定义路由规

    2024年02月07日
    浏览(60)
  • uni-app(Vue3/Vite) + vant UI(Vue3版本)+ js 按需引入的项目搭建

            因为要完成软件工程的项目,要做一个nativeApp,看了很多的技术文档以后决定使用多端兼容的uni-app来开发。组件方面的话最后决定使用目前比较火的Vant UI。但是看了CSDN和掘金上面的很多文章,似乎没有一篇是关于uni-app中使用Vite对vant组件进行按需引入(可能这个

    2023年04月09日
    浏览(68)
  • AJAX入门到实战,学习前端框架前必会的(ajax+node.js+webpack+git)(七)

    实操: server.js utils/lib/index.js utils/package.json 从别处(网上、其他人手中)拿到写好的项目,一般不携带node_modules文件夹(所占存储空间大) 但有package.json文件,里面记载了当前项目下载过的包 还有package-lock.json文件,固定软件包的版本 导入模块/包,除了自己创建的模块、包

    2024年01月22日
    浏览(67)
  • 前端框架前置课Node.js学习(1) fs,path,模块化,CommonJS标准,ECMAScript标准,包

    目录 什么是Node.js 定义 作用: 什么是前端工程化 Node.js为何能执行Js fs模块-读写文件 模块 语法: 1.加载fs模块对象 2.写入文件内容 3.读取文件内容 Path模块-路径处理 为什么要使用path模块 语法 URL中的端口号 http模块-创建Web服务 需求 步骤: 案例:浏览时钟 步骤: 什么是模块化 定

    2024年01月16日
    浏览(110)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包