Express 框架核心特性:

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

express保留了Node原生的功能,添加了一些方法增强原有的功能

安装 Express

  • npm install express --save

几个重要的模块是需要与 express 框架一起安装的

body-parser - node.js 中间件,用于处理 JSON, Raw, Text 和 URL 编码的数据。

cookie-parser - 这就是一个解析Cookie的工具。通过req.cookies可以取到传过来的cookie,并把它们转成对象。

multer - node.js 中间件,用于处理 enctype="multipart/form-data"(设置表单的MIME编码)的表单数据

请求和响应

  • Express 应用使用回调函数的参数: request 和 response 对象来处理请求和响应的数据。
app.get('/', function (req, res) {
// --
})

req.path:获取请求路径
req.query:获取URL的查询参数串
req.route:获取当前匹配的路由

res.append():追加指定HTTP头
res.send():传送HTTP响应
res.cookie(name,value [,option]):设置Cookie
opition: domain / expires / httpOnly / maxAge / path / secure / signed
res.clearCookie():清除Cookie
res.send():传送HTTP响应

路由

  • 路由路由决定了由谁(指定脚本)去响应客户端请求通过路由提取出请求的URL以及GET/POST参数。

  使用express中的路由访问子页面必须使用use请求

  var server=express();
server.listen();
server.use('/', require('./route/web.js')());
server.use('/admin/', require('./route/admin.js')());

    require()访问route/admin.js文件,返回路由的页面。

const express=require('express');
module.exports=function (){ var router=express.Router(); router.get('/login', (req, res)=>{
res.render('admin/login.ejs', {});
}); router.get('/', (req, res)=>{
res.render('admin/index.ejs', {});
}); router.get('/bannerInserOrUpdate',(req,res)=>{
res.render('admin/bannerInserOrUpdate.ejs')
});
return router;
};

Get请求

  • 表单中通过 GET 方法提交两个参数,我们可以使用 server.js 文件内的

    process_get 

    路由器来处理输入

//index.html
<form class="" action="/getinfo" method="get">
用户: <input type="text" name="user" value=""><br>
密码: <input type="text" name="password" value=""><br>
<input type="submit" name="" value="提交">
</form>

  

// server.js
const express=require("express");
var server= express();
server.get('/index.html', function (req, res) {
res.sendFile( __dirname + "/" + "index.html" );
}); server.get('/process_get ',function(req,res){
var response = {
user:req.query.user,
password:req.query.password
};
console.log(response);
res.write(JSON.stringify(response));
res.end();
}); server.listen();

Post请求

  • 通过 POST 方法提交两个参数,我们可以使用 server.js 文件内的 process_post 路由器来处理输入

  

    <!----index.js--->
<form class="" action="/process_post" method="post">
用户: <input type="text" name="user" value=""><br>
密码: <input type="text" name="password" value=""><br>
<input type="submit" name="" value="提交">
</form>

 server.js文件

const express=require("express");
const bodyParser=require("body-parser");
// 创建 application/x-www-form-urlencoded 编码解析 var server= express();
server.get('/index.html', function (req, res) {
res.sendFile( __dirname + "/" + "index.html" );
}); var urlencodedParser = bodyParser.urlencoded({ extended: false })
server.post('/process_post',urlencodedParser,function(req,res){ response = {
user:req.body.user,
password:req.body.password
}; res.writeHead(,{'Content-Type':'text/html;charset=utf-8'});//设置response编码为utf-8
console.log(response);
res.write(JSON.stringify(response));
res.end();
}); server.listen();

静态文件

  • Express 提供了内置的中间件 express.static 来设置静态文件如:图片, CSS, JavaScript 等。
  • 你可以使用 express.static 中间件来设置静态文件路径。例如,如果你将图片, CSS, JavaScript 文件放在 public 目录下
server.use(static('./static/'))

 上传文件

html页面

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>文件上传</title>
</head>
<body>
<h3>文件上传:</h3>
<form action="/upload" method="post" enctype="multipart/form-data">
<input type="file" name="imageFile" />
<br />
<input type="submit" value="上传文件" />
</form>
</body>
</html>

server,js页面

var fs = require('fs');
var express = require('express');
var multer = require('multer'); var upload = multer({dest: 'uploads/'}); var app= express();
// 单域单文件上传:input[file]的 multiple != "multiple"
app.post('/upload', upload.single('imageFile'), function(req, res, next) {
// req.file 是 前端表单name=="imageFile" 的文件信息(不是数组)
fs.rename(req.file.path, "upload/" + req.file.originalname, function(err) {
if (err) {
throw err;
}
console.log('上传成功!');
})
res.writeHead(, {
"Access-Control-Allow-Origin": "*"
});
res.end(JSON.stringify(req.file)+JSON.stringify(req.body));
}) app.get('/index', function (req, res) {
res.sendFile( __dirname + "/" + "index.html" );
}); app.listen();

express总结(一)的更多相关文章

  1. 如何安全的将VMware vCenter Server使用的SQL Server Express数据库平滑升级到完整版

    背景: 由于建设初期使用的vSphere vCenter for Windows版,其中安装自动化过程中会使用SQL Server Express的免费版数据库进行基础环境构建.而此时随着业务量的增加 ...

  2. 【原】无脑操作:express + MySQL 实现CRUD

    基于node.js的web开发框架express简单方便,很多项目中都在使用.这里结合MySQL数据库,实现最简单的CRUD操作. 开发环境: IDE:WebStorm DB:MySQL ------ ...

  3. Express 教程 01 - 入门教程之经典的Hello World

    目录: 前言 一.Express?纳尼?! 二.开始前的准备工作 三.测试安装之经典的Hello World 四.使用express(1)来生成一个应用程序 五.说明 前言: 本篇文章是建立在Node ...

  4. VisualStudio 2015 开启IIS Express可以调试X64项目

    现在项目开发时总有时需要在X64下开发,这样我们就需要IIS Express中调试.不要总是放在IIS中,在Attach这样好慢.   如果不设置直接调试X64的程序,我们有可能会受到以下类似的错误 ...

  5. Node.js Express连接mysql完整的登陆注册系统(windows)

    windows学习环境: node 版本: v0.10.35 express版本:4.10.0 mysql版本:5.6.21-log 第一部分:安装node .Express(win8系统 需要&qu ...

  6. Node.js实现RESTful api,express or koa?

    文章导读: 一.what's RESTful API 二.Express RESTful API 三.KOA RESTful API 四.express还是koa? 五.参考资料 一.what's R ...

  7. express全局安装后无法通过require使用

    今天入门了一下express,首先安装依赖. npm install express -g; npm install body-parser -g; npm install cookie-parser ...

  8. 初步认识Node 之Express

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

  9. 安装nodejs express框架时express命令行无效

    我也是看了这篇才明白.http://jingyan.baidu.com/article/922554468a3466851648f419.html 最近在看一本书,nodejs开发指南.至于出现这个问 ...

  10. 从express源码中探析其路由机制

    引言 在web开发中,一个简化的处理流程就是:客户端发起请求,然后服务端进行处理,最后返回相关数据.不管对于哪种语言哪种框架,除去细节的处理,简化后的模型都是一样的.客户端要发起请求,首先需要一个标识 ...

随机推荐

  1. 大数据时代——为什么用HADOOP?

    转载自:http://www.daniubiji.cn/archives/538 什么叫大数据 “大”,说的并不仅是数据的“多”!不能用数据到了多少TB ,多少PB 来说. 对于大数据,可以用四个词来 ...

  2. htmlcleaner使用及xpath语法初探

    一.HtmlCleaner使用: 1.HtmlCleaner HtmlCleaner是一个开源的Java语言的Html文档解析器.HtmlCleaner能够重新整理HTML文档的每个元素并生成结构良好 ...

  3. sql日期操作

    日期格式化函数 ), ): :57AM ), ): ), ): ), ): ), ): ), ): ), ): ), ): , ), ): :: ), ): :::827AM ), ): ), ): ...

  4. 前端大神讲解,初级程序与高级程序写表格变色的区别,dom 0 与dom 1

    我们在遇到表格行数太多时,往往会眼花缭乱,下一行看成对应上一行.就要遇到写鼠标移动那行,那行高亮显示. 这里用到一个this关键字: 在面向对象里,this代表对象本身. 在这里只要记住,谁调用这个函 ...

  5. 在同一台电脑安装python 2 和3,并且怎样安装各自的pip和模块

    安装python2.7 和 3.6不冲突直接安装就行 安装pip 访问https://pip.pypa.io/en/stable/installing/获取地址 curl https://bootst ...

  6. 超细讲解Django打造大型企业官网

    本文为知了课堂黄勇老师讲的<超细讲解Django打造大型企业官网>的笔记. 第一章 Django预热 1.创建virtualenv虚拟环境 2.URL组成部分详解 3.Django介绍 4 ...

  7. 解决Windows远程桌面连接每次都提示输入密码的问题,远程桌面记不住密码

    FROM:http://www.veryhuo.com/a/view/80444.html Windows 远程桌面连接几乎每天都用,所以使用的方便性非常重要.如果你经常用,也许会发现在某些系统中,每 ...

  8. ALGO-149_蓝桥杯_算法训练_5-2求指数

    AC代码: #include <stdio.h> int main(void) { int n,m,sum; int i,j; scanf("%d %d",&n ...

  9. LibreOffice转换文档到pdf时中文乱码

    根据我的测试,LibreOffice转换文档到pdf乱码主要有三个方面的原因: 1.centos缺少中文字体 2.jdk缺少中文字体 3.LibreOffice缺少中文字体. 解决该问题需要将wind ...

  10. git安装及git命令的用法

    git安装流程 https://git-scm.com/download/win (官网下载) git安装步骤 1.双击安装包 图文解释: