express框架学习

Node.js入门开发:初步学习Express框架 Express是基于Node.js的‌极简Web框架;Node.js HTTP模块原生开发Express框架快速原型开发。 阅读详情

express的安装

  • 首先假定你已经安装了 Node.js,接下来为你的应用创建一个目录,然后进入此目录并将其作为当前工作目录。
 $ mkdir myapp
 $ cd myapp

  • 通过 npm init 命令为你的应用创建一个 package.json 文件。
 $ npm init

此命令将要求你输入几个参数,例如此应用的名称和版本。 你可以直接按“回车”键接受大部分默认设置即可,下面这个除外:

 entry point: (index.js)

键入 app.js 或者你所希望的名称,这是当前应用的入口文件。如果你希望采用默认的 index.js 文件名,只需按“回车”键即可。

  • 接下来在 myapp 目录下安装 Express 并将其保存到依赖列表中。如下:
$ npm install express --save

如果只是临时安装Express,不想将它添加到依赖列表中,可执行如下命令:

$ npm install express --no-save

express框架的使用

  • 新建一个工程,在命令行中输入:
$ express -e blog  
$ cd blog && npm install 
  • 框架中文件的作用

app.js: 启动文件,或者说入口文件。

package.json: 存储着工程的信息及模块依赖,当在 dependencies 中添加依赖的模块时, 运行 npm install ,npm 会检查当前目录下的 package.json,并自动安装所有指定的模块。

node_modules: 存放 package.json 中安装的模块,当你在 package.json 添加依赖的模块并安装后,存放在这个文件夹下。

public: 存放 image、css、js 等文件。

routes: 存放路由文件。

views: 存放视图文件或者说模板文件。

bin: 存放可执行文件。

  • app.js文件解析

(1) var app = express()

生成一个 express 实例 app。

(2) app.set(‘view’, path.join(dirname, ‘views’))

设置 views 文件夹为存放视图文件的目录,即存放模板文件的地方,dirname 为全局变量,存储当前正在执行的脚本所在的目录。

(3) app.set(‘view engine’, ‘ejs’)

设置视图模板引擎为 ejs 。

(4) app.use(favicon(dirname + ‘/public/favicon.ico’))

设置 /public/favicon.ico 为 favicon 图标。

(5) app.use(logger(‘dev’))

加载日志中间件

(6) app.use(bodyParser.json())

加载解析 json 的中间件。

(7) app.use(bodyParser.urlencoded({ extended: false }))

加载解析 urlencoded 请求体的中间件。

(8) app.use(cookieParser())

加载解析 cookie 的中间件。

(9) app.use(express.static(path.join(dirname, ‘public’)))

设置 public 文件夹为存放静态文件的目录。

(10) app.use(‘/’, routes)和app.use(‘/users’, users)

路由控制。

(11)

// catch 404 and forward to error handler
app.use(function(req, res, next) {
var err = new Error('Not Found');
err.status = 404;
next(err);
});

捕获404错误,并转发到错误处理器。

(12)

```
// error handlers
// development error handler
 // will print stacktrace
if (app.get('env') === 'development') {
app.use(function(err, req, res, next) {
res.status(err.status || 500);
res.render('error', {
  message: err.message,
  error: err
    });
 });
}
```

开发环境下的错误处理器,将错误信息渲染 error 模板并显示到浏览器中。

(13)

// production error handler
// no stacktraces leaked to user
app.use(function(err, req, res, next) {
  res.status(err.status || 500);
  res.render('error', {
    message: err.message,
    error: {}
  });
});

生产环境下的错误处理器,将错误信息渲染 error 模板并显示到浏览器中。

(14) module.exports = app

导出 app 实例供其他模板调用。

  • bin文件的解析

(1) #!/usr/bin/env node

表明这是一个 node 可执行文件。

(2) var debug = require(‘debug’)(‘blog:server’)

引入 debug 模块,打印调试日志。

(3) var app = require(‘…/app’)

引入导出的 app 实例。

(4)


var port = normalizePort(process.env.PORT || '3000');
app.set('port', port);


设置端口号。

(5) var server = http.createServer(app)

创建 HTTP 服务。

(6)

server.listen(port);
server.on('error', onError);
server.on('listening', onListening);

启动工程并监听 3000 端口。

  • routes/index.js 文件:
var express = require('express');
var router = express.Router();

/* GET home page. */
router.get('/', function(req, res, next) {
  res.render('index', { title: 'Express' });
});

module.exports = router;

先导入 express模块,然后生成一个路由实例用来捕获访问主页的 GET 请求,导出这个路由并在 app.js 中通过 app.use(‘/’,routes)加载。这样,当访问主页时,就会调用 res.render(‘index’, {title:‘Express’}) 渲染 views/index.ejs 模板并显示到浏览器中。

  • views/index.ejs 文件:
<!DOCTYPE html>
<html>
 <head>
   <title><%= title %></title>
   <link rel='stylesheet' href='/stylesheets/style.css' />
 </head>
 <body>
   <h1><%= title %></h1>
   <p>Welcome to <%= title %></p>
 </body>
</html>

在渲染模板时,我们传入了一个变量 title 值为 express 字符串,模板引擎将所有 <%= title %> 替换为 express,然后将渲染后生成的html显示到浏览器中

express 路由

所谓路由,就是如何处理HTTP请求中的路径部分

(比如“http://xxx.com/list/news”这个URL,路由将决定怎么处理/list/news这个路径)

app.get(‘/’,callback)

表示我们添加了一条路由,指定”/“这个路径由get的第二个参数所代表的函数callback来处理。

定义规则

app.verb(path,[callback…],callback)

说明

1、verb表示方法,可以是get、post、put、delete等,常用的当然就是前面两个。

2、path表示路径,可以是一个字符串(String),也可以是一个正则表达式(Regex)。

3、callback表示路径处理函数,里面有个next方法,可以用next(),也可以用next(‘router’),我们就只需要关注位置1,为了让第二个相同路由执行,位置2可以是next(),也可以是next(‘router’),表示执行下一个相同路由。

2024年最全scrapy+scrapyd+gerapy 爬虫调度框架,字节跳动面试时间 scrapyd是一个用于部署和运行scrapy爬虫的程序,它允许你通过JSON API来部署爬虫项目和控制爬虫运行,scrapyd是一个守护进程,监听爬虫的运行和请求,然后启动进程来执行它们方便地控制爬虫运行直观地查看爬虫状态实时地查看爬取结果简单地实现项目部署统一地实现主机管理轻松地编写爬虫代码。 阅读详情

相关推荐

[ensp报错:USG6000V错误代码45解决方案]

[ensp报错:USG6000V:错误代码45解决] [ensp报错:USG6000V:错误代码45解决] 第一种处理方式: ensp的45错误帮助文档里的解决方法:(这里就不说了,上华为爸爸的图) ensp的45错误:如果你的45错误不是描述的那个,可能是ensp与virtualbox不兼容了。 错误描述:具体表现为在virtualbox里没有vfw_usg的条目,虚拟介质管理器里也没有相应的条目: 就是vfw_usg_vdi这个 这种情况下你把ensp卸载重装多少次都没用,原因在两个软件的兼容

weixin_45456536的博客 3万+

Express 路由

路由用于确定应用程序如何响应对特定端点的客户机请求,包含一个 URI(或路径)和一个特定的 HTTP 请求方法(GET、POST 等)。 每个路由可以具有一个或多个处理程序函数,这些函数在路由匹配时执行。它的使用形式如下: app.METHOD(PATH, HANDLER) 其中: app 是 express 的实例。 METHOD 是 HTTP 请求方法。 PATH 是服务器上的路径。 HA...

秋殇阁 2388

EMC案例:解决千兆网口RTL8211F EMI问题

摘要:本文分析了Amlogic S812平台OEM项目中RTL8211F-CG千兆网卡EMI辐射超标问题。发现百兆测试时25MHz时钟有3dB余量,但千兆125MHz时钟导致超标。问题根源包括:未关闭PHY芯片悬空CLKOUT引脚、TX/RXCLK端RC位置错误、包地不完整及参考地缺失。解决方案涉及软件关闭无用时钟、优化RC布局、加强包地与打孔、调整共模电感位置,并在HDMI 3.3V加磁珠。关键结论指出千兆网125MHz时钟需严格包地打孔,且RC取值需平衡EMI与通信性能。

电子绿洲的博客 1279

express().Router().router.get()和express.get()都可以实现路径跳转,他么之间有什么区别,分别应该怎么使用,有什么优劣

express().Router().router.get() 是用于创建一个新的路由对象,并在该对象上定义一个路由。它是通过 express.Router() 创建一个新的路由对象,然后在该对象上使用 .get() 方法定义路由。使用 express().Router().router.get() 可以将路由定义封装到一个单独的路由对象中,使代码更加模块化和清晰。如果需要模块化管理路由,建议使用 express().Router().router.get();

weixin_74085863的博客 670

Visionpro 使用CogPMAlignTool工具提取匹配轮廓点

【代码】Visionpro 使用CogPMAlignTool工具提取匹配轮廓点。

weixin_43947315的博客 2092

【2025CVPR】基于脉冲神经网络的能效目标检测模型:Multi-scale Spiking Detector(MSD)深度解析

本文提出了一种创新的多尺度脉冲神经网络目标检测器(MSD),通过生物启发的ONNB模块和MSDF框架实现了高效准确的目标检测。该模型采用端到端直接训练策略,在COCO数据集上达到62.0%mAP的精度,同时仅需7.8M参数和6.43mJ能耗,较传统方法提升2.8%精度并降低82.9%能耗。实验验证了其在小目标检测和事件数据处理的优越性,为边缘计算应用提供了新范式。

hasakie的博客 1109

Express笔记

Express笔记

踩的坑越多,经验越多 684

保姆级教程:用Unity为麒麟系统打包Linux应用(含路径权限全攻略)

本文提供了一份详细的Unity跨平台开发指南,重点介绍如何在麒麟系统上打包和部署Linux应用。从开发环境配置、路径权限处理到性能优化和常见问题解决,全面解析了Unity项目在国产操作系统上的适配流程,帮助开发者高效完成跨平台应用开发。

weixin_28692867的博客 505

Express:express中获取Get请求参数的两种方法

Express框架中使用req.query方法获取GET参数,框架内部会将GET参数转换为对象并返回。 操作代码示例: // 引入express框架 const express = require('express'); // 创建网站服务器 const app = express(); // 获取GET请求参数 app.get('/index',(req,res) => { res.send(req.query); }) // 监听端口 app.listen(3000); console.l

weixin_46682277的博客 9940

Asterisk中MixMonitor之支持接通后录音

一、概述 当我们使用开源的IPPBX(比如Elastix-2.5/4.0或者ISSABEL-4.0/FreePBX)的时候Outbound和Inbound路由(RingGroup/FollowMe)中有一个Call Recording选项,其值包括:Allow、Record immediately、Record On Answer和Nerver。当选择为Record On Answer,其实就是MixMonitor自带一个b选项。 尽管Asterisk自带的MixMoni...

宽简厚重—博约 1156

Git下载与安装

一、Git下载 二、Git安装

欢迎订阅我的“JAVA全栈开发笔记(全)”专栏,价格优惠,仅需19.9元。 6万+

node的express框架接收get/post请求时,参数获取方式

一.获取get请求参数 情况一:参数是url的一部分: 1 eg:router.get('/nodeServer/dataSet/page/:name/:pageNum/:pageSize', function(request, resopnse){ 2 // 获取参数name , pageNum, pageisze 3   let name = request.params.name;  5 let pageNum = request.params.pageNum; 7 let p

u010227042的博客 1484

全网最强AI辅助课题申报教程!超详细流程拆解,助你快速提高课题申报成功率(附各部分高效提示词)

实验法要详细说明自变量、因变量、实验类型、实验过程、实验步骤、测量工具名称、被试取样方式、无关变量控制方法。这个部分就是让评审专家相信我们有能力把这个项目干成,写的时候要重点突出两块内容:第一是研究基础,包括你或团队在相关领域已有的研究成果,比如发表的论文、承担过的课题、获得过的奖励、相关研究经验等,要具体、有说服力;课题申报专门给我们留了一小节用来突出课题的创新之处,不管是研究角度、研究对象、研究方法,还是应用价值都可以提炼作为我们的创新点,最后的语气成果也要明确具体,且要和课题内容紧密相关。

智能AI让学术科研更容易 665

nodejs开发——express框架学习

在我们实际开发项目时,总是会用一些框架,而不是自己从头开始开发。而在nodejs中,express框架就是一个使用频率最高的一个框架。本篇主要来讲解express的使用。加载express框架       由于express不是系统框架,所以需要手动加载,在项目目录下使用命令“npm install express --save”   ,就可以在项目中集成express框架,使用--save参数是

乞力马扎罗的雪CYF的博客 3479

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

express框架的学习与基本使用

1. 认识express框架 Express是一个基于Node平台的web应用开发框架,它提供了一系列的强大特性: 提供了方便简洁的路由定义方式 对获取HTTP请求参数进行了简化处理 对模板引擎支持程度高,方便渲染动态HTML页面 提供了中间件机制有效控制HTTP请求 拥有大量第三方中间件对功能进行扩展 以下为express框架的基本使用: // 引入express框架 const expre...

就是有点怕怕的博客 508

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

Express框架学习总结

Express框架学习总结           最近学了Express框架,在学习的过程中,参考了一些资料,感觉Express框架比原生Node.js好用多了。下面我将我学习总结的内容如下:                Express中文网     http://www.expressjs.com.cn/            Express英文网     ht

黎先生的博客 681

前端学习(1365):express框架导读

歌谣的博客 307

Express框架基础复习学习笔记,包含(Express简介,基本用法,Express路由,中间件,独立写接口)

本文包含 Express框架 基本内容,参考于黑马教学视频通过自己理解整理,所以这是一篇用于小白新手入门,或者复习使用的笔记, 从最基础带你认识Express基本内容, 到可以独立封装自己的接口 如有做的不好的地方,敬请谅解,欢迎指出,持续更新改正......

weixin_60896381的博客 2422

Express框架学习笔记

/ 常量mw所指向的,就是一个中间件函数// 注意:当前中间件业务处理完毕后,必须调用next()函数// 表示把流转关系转交给下一个中间件或路由next()需求:自己手动模拟一个类似于express.urlencoded这样的中间件,来解析POST提交到服务器的表单数据。定义中间件监听req的data事件监听req的end事件使用querystring模块解析请求体数据将解析出来的数据对象挂载为req.body将自定义中间件封装为模块。

2301_79614379的博客 1149

Express框架学习

1. Express框架简介 1.Express框架是什么 Experss是一个基于Node平台的web应用开发框架,用于创建web应用 使用 npm install express 命令进行下载 2.Express框架特性 提供简洁的路由定义方式 对获取HTTP请求参数进行了简化 对模板引擎支持度高,方便渲染动态HTML页面 提供了中间件机制有效控制HTTP请求 拥有大量第三方中间件对功能进行扩展 2. Express框架中间件 1.什么是中间件 中间件就是一堆方法,可以接收请求作出响应.

dairen_j的博客 296

Express框架学习记录一:Express框架基础使用

Express框架一、什么是Express框架二、安装Express三、框架的使用1.根据请求地址返回给前端内容2.中间件3.use中间件4.中间件的作用5.更改状态码6.捕获错误的错误处理中间件7.构建模块化路由Router8.获取get请求附带的参数9.获取post请求附带的参数10.路由占位参数11.静态资源访问功能12.express的模板引擎13.locals对象 一、什么是Express框架 基于Node的一个框架,封装了读取html文件、css文件的操作,直接返回封装好的内容,让开发人员更加注

吮指原味鸡的博客 1918

Nodejs之express框架学习

Express框架学习笔记 MDN永远的神 参考资料 安装 Express - Express 中文文档 | Express 中文网 (expressjs.com.cn) [express框架 - 小火柴的蓝色理想 - 博客园 (cnblogs.com)](https://www.cnblogs.com/xiaohuochai/p/7189074.html#:~:text=Express是一个简洁、灵活的 node.js Web 应用开发框架%2C 它提供一系列强大的特性,帮助开发者创建各种 Web 和移

fujiaxu666的博客 1360

Express框架上手--学习

一、 Express框架简介及初体验 1.1 Express框架是什么 Express是一个基于Node平台的web应用开发框架,它提供了一系列的强大特性,帮助你创建各种Web应用。 我们可以使用 npm install express 命令进行下载。 1.2 Express框架特性 提供了方便简洁的路由定义方式 对获取HTTP请求参数进行了简化处理 对模板引擎支持程度高,方便渲染动态HTML页面...

weixin_43482965的博客 352

nodeJS之Express框架初步学习

初步学习NodeJS的express框架,觉得有必要记录一下学习过程中遇到的问题和解决的方法,以便加深印象。 1. 写了一个简单的express框架的demo,在运行的时候,出现了错误,找不到express模块。 通过查询和事件,几分钟后解决了这个问题。解决方法是:在当前目录下执行命令 npm install express,就解决了问题。

Oranq的博客 479
上一篇: 变量的解构赋值
下一篇: koa框架初学习
跟着大佬学习
博客等级 码龄8年 2粉丝 20原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值