知识点
-
Express
- 文件操作路径和模块路径
-
文件操作路径:
// 在文件操作的相对路径中
// ./data/a.txt 相对于当前目录
// data/a.txt 相对于当前目录
// /data/a.txt 绝对路径,当前文件模块所处磁盘根目录
// c:/xx/xx… 绝对路径
//例如 :
fs.readFile(’./data/a.txt’, function(err, data){
if(err){
console.log(err)
return console.log(‘读取失败’)
}
console.log(data.toString())
})
- 模块操作路径:
// 这里如果忽略了. , 则是磁盘根目录
require(’/data/foo.js’)
//相对路径
require(’./data/foo.js’)
模块加载的路径中相对路径不能省略 ./
1.起步:
// 0. 安装
// 初始化项目,生成package.json文件
npm init -y
// 安装express
npm install –save express
// 例子:hello world:
var express = require('express');
// 1. 创建 app,也就是原来的http.createServer
var app = express();
app.get('/',function(req,res){
// res.write('hello ');
// res.write('world ');
// res.end();
// res.end('hello world');
res.send('hello world !');
})
app.get('/login',function(req,res){
res.send('login !');
})
app.listen(3000,function(){
console.log('app is running port 3000');
});
2. 基本路由:
什么是路由: 路由其实就是一张表,表里面有具体的映射关系。
-
路由
- 请求方法
- 请求路径
- 请求处理函数
-
get方法:
# 当你以GET方法请求/的时候,执行对应的处理函数
app.get('/login',function(req,res){
res.send('login !');
})
- post方法:
# 当你以POST方法请求/的时候,执行对应的处理函数
app.post('/',function(req,res){
res.send('login !');
})
3. 修改完代码自动重启
- 我们这里使用一个第三方命令行工具:nodemon来解决频繁修改代码重启服务器问题。
- nodemon是一个基于Node.js开发的一个第三方命令行工具,我们使用的时候需要独立安装
# 安装nodemon,在任意目录执行该命令都可以:
npm install –global nodemon
// 查看nodemon的版本号
nodemon –version
- 安装完毕之后,使用:
node app.js
# 使用nodemon,启动app.js文件的服务
nodemon app.js
- 只要通过nodemon app.js启动的服务,则它会监视你的文件变化
- 当文件发生变化的时候,会自动帮你重启服务器。
4. 静态服务
// 方式1:(一般推荐使用该种方式)
// 当以/public/ 开头的时候,在./public/目录中找对应的资源
// 这种方式更容易辨识,推荐这种方式
// app.use('/public/',express.static('./public/'));
// 方式2:
// 必须是/a/public目录中的资源具体路径,别名
// app.use('/a/',express.static('./public/'));
// 方式3:
// 当省略第一个参数的时候,则可以通过省略 /public的方式直接访问
// 这种方式的好处就是可以省略 /public/
app.use(express.static('./public/'));
5. 在Express中配置art-template
5.1 art-template 介绍
- art-template 是一个简约、超快的模板引擎。
- 它采用作用域预声明的技术来优化模板渲染速度,从而获得接近 JavaScript 极限的运行性能
- 并且同时支持 NodeJS 和浏览器。
5.2 art-template 特性
- 拥有接近 JavaScript 渲染极限的的性能
- 调试友好:语法、运行时错误日志精确到模板所在行;支持在模板文件上打断点(Webpack Loader)
- 支持 Express、Koa、Webpack
- 支持模板继承与子模板
- 浏览器版本仅 6KB 大小
5.3 art-template 相关链接
- art-template GitHub仓库链接: https://github.com/aui/art-template
- art-template官方中文文档链接:https://aui.github.io/art-template/
5.4 安装art-template:
npm install --save art-template
npm install --save express-art-template
// 或者可以并在一起来写,中间使用空格隔开
npm install --save art-template express-art-template
5.5 配置
// 配置使用 art-template 模板引擎
// 方式1:
// 第一个参数表示:当渲染以.art结尾的文件时候,使用art-template模板引擎
app.engine('art', require('express-art-template'));
// 方式2:(一般推荐使用这种方式配置,第一个参数为.html)
// 当渲染以.html结尾的文件时候,使用art-template模板引擎
app.engine('html', require('express-art-template'));
5.6 使用
- Express 为 Response 相应对象提供了一个方法:render
- render 方法默认是不可以使用,但是如果配置了模板引擎就可以使用了
- 第一个参数不能写路径,默认会去项目中的 views 目录(默认一般在这个目录当中)查找该模板文件
- 也就是说 Express 有一个约定:开发人员把所有的视图文件都放到 views 目录中
app.get('/', function (req, res) {
// express默认会去项目中的views目录中找index.html
res.render('index.html', { // 如果使用index.html格式的,应该将上面的 art-template 模板引擎当中的art换成html,让其保持一致
user: {
name: 'Jack',
tags: ['art', 'template', 'nodejs']
}
});
});
如果想要修改默认的views视图渲染存储目录,可以:
// 注意: 第一个参数千万不能写错,必须是特殊的名称views
app.set('views',目录路径);
6. 在Express中获取表单GET请求参数
Express内置了一个API,可以直接通过req.query来获取参数
req.query
7. 在Express中获取表单POST请求体数据
- 在Express中没有内置获取表单POST请求体的API,这里我们需要使用一个第三方包:body-parser。
7.1 安装
npm install --save body-parser
7.2 配置
var express = require('express');
// 0. 引包
var bodyParser = require('body-parser');
var app = express();
// 配置body-parser中间件(插件,专门用来解析表单 POST 请求体)
// 只要加入这个配置,则在req请求对象上会多出来一个属性:body
// 也就是说你就可以直接通过req.body来获取表单POST请求体数据了
app.use(bodyParser.urlencoded({ extended: false}));
app.use(bodyParser.json())