Express

express 是 node 中最流行的框架之一。

1. 起步

安装:

  1. npm install express --save

hello world

  1. const express = require('express')
  2. // 创建服务器
  3. const app = express()
  4. // 当服务区 收到get 请求 '/' 时, 指向回调处理函数
  5. app.get('/', function (req, res) {
  6. res.send('hello world')
  7. })
  8. app.get('/about', function (req, res) {
  9. console.log(req.query)
  10. res.send('hello about me~')
  11. })
  12. // 在 express 中 开放资源 就是一个 api 的事
  13. app.use('/static/', express.static('./static/'))
  14. // http://localhost:3000/static/loading.gif 即可访问图片
  15. // 建立监听端口 相当于 server.listen
  16. app.listen(3000, function () {
  17. console.log('app is running at http://localhost:3000')
  18. })

2. 基本路由

get:

  1. app.get('/', function (req, res) {
  2. res.send('hello world')
  3. })

post:

  1. app.post('/', function (req, res) {
  2. res.send('get a post request')
  3. })

3. 静态服务

  1. // 直接就能访问public目录下的资源
  2. app.use(express.static('public'))
  3. // public/xxx
  4. app.use('/public/', express.static('./public/'))
  5. // static/xxx
  6. app.use('/static/', express.static('./static/'))

4. 在express中使用 art-template模板引擎

安装

  1. npm install --save art-template
  2. npm install --save express-art-template

配置:

  1. app.engine('html', require('express-art-template')) // 最核心的代码

配置使用 art-template渲染模板引擎

第一个参数表示,当渲染以 .html结尾的文件时 使用渲染模板,可以更改为其他的后缀

使用:

  1. app.get('/', function (req, res) {
  2. res.render('index.html', {
  3. title: '.....' // 渲染属性
  4. })
  5. })

express 为 response 响应对象提供了一个 render 方法

这个render方法默认不可以使用,只有像上面配置了模板引擎后才可以使用这个方法

res.render('html模板名', {模板数据})

上面的第一个参数不能写路径,express默认去 项目的 views 目录中寻找该模板文件

也就是说 express 有一个约定,开发人员最好把视图文件都放在 views 文件目录中

如果想要修改默认的 views 目录, 可以 app.set('views', render函数的默认路径)来更改

5. 在express中获取 表单 get 请求体数据

  1. req.query

express 内置了一个 API, 可以直接 通过 req.query 来获取

6. 在express中获取 表单 post 请求体数据

Express middleware 中间件 给我们提供了很多常用的插件,其中就有处理 post 请求体的插件body-parser

安装:

  1. npm install body-parser

配置:

  1. var express = require('express')
  2. var bodyParser = require('body-parser')
  3. var app = express()
  4. // 配置 bodyParser 只要加入这个配置,则在 req 请求对象上 会多出一个属性body
  5. // 也就是说你可以直接通过 req.body 来获取表单 post 请求体数据了
  6. app.use(bodyParser.urlencoded({ extended: false }))
  7. // parse application/json
  8. app.use(bodyParser.json())
  9. app.use(function (req, res) {
  10. res.setHeader('Content-Type', 'text/plain')
  11. res.write('you posted:\n')
  12. // 通过 req.body 获取数据
  13. res.end(JSON.stringify(req.body, null, 2))
  14. })

7. 在express中 使用 express-session

安装:

  1. npm i express-session
  2. # 引用
  3. var session = require('express-session')

配置:

  1. app.use(session({
  2. secret: 'keyboard cat',
  3. resave: false,
  4. saveUninitialized: true
  5. // cookie: { secure: true }
  6. }))
  • secret: 配置加密字符串,会在原有加密基础上和这个字符串拼接起来去加密,增加安全性,防止客户端恶意伪造
  • saveUninitialized: 默认为 true 即无论是否使用 session 都会默认分给你一把钥匙

使用:

  1. // 添加 session 数据
  2. req.session.foo = 'bar'
  3. // 获取 session 数据
  4. req.session.foo

secret: 该插件会为 req 请求对象添加一个成员 req.session,默认是一个对象,session数据内存存储的,服务器一旦重启就会丢失,真正的生产环境会把 session 进行持久化存储。

8. 修改完代码自动重启服务

我们可以使用一个第三方工具 nodemon 来帮助我们解决频繁修改服务端代码重启服务器的问题

nodemon是一个基于node.js开发的第三方命令,我们一般使用时可全局安装

  1. npm install nodemon --global

安装完毕后,使用命令

  1. nodemon app.js(要执行的文件)

通过 nodemon启动后的服务,会被实时监控,只要文件发生改变,就会自动帮你重启服务器。

9. 用express 来重写上次的 原生node留言版

  1. var express = require('express')
  2. var app = express()
  3. // 配置使用 art-template渲染模板引擎
  4. // 第一个参数表示,当渲染以 .html 结尾的文件时 使用渲染模板,可以更改
  5. app.engine('html', require('express-art-template'))
  6. app.use('/public/', express.static('public'))
  7. var comments = [
  8. {
  9. name: '阿孔',
  10. message: 'Yo~~',
  11. dataTime: '2018-09-27'
  12. },
  13. {
  14. name: '老许',
  15. message: 'Yo~@@@~',
  16. dataTime: '2018-09-27'
  17. }
  18. ]
  19. // express 为 response 响应对象提供了一个 render 方法
  20. // 这个render方法默认不可以使用,只有像上面配置了模板引擎后才可以使用这个方法
  21. // res.render('html模板名', {模板数据})
  22. // 上面的第一个参数不能写路径,express默认去 项目的 views 目录中寻找该模板文件
  23. // 也就是说 express 有一个约定,开发人员最好把视图文件都放在 views 文件目录中
  24. // 如果想要修改默认的 views 目录, 可以 app.set('views', render函数的默认路径)来更改
  25. app.get('/', function (req, res) {
  26. res.render('index.html', {
  27. comments
  28. })
  29. })
  30. app.get('/post', function (req, res) {
  31. res.render('post.html')
  32. })
  33. app.get('/pinglun', function (req, res) {
  34. var comment = req.query // req.query 只能拿get请求参数
  35. comment.dataTime = '2018-10-01'
  36. comments.unshift(comment)
  37. res.redirect('/')
  38. // res.statusCode = 302
  39. // res.setHeader('Location', '/')
  40. // express 封装的 res.send 和 res.redirect 等方法都会自动结束响应
  41. })
  42. app.listen(3000, function () {
  43. console.log('http://localhost:3000')
  44. })

express 封装了很多方法,res.render, res.redirect, req.query 等,打打减少了代码量。

这里知识简单的尝试一下express,继续学习。

Express 初步使用的更多相关文章

  1. express 框架初步体验

    一. 安装express 1.打开cmd  全局安装express 输入:npm install -gd express 2. 安装命令行工具,不然你输入express 会出现 不是内部命令. 输入: ...

  2. Express的初步使用

    废话不多说直接上步骤: 1. 首先建立一个新文件夹,进入此文件夹的命令窗口通过 npm init 命令为你的应用创建一个           package.json 文件,然后下载express模块 ...

  3. express框架初步

    express框架初步使用 var exp = require('express'); var ejs = require('ejs'); var app = new exp(); app.set(& ...

  4. 初步认识Node 之Express

    通过本文,你会对Express有一个较为具体的了解.    起源 2009年6月26日,TJ Holowaychuk提交了Express的第一次commit,接下来在2010年1月2日,有660次co ...

  5. 初步认识Express框架渲染视图

    给出一个简单的例子,讲述模板渲染的基础功能 在nodejs中使用express框架,默认的是ejs和jade渲染模板,以下是以ejs模板进行解析 1.ejs 模板安装 npm install ejs ...

  6. 初步认识express,并创建web服务器,挂载静态资源

    1.Express简介 1.1什么是Express 官方给出的概念:Express 是基于 Node.js 平台,快速.开放.极简的 Web 开发框架,官方网址 相似用途:Express 的作用和 N ...

  7. express-2 express介绍

    脚手架 大多数项目都需要一定数量的"套路化"代码,所有可以创建一个通用的项目骨架,每次开始新项目时,只需复制这个骨架,或者说是模板. RoR把这个概念向前推进了一步,它提供了一个可 ...

  8. 修改VISUAL STUDIO EXPRESS 2012新建C++文件编码

    本站文章除注明转载外,均为本站原创或者翻译. 本站文章欢迎各种形式的转载,但请18岁以上的转载者注明文章出处,尊重我的劳动,也尊重你的智商: 本站部分原创和翻译文章提供markdown格式源码,欢迎使 ...

  9. node.js之express框架

    之前学习过node.js接触过express框架,最近为了编写一个mock server正好用到了express.下面正好就跟大家介绍一下关于express.今天的内容主要围绕这么几个方面? expr ...

随机推荐

  1. [Javascript Crocks] Create a Maybe with a `safe` Utility Function

    In this lesson, we’ll create a safe function that gives us a flexible way to create Maybes based on ...

  2. 深度学习利器:TensorFlow在智能终端中的应用——智能边缘计算,云端生成模型给移动端下载,然后用该模型进行预测

    前言 深度学习在图像处理.语音识别.自然语言处理领域的应用取得了巨大成功,但是它通常在功能强大的服务器端进行运算.如果智能手机通过网络远程连接服务器,也可以利用深度学习技术,但这样可能会很慢,而且只有 ...

  3. FileCopy文件复制

    package cn.com.filecopy; import java.io.FileInputStream; import java.io.FileNotFoundException; impor ...

  4. winFrom线程

    方法--->委托--->BeginInvoke用指定的参数异步执行委托 委托就是我想做什么,而你可以作什么,我就让你去做.

  5. vue2.0项目中使用Ueditor富文本编辑器应用中出现的问题

    1.如何设置config中的内容 readonly:true,//只读模式wordCount:false,//是否开启字数统计enableAutoSave: false,//自动保存功能 重点:ena ...

  6. Android 关于Toolbar和FragmentActivity的问题

    今天在工作中遇到用Fragment搭Tab框架时,FragmentActivity无法使用Toolbar的问题.查了许多资料,其实AppComponent继承自FragmentActivity,所以A ...

  7. Openwrt PPTP Server笔记

    1.安装PPTP opkg updateopkg install kmod-mppeopkg install pptpd 2./etc/pptpd.conf option /etc/ppp/optio ...

  8. mysql 主从错误情况与原因

    mysql 主从错误情况1,master 上删除一条记录是从库报错 找不到该记录引起原因:master出现宕机或者从库已经删除.解决方案:stop slave;set global sql_slave ...

  9. 用JS解决Asp.net Mvc返回JsonResult中DateTime类型数据格式的问题

    当用ajax异步时,返回JsonResult格式的时候,发现当字段是dateTime类型时,返回的json格式既然是“/Date(1435542121135)/” 这样子的,当然这不是我们想要的格式. ...

  10. boost_1_63_0在Win10上VS2015编译

    装了个最新版的boost库,各种尝试,各种看网上的文章,然而就是没有编译成功.我真是哭晕在厕所. 最后还是自己老老实实啃官方文档.终于编出来了.下面记录下方法. 一·最简单的一种方法. 1.直接打开命 ...