前端KOA搭建服务器——part1

news2024/10/5 10:22:08

目录

  • koa简介
  • 前端项目搭建koa环境
    • 第一步:新建项目
    • 第二步:环境初始化,安装依赖
      • 初始化项目,生成package.json文件
      • 安装koa依赖
      • 安装koa-router 路由管理依赖
      • 安装dotenv 环境变量依赖
      • 安装nodemon 热启动依赖
    • 第三步:代码调用,启动服务
      • main.js文件中的内容
      • app/index.js中的内容
      • app/config.js中的内容
      • .env中的内容
      • router文件夹中的user.router.js文件
      • controller文件夹中的user.controller.js文件
      • router文件夹中的index.js文件
      • 到这里,代码就写好了,准备开始运行
    • 第四步:启动前端koa服务器
  • 最终效果

koa简介

Koa 是一个新的 web 框架,由 Express 幕后的原班人马打造, 致力于成为 web 应用和 API 开发领域中的一个更小、更富有表现力、更健壮的基石。 通过利用 async 函数,Koa 帮你丢弃回调函数,并有力地增强错误处理。 Koa 并没有捆绑任何中间件, 而是提供了一套优雅的方法,帮助您快速而愉快地编写服务端应用程序

简而言之,koa可以让前端自己搭建一个服务器模拟后端接口,返回数据进行调试。
KOA官网

前端项目搭建koa环境

使用软件工具:vscode
安装依赖:koa、dotenv、nodemon、koa-router(npm这些基础的就不说了哈)

第一步:新建项目

新建个文件夹拖拽到vscode里打开
在这里插入图片描述
手动创建好这些文件夹和文件,等会要往里面写东西


第二步:环境初始化,安装依赖

vscode里按下快捷键:CTRL+j唤出控制台
在这里插入图片描述
依次输入:

初始化项目,生成package.json文件

npm init -y
生成package.json文件
在这里插入图片描述

安装koa依赖

npm i koa --save或者npm i koa -S
可将信息加入到package.json文件中的dependencies中(—save也就是生产阶段的依赖,也就是项目运行时的依赖,就是程序上线后仍然需要依赖)

安装koa-router 路由管理依赖

npm install koa-router --save
Koa-router 是 koa 的一个路由中间件,它可以将请求的URL和方法(如:GET 、 POST 、 PUT 、 DELETE 等) 匹配到对应的响应程序或页面。

安装dotenv 环境变量依赖

npm install dotenv --save
Dotenv 是一个零依赖的模块,它能将环境变量中的变量从 .env 文件加载到 process.env 中,将环境相关的配置独立于代码之外。

安装nodemon 热启动依赖

npm install nodemon --save-dev或者npm i nodemon -D
可将信息加入到package.json文件中的devDependencies中(-D也就是开发阶段的依赖,就是我们在开发过程中需要的依赖,只在开发阶段起作用)

第三步:代码调用,启动服务

main.js文件中的内容

// main.js
const app = require('./app/index.js')
const config = require('./app/config.js')

app.listen(config.APP_PORT, () => {
  console.log(`服务器在${config.APP_PORT}端口启动成功了~`)
})

在这里插入图片描述

app/index.js中的内容

// 入口文件
// app/index.js
const Koa = require("koa")

const app = new Koa()

const useRoutes = require('../router') // 引入router下的index.js文件(不写出来其实等价于../router/index.js)

useRoutes(app) // 向这个路由加载文件传入app

module.exports = app  //暴露出去app这个变量,方便其他文件调用

在这里插入图片描述

app/config.js中的内容

处理环境变量,把变量写入到环境中

// config.js
const dotenv = require("dotenv")   //环境变量依赖 参考:https://juejin.cn/post/6844904198929121288?from=search-suggest

dotenv.config()

module.exports = {
  APP_PORT
} = process.env

在这里插入图片描述

.env中的内容

APP_PORT=8000 

在这里插入图片描述

router文件夹中的user.router.js文件

const Router = require("koa-router") // 引入依赖

const userRouter = new Router({ prefix: "/user" }) // 设置接口前缀

const { create } = require('../controller/user.controller') // 引入中间件

userRouter.get('/', create) // 设置接口路径,以及中间件

module.exports = userRouter // 导出

在这里插入图片描述

controller文件夹中的user.controller.js文件

这个中间件是与router文件夹中的user.router.js文件

class UserController { // 创建类
  async create (ctx, next) { // 中间件
    console.log("请求成功")
    ctx.body = "请求成功,用户test" // 请求响应
  }
}

module.exports = new UserController()


在这里插入图片描述

router文件夹中的index.js文件

这个文件里的代码专门用来加载路由,将会用文件遍历的方法来加载每一个路由,这样就不用每增加一个接口都要再自己手动去加载路由了。接下来只要在入口文件app/index.js中引入这个文件加载路由即可

const fs = require('fs')

const useRoutes = (app) => {
  fs.readdirSync(__dirname).forEach(file => {
    if (file === 'index.js') return // index.js文件不需要
    const router = require(`./${file}`)
    app.use(router.routes())
    app.use(router.allowedMethods())
  })
}

module.exports = useRoutes


在这里插入图片描述


到这里,代码就写好了,准备开始运行

开始运行前,我们要去package.json中设置一下启动项目的语句(毕竟我们用的nodemon热启动)
在package.json文件中的scripts对象中插入:
"start": "nodemon ./src/main.js"
在这里插入图片描述
这句的意思就是,我们在控制台使用npm start 等价于:npm nodemon ./src/main.js 运行这个入口文件,开始项目执行


第四步:启动前端koa服务器

我们在控制台输入:npm start
这样就能启动项目了
在这里插入图片描述

最终效果

在这里插入图片描述
或者用postman请求也是得到这个返回这
localhost就是你本机电脑的ip,cmd里用ipconfig查看自己ip
在这里插入图片描述
在这里插入图片描述
如果你的手机跟当前电脑链接的wifi是同一个,你直接用手机游览器,访问这个接口,一样能正常访问到
在这里插入图片描述

参考博客:https://juejin.cn/post/7091309467869921288

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1124616.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

LeetCode讲解篇之面试题 10.11. 峰与谷

文章目录 题目描述题解思路题解代码 题目描述 题解思路 倒序遍历数组 若当前下标为偶数,则为峰,若左值大于当前值,则交换 若当前下标为奇数,则为谷,若左值小于当前值,则交换 题解代码 func wiggleSort…

ATA-2161高压放大器在压电薄膜传感器心脏监测研究中的应用

近年来,随着医疗技术的不断进步和人们对健康关注的增加,心脏疾病的早期监测与预防成为了研究的热点。压电薄膜传感器作为一种重要的生物传感器,在心脏监测领域发挥着重要的作用。而高压放大器作为压电薄膜传感器的关键驱动设备,对…

组合大招!XPS、BET联合开课,零基础也能让你快速刷经验升级-科学指南针

开课啦!科学指南针精品公开课——XPS、BET联合开课啦! 下面就由小编带领大家了解一下 8月30日、9月1日那两天可以学到什么吧~ 一:XPS课程 Vol.1 课程介绍 X射线光电子能谱仪 (X-ray Photoelectron Spectroscopy 简称XPS) ,又称…

Java现在还好不好找工作?行情怎么样?

37了,11年多的Java经验,其他什么mysql,linux,Vue等等都会,现在失业在家已经1年多,不指望入职摸鱼了,寻思着转行中。祝你好运 这是某问答社区,有个大四学生提问,好迷茫啊马…

ATA-L50水声功率放大器在OFDM水声通信系统中的应用

水声功率放大器是一种专门用于水下通信的设备,其在OFDM(正交频分复用)水声通信系统中起着重要的作用。OFDM技术是一种高效且抗干扰能力强的调制解调技术,通过将信号分为多个子载波来传输数据,有效地提高了数据传输速率…

Linux命令行安装图形化界面

Linux命令行安装图形化界面 安装CentOS默认安装没有配置图形化界面,如何在命令行进行安装图形化界面? 首先要以root用户登录,输入用户名和密码。 切换root用户命令: su root ​ 查看ip地址和网卡编号。 ip addr show 知道网卡编号…

微信小程序之后台交互-个人中心

目录 一.小程序登录微信登录接口演示 导入项目 登录信息 二.小程序授权登录理论与登录代码演示 图解 ​编辑 后端代码 前端代码 前端代码如下所示 代码案例演示 个人中心 后端代码如下所示 测试结果如下 一.小程序登录微信登录接口演示 导入项目 选择此项目导入…

对中纠偏系统比例伺服阀放大器

对中纠偏系统是一种广泛应用于生产线上的技术设备,主要用于调整材料的运动轨迹,使其在生产过程中能够准确对中。纠偏系统可以显著提高生产效率和产品质量,广泛应用在钢铁、瓦楞纸、纺织、印刷、标签、贴标、造纸、塑料薄膜等多个行业。 纠偏…

AB试验(六)A/B实验常见知识点的Python计算

AB试验(六)A/B实验常见知识点的Python计算 前面理论知识上提到了很多的知识点需要计算,作为一个实用主义的博主,怎么可以忍受空谈呢?所以本期就给大家分享如何利用Python对这些知识点进行计算。 均值类指标 import …

损失函数中的均方误差以及平方误差

通俗聊聊损失函数中的均方误差以及平方误差 机器学习中的所有算法都依赖于最小化或最大化某一个函数,我们称之为“目标函数”。最小化的这组函数被称为“损失函数”。损失函数是衡量预测模型预测期望结果表现的指标。寻找函数最小值的最常用方法是“梯度下降”。把损失函数想…

第二章Maven的使用

文章目录 Maven核心概念坐标Maven实战创建Java项目实战命令行创建一个Maven版的初始化Java项目实战Maven中编写代码实战执行 Maven 的构建命令 Maven核心概念:约定的目录结构各个目录的作用约定目录结构的意义约定大于配置 Maven实战创建 Maven 版的 Web 工程实战命…

前后端交互—跨域与HTTP

跨域 代码下载 同源策略 同源策略(英文全称 Same origin policy)是浏览器提供的一个安全功能。 MDN 官方给定的概念:同源策略限制了从同一个源加载的文档或脚本如何与来自另一个源的资源进行交互。这 是一个用于隔离潜在恶意文件的重要安全机制。 通俗的理解:浏览器规定&a…

linux性能分析(六)CPU性能篇(一)基础

一 CPU篇 遗留: 负载与cpu关系、负载与线程的关系? ① CPU 相关概念 1、physical 物理CPU个数 --> 一般一个实体 2、cpu 核数 3、逻辑CPU个数 逻辑核 4、超线程 super thread 技术 5、各种cpu的计算方式物理 physical CPU的个数: physical id逻…

云原生微服务实战 Spring Cloud Alibaba 之 Nacos

系列文章目录 第一章 Java线程池技术应用 第二章 CountDownLatch和Semaphone的应用 第三章 Spring Cloud 简介 第四章 Spring Cloud Netflix 之 Eureka 第五章 Spring Cloud Netflix 之 Ribbon 第六章 Spring Cloud 之 OpenFeign 第七章 Spring Cloud 之 GateWay 第八章 Sprin…

仿写知乎日报第一周

效果图 主要的逻辑 Manager封装网络请求 首先,对于获取网络请求,我是将这些方法封装成了一个类Manager,后续在获取以往的内容时又封装了一个beforeManager类用于网络请求。这里不多赘述,Manager封装网络请求的知识参考我的以往博…

Linux中常用的性能分析工具

1 明确目标 进行性能分析时,需要明确优化的目标,例如,是优化整体的性能,还是某个功能的性能。 明确优化目标后就需要能够知道当前的性能瓶颈,性能消耗在什么地方,以及如何去衡量,这样也能够在…

二叉树题目:最大二叉树

文章目录 题目标题和出处难度题目描述要求示例数据范围 解法一思路和算法代码复杂度分析 解法二思路和算法代码复杂度分析 题目 标题和出处 标题:最大二叉树 出处:654. 最大二叉树 难度 5 级 题目描述 要求 给定一个没有重复元素的整数数组 num…

一键操作,高效管理!个微管理系统

在微信日益普及的今天,越来越多的人使用微信进行交流。然而,在工作中,我们往往需要处理大量的消息,手动回复不仅效率低下,还容易出错。还有朋友圈转发,不能一键转发,需要手动保存添加再一个个图…

架构风格区别-架构案例(五十九)

管道-过滤器和仓库的区别? 独立的数据仓库,处理流独立,处理数据用连接仓库工具数据与处理在一起,改动的话需要重启系统需要仓库工具与仓库连接,数据与处理分离,性能差可以支持并发连接访问仓库&#xff0c…

如何判断要不要用振动技术来进行设备预测性维护

在现代工业设备运行过程中,及时发现设备故障并进行维修对于确保生产线的正常运行至关重要。振动分析技术作为一种先进的设备监测和预测性维护方法,通过实时监测和分析设备的振动信号,可以提前发现潜在故障,降低停机时间和维护成本…