利用express从0到1搭建后端服务
目录
- 步骤一:安装开发工具
- 步骤二:安装插件
- 步骤三:安装nodejs
- 步骤四:搭建启动入口文件
- 步骤五:启动服务器
- 总结
在日常工作中,有很多重复和繁琐的事务是可以利用软件进行提效的。但每个行业又有自己的特点,很难选购一款完全符合自己需求的软件。利用现有的技术,结合自己的业务特点,独立架构一套属于自己的软件无疑是最佳的方案。
要想架构软件,就需要选择技术栈,选配必要的前后端技术。架构软件首先选择的是语言,我们本次的搭建过程是选择的javascript作为开发语言。因为javascript属于脚本语言,没有太多复杂的语法,而且编写马上就可以看到运行的结果,而且前后端都有优秀的框架。
我们本次架构前端的语言是javascript,选用vue3+tdesign作为前端框架。后端我们使用nodejs+express+mysql。有了这个基本的架构思路就可以开工干了,先看一下我们本次的架构图:

步骤一:安装开发工具
后端服务我们先安装vscode,用来我们后端代码的编写,下载地址
https://code.visualstudio.com/
打开页面后点击download for windows

下载到本地之后,点击安装包,双击安装

点击同意协议

保持默认也可以,勾选上创建桌面快捷方式也行,勾选之后你每次打开工具可以从桌面找到图标就可以双击打开

然后点击安装,等待进度条走完


步骤二:安装插件
默认空白安装后,我们需要一些插件来辅助我们的开发,点击侧边栏的extensions,输入Express Snippets,然后点击install来安装插件

插件安装好之后我们可以测试一下他的命令,现在你的硬盘里创建一个项目的文件夹,比如backend

然后打开我们的vscode,点击file->open folder

选择我们刚刚创建的文件夹,backend

一般express有一个启动的入口文件,我们点击创建文件的图标

输入app.js,启动文件就创建好了

我们不知道该写点啥代码,在光标的位置,输入app+tab键,他就帮我们生成了一个代码的模板

这个模板虽然有一定的作用,但是需要经过一定的改造才可以使用。
步骤三:安装nodejs
在express应用开发的过程中,我们需要安装很多第三方提供的包,就必须先安装Nodejs,然后使用npm命令来安装第三方包,nodejs下载地址:
https://nodejs.org/en
然后点击下载最新的版本

这里的LTS表示长期支持的意思,意味着你后续会基于该版本得到更新,因为开源软件一个是会改进功能,另外是有安全更新。功能改进意味着有长久的生命力,安全更新可以进行系统加固。
下载完成后双击我们的安装包

点击Next进行下一步的安装

勾选I accept复选框,同意用户协议

选择默认的安装路径,也可以自己修改

剩下就一路next直到安装完成


为了验证我们的开发环境是否搭建成功,可以按住键盘的win+R键,在弹出的窗口输入cmd

依次输入如下命令
node -v
npm -v

能看到版本号,表示我们的开发环境搭建成功了
步骤四:搭建启动入口文件
我们在上边讲解了用插件去快捷的创建入口文件,但是他的代码不是太好使,我们需要自己写一下启动的代码。
首先要初始化一下项目的配置文件,在vscode里点击Terminal->New Terminal

在命令行窗口里输入如下命令
npm init
它会提示你各种信息,你一路按回车键,直到在根目录创建了一个package.json文件

这个就是我们工程的依赖文件,如果我们用npm install安装了各种包,都会记录到这个文件里,别人得到你的源码后,直接再执行一遍 npm install就把依赖环境搭建好了
我们要使用express框架,先需要安装它,在命令行里输入
npm install express

执行完毕后会在根目录多一个node_modules文件夹,里边就有了我们依赖的express框架

可以看到除了express还有很多其他的,因为依赖是层次展开的,需要一层层的都安装好,然后可以打开package.json里看到我们最新的依赖

在app.js里替换一下代码,贴入如下代码
// 引入express模块
const express = require('express');
const app = express();
const PORT = process.env.PORT || 3000; // 设置端口号,环境变量PORT有值则使用,否则默认为3000 // 设置中间件,处理跨域请求(可选)
app.use((req, res, next) => { res.header("Access-Control-Allow-Origin", "*"); res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept"); next();
}); // 路由示例:当访问根路径时返回"Hello World!"
app.get('/', (req, res) => { res.send('Hello World!');
}); // 启动服务器
app.listen(PORT, () => { console.log(`Server is running on port ${PORT}`);
});
步骤五:启动服务器
不像Java一样,还得打包部署到tomcat里,express直接用命令启动就可以,在命令行里输入
node app.js
命令行会打印服务器在3000端口启动成功

然后你在浏览器里输入http://localhost:3000,可以看到hello,world表示我们后端服务就搭建成功了

总结
我们本篇带着大家从0开始搭建了express的后端服务,涉及到开发工具的下载安装、开发环境的搭建以及启动服务器。有了这些基础知识,后续我们就可以按照自己的需要开发后端接口了,感兴趣的同学,自己搭建一下吧。
相关文章:
利用express从0到1搭建后端服务
目录 步骤一:安装开发工具步骤二:安装插件步骤三:安装nodejs步骤四:搭建启动入口文件步骤五:启动服务器总结 在日常工作中,有很多重复和繁琐的事务是可以利用软件进行提效的。但每个行业又有自己的特点&…...
如何在Ubuntu中查看编辑lvgl的demo和examples?
如何在Ubuntu中查看编辑lvgl的demo和examples? 如何在 Ubuntu系统中运行查看lvgl 1、拉取代码 在lvgl的github主页面有50多个仓库,找到lv_port_pc_eclipse这个仓库,点进去 拉取仓库代码和子仓库代码 仓库网址:https://github…...
深入了解 大语言模型(LLM)微调方法
引言 众所周知,大语言模型(LLM)正在飞速发展,各行业都有了自己的大模型。其中,大模型微调技术在此过程中起到了非常关键的作用,它提升了模型的生成效率和适应性,使其能够在多样化的应用场景中发挥更大的价值。 那么&…...
C语言之快速排序
目录 一 简介 二 代码实现 快速排序基本原理: C语言实现快速排序的核心函数: 三 时空复杂度 A.时间复杂度 B.空间复杂度 C.总结: 一 简介 快速排序是一种高效的、基于分治策略的比较排序算法,由英国计算机科学家C.A.R. H…...
获取扇区航班数
1、Spark Streaming清洗服务,接收kafka中Topic为“task_ATC”中的数据,保存在MySQL中。 打开SpringBoot项目BigData-Etl-KongGuan 请认真阅读:在前面的“使用Spark清洗统计业务数据并保存到数据库中”任务阶段中应该已经完成了所有Topic的数…...
【已解决】npm install卡主不动的情况
使用 npm install 初始化前端项目时,会出现卡住不动的情况。原因是淘宝镜像源由原来的https://registry.npm.taobao.org 更换为下面这个: https://registry.npmmirror.com 直接在终端执行下面的指令即可: npm config set registry https://re…...
Golang协程详解
一.协程的引入 1.通过案例文章引入并发,协程概念 见:[go学习笔记.第十四章.协程和管道] 1.协程的引入,调度模型,协程资源竞争问题 通过上面文章可以总结出Go并发编程原理: 在一个处理进程中通过关键字 go 启用多个协程,然后在不同的协程中完成不同的子任…...
git:码云仓库提交以及Spring项目创建
git:码云仓库提交 1 前言 码云访问稳定性优于github,首先准备好码云的账户: 官网下载GIT,打开git bash: 查看当前用户的所有GIT仓库,需要查看全局的配置信息,使用如下命令: git …...
【Miniconda】基于conda避免运行多个PyTorch项目时发生版本冲突
【Miniconda】基于conda避免运行多个PyTorch项目时发生版本冲突 🌈 个人主页:高斯小哥 🔥 高质量专栏:Matplotlib之旅:零基础精通数据可视化、Python基础【高质量合集】、PyTorch零基础入门教程👈 希望得到…...
【机器学习-02】矩阵基础运算---numpy操作
在机器学习-01中,我们介绍了关于机器学习的一般建模流程,并且在基本没有数学公式和代码的情况下,简单介绍了关于线性回归的一般实现形式。不过这只是在初学阶段、为了不增加基础概念理解难度所采取的方法,但所有的技术最终都是为了…...
《A Second-Order PHD Filter With Mean and Variance in Target Number》学习心得
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 1. 主要内容2. PHD、CPHD和SO-PHD之间的差别2.1 PHD2.2 CPHD2.3 SO-PHD2.4 关于“CPHD对每个可能的目标数量状态进行建模”3. PHD、CPHD和SO-PHD描述目标数量分布所用的参数3.1 PHD所用参数3.2 CPH…...
React 实现下拉刷新效果
简介 本文基于react实现下拉刷新效果,在下拉的时候会进入loading状态。 实现效果 效果如上图所示,在下拉到底部时候,会出现loading条,在处理完成后loading条消失。 具体代码 布局 & 逻辑 import {useRef, useState} from …...
使用endnote插入引用文献导致word英文和数字变成符号的解决方案
使用endnote插入引用文献导致word英文和数字变成符号的解决方案 如图使用endnote插入引用文献导致word英文和数字变成符号字体Wingdings Wingdings 是一个符号字体系列,它将许多字母渲染成各式各样的符号,用途十分广泛。 解决方法: 直接通过更…...
npm下载慢换国内镜像地址
1 设置淘宝镜像地址 npm config set registry http://registry.npm.taobao.org 2 查看当前下载地址 npm config get registry 3 其它镜像地址列表: 1. 官方镜像:https://registry.npmjs.org/ 2. 淘宝镜像:https://registry.npm.taobao.o…...
开源绘图工具 PlantUML 入门教程(常用于画类图、用例图、时序图等)
文章目录 一、类图二、用例图三、时序图 一、类图 类的UML图示 startuml skinparam classAttributeIconSize 0 class Dummy {-field1 : String#field2 : int~method1() : Stringmethod2() : void } enduml定义能见度(可访问性) startumlclass Dummy {-f…...
Ubuntu20下C/C++编程开启TCP KeepAlive
1、在linux下,测试tcp保活,可以使用tcp自带keepalive功能。 2、几个重要参数: tcp_keepalive_time:对端在指定时间内没有数据传输,则向对端发送一个keepalive packet,单位:秒 tcp_keep…...
前世档案(不用二叉树语法秒杀版c++)
网络世界中时常会遇到这类滑稽的算命小程序,实现原理很简单,随便设计几个问题,根据玩家对每个问题的回答选择一条判断树中的路径(如下图所示),结论就是路径终点对应的那个结点。 现在我们把结论从左到右顺序…...
Java基础 - 9 - 集合进阶(二)
一. Collection的其他相关知识 1.1 可变参数 可变参数就是一种特殊形参,定义在方法、构造器的形参列表里,格式是:数据类型…参数名称; 可变参数的特点和好处 特点:可以不传数据给它;可以传一个或者同时传多个数据给…...
javaEE——线程的等待和结束
文章目录 Thread 类及常见方法启动一个线程中断一个线程变量型中断调用 interrupt() 方法来通知观察标志位是否被清除 等待一个线程获取当前线程引用休眠当前线程 线程的状态观察线程的所有状态观察 1: 关注 NEW 、 RUNNABLE 、 TERMINATED 状态的切换 多线程带来的风险为什么会…...
sqlplus设置提示符
作为DBA,需要管理好多数据库,经常会有一台服务器安装多个oracle实例的情况,为避免误操作实例,我们需要在执行sqkplus前,先通过$ echo $ORACLE_SID或 SQL>select name from v$database查看当前实例,这样难…...
谷歌浏览器插件
项目中有时候会用到插件 sync-cookie-extension1.0.0:开发环境同步测试 cookie 至 localhost,便于本地请求服务携带 cookie 参考地址:https://juejin.cn/post/7139354571712757767 里面有源码下载下来,加在到扩展即可使用FeHelp…...
装饰模式(Decorator Pattern)重构java邮件发奖系统实战
前言 现在我们有个如下的需求,设计一个邮件发奖的小系统, 需求 1.数据验证 → 2. 敏感信息加密 → 3. 日志记录 → 4. 实际发送邮件 装饰器模式(Decorator Pattern)允许向一个现有的对象添加新的功能,同时又不改变其…...
大话软工笔记—需求分析概述
需求分析,就是要对需求调研收集到的资料信息逐个地进行拆分、研究,从大量的不确定“需求”中确定出哪些需求最终要转换为确定的“功能需求”。 需求分析的作用非常重要,后续设计的依据主要来自于需求分析的成果,包括: 项目的目的…...
【WiFi帧结构】
文章目录 帧结构MAC头部管理帧 帧结构 Wi-Fi的帧分为三部分组成:MAC头部frame bodyFCS,其中MAC是固定格式的,frame body是可变长度。 MAC头部有frame control,duration,address1,address2,addre…...
Day131 | 灵神 | 回溯算法 | 子集型 子集
Day131 | 灵神 | 回溯算法 | 子集型 子集 78.子集 78. 子集 - 力扣(LeetCode) 思路: 笔者写过很多次这道题了,不想写题解了,大家看灵神讲解吧 回溯算法套路①子集型回溯【基础算法精讲 14】_哔哩哔哩_bilibili 完…...
macOS多出来了:Google云端硬盘、YouTube、表格、幻灯片、Gmail、Google文档等应用
文章目录 问题现象问题原因解决办法 问题现象 macOS启动台(Launchpad)多出来了:Google云端硬盘、YouTube、表格、幻灯片、Gmail、Google文档等应用。 问题原因 很明显,都是Google家的办公全家桶。这些应用并不是通过独立安装的…...
2023赣州旅游投资集团
单选题 1.“不登高山,不知天之高也;不临深溪,不知地之厚也。”这句话说明_____。 A、人的意识具有创造性 B、人的认识是独立于实践之外的 C、实践在认识过程中具有决定作用 D、人的一切知识都是从直接经验中获得的 参考答案: C 本题解…...
Android第十三次面试总结(四大 组件基础)
Activity生命周期和四大启动模式详解 一、Activity 生命周期 Activity 的生命周期由一系列回调方法组成,用于管理其创建、可见性、焦点和销毁过程。以下是核心方法及其调用时机: onCreate() 调用时机:Activity 首次创建时调用。…...
以光量子为例,详解量子获取方式
光量子技术获取量子比特可在室温下进行。该方式有望通过与名为硅光子学(silicon photonics)的光波导(optical waveguide)芯片制造技术和光纤等光通信技术相结合来实现量子计算机。量子力学中,光既是波又是粒子。光子本…...
LINUX 69 FTP 客服管理系统 man 5 /etc/vsftpd/vsftpd.conf
FTP 客服管理系统 实现kefu123登录,不允许匿名访问,kefu只能访问/data/kefu目录,不能查看其他目录 创建账号密码 useradd kefu echo 123|passwd -stdin kefu [rootcode caozx26420]# echo 123|passwd --stdin kefu 更改用户 kefu 的密码…...
