创建 Express 项目

安装
npm i -g express-generatorornpm i -g express-generator@4# 注意:Windows有可能碰到提示:npm : 无法加载文件 C:\Program Files\nodejs\npm.ps1,因为在此系统上禁止运行脚本。
# 如果碰到这个错误,需要用`管理员身份`打开PowerShell,然后运行:
Set-ExecutionPolicy RemoteSigned
创建项目
# 创建项目
express --no-view clwy-api  //clwy-api是项目名称# 注意:Windows有可能碰到提示:express : 无法加载文件 C:\Program Files\nodejs\express.ps1,因为在此系统上禁止运行脚本。
# 如果碰到这个错误,需要用`管理员身份`打开PowerShell,然后运行:
Set-ExecutionPolicy RemoteSigned# 进入项目之中
cd clwy-api 

这里要注意,我们使用了--no-view参数,它的意思是不需要任何视图模板,因为我们这个项目专门做后端接口的。将来渲染页面会使用VueReact之类的框架,所以不需要视图。然后我们项目的名字叫做clwy-api

项目创建成功后,通过命令,安装依赖包。
npm i 
or 
npm install
最后,运行命令,启动服务
npm start

现在就可以通过 http://localhost:3000,来访问我们的第一个项目了。

 输出 json

继续来改,我们这个项目是专门开发接口的,而接口所需要的是json格式,而不是直接输出HTML

那么找到routes/index.js文件,将中间这行改为

router.get('/', function (req, res, next) {res.json({ message: 'Hello Node.js' });
});

它的意思就是以json格式来输出 Hello Node.js

这时候我们刷新浏览器,会发现它没有任何变化,还是显示以前的内容。这是因为当修改代码后,Express并没有一直监听我们的修改,运行的一直是之前的东西。想要显示最新修改的内容,需要重启服务。

回到命令行,按ctrl + c键,可以停止服务,接着再次运行npm start来启动服务。接着还要删掉public/index.html文件。

注意:请务必删掉index.html。很多同学到这里没有删掉index.html就去访问了,会导致无法显示json数据。

刷新浏览器后,可以看到返回的json数据了

美化JSON格式

浏览器安装 JSON-handle插件

nodemon 监听修改 

 安装nodemon包
npm i nodemon
 然后打开项目根目录下的package.json,将start这里修改为
"scripts": {"start": "nodemon ./bin/www"
},
重启项目
npm start

修改内容无需重启,我们直接刷新,可以看到显示的内容

总结

  1. 开发Node.js项目,要先安装express-generator,这样才能使用命令,创建项目
  2. 创建项目的命令是express --no-view 加上项目名
  3. 后端接口所使用的格式是:json,而不是:HTML
  4. 还要给项目安装、配置nodemon,这样Express才能监听你的代码

项目结构

使用express-generator建好的项目,都是这个结构。现在我们一一分析下,它们都是用来干嘛的

bin/www

package.json中,大家见过这个文件的配置。它是用来启动项目的文件,无需修改,也不用管它,知道它是干嘛的就好了。

node_modules

展开后,会发现里面有非常多的文件。这就是当我们使用npm i命令后,安装的项目依赖包。我们也不用管它,甚至将它们删掉都没关系。因为当你再次运行npm i后,它又会重新出现的。

public 目录

这里放的各种静态资源,例如 CSS、图片等等静态资源。但因为我们项目是专门开发接口的,所以这里的东西,大家完全不需要管它,根本用不上。

routes

这里是程序的路由部分,路由简单的理解就是将不同网址,分别对应到不同的程序代码上去。咱们开发项目,最重要的就是这个目录了,后面我们开发要写的代码主要也都是在这里。

app.js

这个文件也很重要,在开发中,我们需要做一些路由的配置、跨域配置,都会来修改它的。

package.json

这里主要记录的是项目的基本信息,和一些依赖包的情况。

package-lock.json

最后一个是package-lock.json,它是用来锁定npm i时,安装依赖包的版本号。并且将代码发给其他人后,保证其他人在npm i时,所使用的依赖包版本号能一致。这个文件删掉后,运行npm i也会自动重新生成的。

所以我们在开发中,目前要关注的就是router 目录 和 app.js,其他文件都无需理会。

 

上面两行就是引入express,定义了路由 (router),路由就是用来设置访问地址的。它可以将不同的访问地址,与一个个不同的方法对应起来。 

 简单的了解一下路由 

 

注意看,这里有个getget是请求的一种,我们后面还有碰到其他的请求。get请求大家就简单的理解成,用户访问浏览器了。get后面是/,这是访问地址的路径。

可以尝试做一个修改,将/改为/hello

现在刷新页面,浏览器会提示你 Cannot GET /,接着我们访问 http://localhost:3000/hello,又会正确的显示内容了。

req、res 和 next 

接着这里有个function,它就是当前路由/hello访问后,所对应的,要运行的函数。它里面有三个参数,分别是:reqresnext

req

reqRequest的缩写,也就是请求的意思。通过req,我们可以获取到用户通过URL,或者表单传递给我们的数据。例如用户提交了一个关于注册的表单,我们就可以从req中取出用户提交的数据,从而进一步存入到数据库中,保存起来。现在请先稍等一下,后面我们很快就会学习到相关的知识了。

res

resResponse的缩写,也就是响应的意思。通过res,我们可以对用户的请求做出响应。例如这里的

它的意思就是,当用户访问了 /hello 后,要通过json这种格式,显示一段欢迎信息给用户看。这样用户的浏览器上才能正确的显示数据啊。

next

最后的next,没错,它就是下一步的意思。它允许我们在当前函数中对请求进行一些处理,然后再传递给下一个函数。

导出模块

最底部的module.exports = router,这是Node.js中一种导出模块的方式。在所有的路由文件中,你都将见到这一行,而这是必须存在的。因为只有这样写了以后,app.js中,才能正确的引用到我们当前的路由文件

 总结

  1. 目前开发中,只需要关注routes 目录app.js 文件就好了,其他的都不用管它。
  2. 路由的作用,就是让浏览器的访问地址,与代码段对应起来
  3. 推荐使用ES 6语法,用constlet来代替var

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

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

高并发系统设计面试题

高并发系统设计面试题🔥🔥🔥 超高频问题(几乎必问)让你设计一个秒杀系统,你会考虑哪些问题?如果你的业务量突然提升100倍QPS你会怎么做?库存扣减如何避免超卖和少卖?订单…

【通识】如何看电路图

1. 电路图 1.1 基础概念 电路图即电原理图。 电路图第一种是说明模拟电子电路工作原理,用图形符号表示电阻器、电容器、开关、晶体管等实物,用线条把元器件和单元电路按工作原理的关系连接起来。 第二种则是说明数字电子电路工作原理的。用图形符号表示…

SpringBoot实战指南:从快速入门到生产级部署(2025最新版)

一、为什么SpringBoot依然是Java开发的首选? SpringBoot自2014年发布以来,已成为Java企业级开发的事实标准框架。根据2025年最新调研数据显示,全球78%的Java微服务项目基于SpringBoot构建,其核心优势在于: 约定优于配置…

新房装修是中央空调还是壁挂空调好?

这个要看户型和投资金额,大户型空间适合装中央空调,因为空间大有足够的地方安装,功率也可以根据面积大小进行配置,整体配置一个外机就行了,整体的装修效果比较规整,就是多花点,使用成本也稍高点…

如何理解泊松分布

文章目录一、引例——鲸鱼研究二、泊松分布一、引例——鲸鱼研究 有生态学家对生活在北冰洋水域的鲸鱼进行了跟踪研究,他们利用一台水下无人机来探测鲸鱼数量,这是近十天的数据: 第1天第2天第3天第4天第5天第6天第7天第8天第9天第10天10101…

python学习DAY22打卡

作业: 自行学习参考如何使用kaggle平台,写下使用注意点,并对下述比赛提交代码 kaggle泰坦尼克号人员生还预测 import warnings warnings.filterwarnings("ignore") #忽略警告信息 # 数据处理清洗包 import pandas as pd import …

在 Ansys CFX Pre 中配置 RGP 表的分步指南

掌握在 Ansys CFX Pre 中设置 RGP 表的技巧,以优化仿真精度和效率。挑战在计算流体动力学 (CFD) 领域,RGP(真实气体属性)表对于准确模拟流体在不同条件下的行为至关重要。这些表格提供了详细的热力学属性&a…

C语言————原码 补码 反码 (日渐清晰版)

本文的内容通下面这篇文章有着紧密的联系,读者可以选择性阅读 C语言————二、八、十、十六进制的相互转换-CSDN博客 目录 基本概念 原码 反码 补码 转换 数据的存储方式 基本存储单位 数据的计算方式 补码的模运算原理 移位操作符 左移操作符 右移操…

函数-变量的作用域和生命周期

变量的作用域 引入问题 我们在函数设计的过程中,经常要考虑对于参数的设计,换句话说,我们需要考虑函数需要几个参数,需要什么类型的参数,但我们并没有考虑函数是否需要提供参数,如果说函数可以访问到已定义…

Ansible在配置管理中的应用

Ansible是一个开源的配置管理和应用程序部署工具,它使用YAML语言编写的Playbook来描述配置和应用部署过程。通过SSH协议与目标机器通信,Ansible可以实现批量操作,极大地提升了工作效率。核心功能Ansible的核心功能包括:配置管理&a…

【学习路线】Go语言云原生开发之路:从简洁语法到微服务架构

一、Go语言基础入门(1-2个月) (一)环境搭建与工具链Go环境安装 官方安装:从golang.org下载安装包版本管理:g、gvm等Go版本管理工具环境变量:GOROOT、GOPATH、GOPROXY配置Go Modules:…

软件工厂:推动新质生产力的组织跃迁

引言:软件工厂的建设,不在于工具多,而在于理解深;不在于上线快,而在于体系稳。不仅是“看得见的流水线”,更是“看不见的组织变革”。在新质生产力的时代命题下,软件工厂正成为连接创新与效率、…

9.0% 年增速驱动!全球自清洁滚轮拖布机器人市场2031年将迈向 946 百万美元

自清洁滚轮拖布机器人是重要的智能清洁设备,采用滚筒式拖布结构,集扫拖功能,通过高速旋转加压擦洗地面,深度除污。其活水清洁系统可实时自清洁、回收污水,避免二次污染,提升清洁效率与效果,带来…

新能源工厂的可视化碳中和实验:碳足迹追踪看板与能源调度策略仿真

摘要新能源工厂明明用着风电、光伏等清洁能源,碳排放数据却依旧居高不下?某锂电池厂耗费百万升级设备,碳足迹却难以精准追踪,能源调度全靠经验“拍脑袋”,导致成本飙升。而隔壁企业通过可视化碳中和实验,碳…

数据结构自学Day13 -- 快速排序--“非递归利用栈实现”

一、快速排序回顾 快速排序本质上是**“分而治之”(Divide and Conquer)策略的递归应用。但递归其实就是函数栈的一种体现,因此我们也可以显式使用栈(stack)来模拟递归过程**,从而实现非递归版本的快速排序…

前端数据库:IndexedDB 基础使用

前言 在现代 Web 开发中,随着应用程序复杂度的增加,对本地存储的需求也越来越高。虽然 localStorage 和 sessionStorage 可以满足一些简单的数据存储需求,但当需要存储大量结构化数据或进行复杂查询时,它们就显得力不从心了。这时…

Kubernetes深度解析:企业级容器编排平台的核心实践

引言:Kubernetes的战略地位与核心价值在云原生技术生态中,​​Kubernetes​​已成为容器编排的事实标准。根据2023年全球云原生调查报告:全球​​96%​​ 的组织正在使用或评估Kubernetes企业生产环境Kubernetes采用率增长​​400%​​&#…

Netty中future和promise用法和区别

定义与概念 Future:表示一个异步操作的结果。它是只读的,意味着你只能查看操作是否完成、是否成功、获取结果或者异常等信息,但不能主动设置操作的结果。Promise:是 Future 的可写扩展。它不仅可以像 Future 一样查看操作结果&…

微算法科技(NASDAQ:MLGO)采用分布式哈希表优化区块链索引结构,提高区块链检索效率

随着区块链技术的快速发展,其在各个领域的应用越来越广泛。然而,区块链数据的存储和检索效率问题一直是制约其发展的瓶颈之一。为了解决这一问题,微算法科技(NASDAQ:MLGO)采用了分布式哈希表(DHT)技术来优化…

Jmeter的元件使用介绍:(三)配置元件详解01

Jmeter的配置元件有非常多,常用的有:信息头管理器、Cookie管理器、用户定义的变量、Http请求默认值、JDBC Connection Configuration、CSV 数据文件设置、计数器等,本文会对这些常用的配置元件一一介绍,还有其他很多配置元件&…