作者 | Jeskson

来源 | 达达前端小酒馆

Express服务器开发

创建Express应用程序,Express路由,pug视图模板的使用

Express简介:

让我们来创建Express应用程序,Express是一个Node.js Web应用框架,它很强大,可以为用户创建各种Web应用和HTTP工具,使用Express框架可以搭建一个完整功能的网站。

Express框架的优点:

可以用中间件来响应HTTP请求,可以定义路由表用于执行不同的HTTP请求,可以向模板传参数来动态渲染HTML页面。

命令行安装Express框架:

cnpm install express --save

Express框架安装在node_modules目录中,然后需要一起安装如下模块:

body-parser是node.js的中间件,可以处理JSON,Raw,Text,URL编码的数据,cookie-parser是一个解析Cookie的中间件,然后通过req.cookies可以获取传过来的Cookie,并转为对象。

multer是node.js的中间件,用于处理enctype="multipart/form-data"的表单数据。

cnpm install body-parser --save
cnpm install cookie-parse --save
cnpm install multer --save

让我们来看看express框架的版本号:

cnpm list express

创建第一个Express框架实例

目的为了输出:“hello”,命名:express_demo.js文件

// 引入node模块
const express = require('express'); // 创建express程序
const app = express(); // 添加HTTP路由
app.get('/', function(request, response){
// 输出响应消息
response.send('hello express');
}); // 启动HTTP服务器
app.listen(8080, function(){
console.log('express app');
});

执行项目:

node express_demo.js

然后就可以用http://127.0.0.1:8080

express框架使用request对象和response对象来处理请求和响应的数据:

app.get('/', function(req,res){
})

request对象为HTTP请求

req.app

为callback,回调函数外部文件,利用req.app访问express的实例

req.baseUrl

获取当前安装的URL路径

req.body/req.cookies

为获得“请求主体”

req.hostname/req.ip

获取主机名,ip地址

req.originalUrl

获取原始请求URL

req.params

获取路由的参数

req.path

获取请求路径

req.protocol

获取协议类型

req.query

获取URL的查询参数

req.route

获取当前匹配的express路由

req.subdomains

获取子域名

req.accepts()

检查可接受请求的文档类型

req.get()

获取指定的HTTP请求头

req.is()

判断请求头Content-Type的Mime类型

response对象为HTTP响应

res.app

为callback,回调函数外部文件,利用res.app访问express的实例

res.append()

追加指定HTTP请求头

res.set()

在res.append()后重置之前设置的请求头

res.clearCookie()

清除Cookie

res.download()

传送指定路径的文件

res.get()

返回指定的HTTP请求头

res.json()

传送json响应

res.jsonp

传送jsonp响应

res.location()

只设置响应的LocationHTTP请求头,不设置状态码或者close response

res.redirect()

设置响应的LocationHTTP请求头,并且设置状态码302

res.send()

传送HTTP响应

res.status()

设置HTTP状态码

res.type()

设置Content-Type的MIME类型

express路由

express路由,由URI,HTTP请求和若干个句柄组成。

// 引入node模块
const express = require('express'); // 创建express程序
const app = express(); // 添加http路由
app.get('/',function(request,response) {
// 输出响应消息
response.send('hello dashucoding');
}); app.get('/users', function(req,res) {
// req , res
res.send('user');
}); // 启动HTTP服务器
app.listen(8080, function(){
console.lo('express app');
});

GET

请求一个指定资源的表示形式,只用于获取数据

POST

用于将尸体提交到指定的资源

HEAD

请求一个与GET相同的响应,但没有响应体

PUT

用于请求有效载荷替换目标资源的所有当前表示

DELETE

删除指定的资源

CONNECT

建立一个由目标资源标识的服务器的隧道

OPTIONS

用于描述目标资源的通信选项

PATCH

用于对资源应用部分修改

app.get('/about',function(req,res){
res.send('about');
}); app.get('/ab?cd',function(req,res){
res.send('ab?cd');
} app.get('/ab(cd)?e',function(req,res){
res.send('ab(cd)?e');
});

路由句柄,为请求处理提供多个回调函数,next('route')方法

let d1 = function(req,res,next){
console.log('1');
next();
}; let d2 = function(req,res,next){
console.log('2');
next();
}); let d3 = function(req,res,next){
console.log('3');
next();
}); app.get('/', [d1,d2]);

next用于执行下一个回调函数,next('route')用于执行下一个相同路由。

// 引入node模块
const express = require('express');
// 创建express程序
const app = express();
// 添加http路由
app.get('/', function(request, response){
// 输出响应消息
response.send('hello');
});
app.get('/users', function(req,res){
res.send('user');
}); // 动态
app.get('/users/id', function(req,res){
let id = req.params.id;
// 返回响应
res.send('id='+id);
}); // 启动HTTP服务器
app.listen(8080,function(){
console.log('expresss app');
}); const express = require('express');
const app = express();
app.get('/', function(request, response){
response.send('hello');
});
app.get('/users',function(req,res){
res.send('users');
});
app.param('id',(req,res,next)=>{
console.log('hello');
if(req.params.id==='1'){
next();
}else{
res.sendStatus(404);
}
}); app.get('/users/:id',(req,res)=>{
res.send('hello');
}); // 启动服务器
app.listen(8080,function(){
console.log('express');
});

pug视图模板

命令行下载:

npm install pug

pug.compile()将pug代码编译成一个JavaScript函数。

app.js

const express = require('express');

const app = express();

// 配置视图模板
app.set('view engine', 'pug');
app.set('views', './views'); // 添加HTTP路由
app.get('/', function(request, response){
response.render('index.pug');
// 输出响应消息,加载并解析index.pug文件
}); app.get('/users',function(req,res){
res.render('users.pug',{
title:'user',
users:[
{id:1,name:'张三',age:18}
]
});
});
// 启动HTTP服务器
app.listen(8080,function(){
console.log('express');
});

users.pug:

doctype html
html
head
meta(charset="utf-8")
title #{title}
body
#app
for user in users
div
p id=#{user.id}
p name=#{user.name}
p age=#{user.age} pug.render()模板函数: const pug = require('pug'); console.log(pug.renderFile('template.pug',{
name:'dada'
});

执行pug.renderFile()函数,会把编译出来的函数自动储存到内部缓存中

❤️ 不要忘记留下你学习的脚印 [点赞 + 收藏 + 评论]

作者Info:

【作者】:Jeskson

【原创公众号】:达达前端小酒馆。

【福利】:公众号回复 “资料” 送自学资料大礼包(进群分享,想要啥就说哈,看我有没有)!

【转载说明】:转载请说明出处,谢谢合作!~

大前端开发,定位前端开发技术栈博客,PHP后台知识点,web全栈技术领域,数据结构与算法、网络原理等通俗易懂的呈现给小伙伴。谢谢支持,承蒙厚爱!!!


若本号内容有做得不到位的地方(比如:涉及版权或其他问题),请及时联系我们进行整改即可,会在第一时间进行处理。


请点赞!因为你们的赞同/鼓励是我写作的最大动力!

欢迎关注达达的CSDN!

这是一个有质量,有态度的博客

Express服务器开发的更多相关文章

  1. NodeJS+Express+MySQL开发小记(2):服务器部署

    http://borninsummer.com/2015/06/17/notes-on-developing-nodejs-webapp/ NodeJS+Express+MySQL开发小记(1)里讲过 ...

  2. express框架开发案例

    express是基于Node.js平台的web应用开发框架,用express框架开发web项目可以直接构建整个项目框架并且将前端页面跟后台贯穿起来,用起来还是灵活的:最近刚开始学习,写篇博客总结下,涉 ...

  3. C++服务器开发之笔记三

    为什么需要原子性操作? 我们考虑一个例子:(1)x++这个常见的运算符在内存中是怎样操作的?从内存中读x的值到寄存器中,对寄存器加1,再把新值写回x所处的内存地址 若是有两个线程同时对同一个变量++, ...

  4. Python09作业思路及源码:高级FTP服务器开发(仅供参考)

    高级FTP服务器开发 一,作业要求 高级FTP服务器开发 用户加密认证(完成) 多用户同时登陆(完成) 每个用户有不同家目录且只能访问自己的家目录(完成) 对用户进行磁盘配额,不同用户配额可不同(完成 ...

  5. linux服务器开发浅谈

    [开发前准备] 在进行linux服务器开发之前,必须很清楚地了解所开发的对象需要考虑的相关问题比如:功能架构:提供服务的模块体系结构稳定性:服务器的出core率,内存泄露情况性能:请求与返回的速度与正 ...

  6. linux下http服务器开发

    linux下http服务器开发 1.mystery引入 1)超文本传输协议(HTTP)是一种应用于分布式.合作式.多媒体信息系统的应用层协议 2)工作原理 1)客户端一台客户机与服务器建立连接后,会发 ...

  7. NIO原理剖析与Netty初步----浅谈高性能服务器开发(一)

    除特别注明外,本站所有文章均为原创,转载请注明地址 在博主不长的工作经历中,NIO用的并不多,由于使用原生的Java NIO编程的复杂性,大多数时候我们会选择Netty,mina等开源框架,但理解NI ...

  8. 基于react全家桶+antd-design+webpack2+node+express+mongodb开发的前后台博客系统

    很久没更新博客,最近也有点忙,然后业余时间搞了一个比较完整基于react全家桶+antd-design+webpack2+node+express+mongodb开发的前后台博客系统的流程系统,希望对 ...

  9. openfire:基于开源 Openfire 聊天服务器 - 开发Openfire聊天记录插件

    基于开源 Openfire 聊天服务器 - 开发Openfire聊天记录插件 上一篇文章介绍到怎么在自己的Java环境中搭建openfire插件开发的环境,同时介绍到怎样一步步简单的开发openfir ...

随机推荐

  1. LeetCode 739:每日温度 Daily Temperatures

    题目: 根据每日 气温 列表,请重新生成一个列表,对应位置的输入是你需要再等待多久温度才会升高超过该日的天数.如果之后都不会升高,请在该位置用 0 来代替. 例如,给定一个列表 temperature ...

  2. TP5 使用验证码功能

    工作中后台开发使用的是 TP5,但是对语法不是很熟悉,总是看着手册写代码.当时做 Java 的时候也是这样,很多语法需要靠百度.不是不能写代码,但是这样的效率感觉不高,没有行云流水的感觉,要是能有聊天 ...

  3. tornado的使用-日志篇

    tornado的使用-日志篇

  4. Salesforce学习之路(八)一次拉取多个文件或全部文件至本地

    在开发中,经常会遇到本地工程错乱或者误操作导致本地本地项目被删除,此时利用SFDX: Retrieve Source from Org只会拉取新建并且名称相同的组件,若通过创建一个个文件,然后再拉取的 ...

  5. Java对象依次取出属性,并去掉特殊字符

    工作里从数据库往前台调数据的时候,庞大的数据量里难免有些字段里包含空格或者一些特殊字符,在前台显示出来会非常不美观,所以在此记录一个去对象内所有属性特殊字符的方法: //获得该对象属性的集合 Fiel ...

  6. Express 框架以及与http-proxy-middleware整合实现代理

    1.Express的简单使用 1.简介 Express 是一个简洁而灵活的 node.js Web应用框架, 提供了一系列强大特性帮助你创建各种 Web 应用,和丰富的 HTTP 工具. 使用 Exp ...

  7. 离线缓存 Visual Studio 2019 (VS2019)的方法

    1. 下面是以管理员身份运行命令行: https://docs.microsoft.com/en-us/visualstudio/install/workload-component-id-vs-en ...

  8. .net core 3.0中的Json API

    在.net core 3.0中,内置了一套新的json api,主要用于去除asp.net core对json.net的依赖,同时也提供了更好的性能(直接处理 UTF-8,而无需转码到 UTF-16) ...

  9. 【入门篇】前端框架Vue.js知识介绍

    一.Vue.js介绍 1.什么是MVVM? MVVM(Model-View-ViewModel)是一种软件架构设计模式,它源于MVC(Model-View-Controller)模式,它是一种思想,一 ...

  10. 倒计时3天!i春秋四周年盛典狂欢,钜惠不停

    六月注定是不平凡的 感恩父亲节 父爱如山亦如海 难忘毕业季 青春无悔不散场 嗨购618 优惠福利送不停 更值得期待的是 在这个不平凡的六月 迎来了i春秋四周年庆典 当周年庆遇到618 会擦出怎样的火花 ...