1、Express
1、1 修改完代码自动重启服务
使用第三方命令行工具,nodemon
来帮我们解决频繁修改代码后重启服务器问题。
npm install --global nodemon
使用
nodemon app.js
只要我们通过nodemon
启动服务,就会监视你的代码变化,当代码发生变化时,会自动重启服务。
1、2 基本路由
get:
//当以get方法请求时,执行对应处理函数
app.get('/', function(req, res){
res.send('hello')
})
post:
//以post方法请求时,指定对应处理函数
app.post('/', function(req, res){
res.send('get post request')
})
1、3 静态服务:开放当前路径下文件夹
1、 如果你的静态资源存放在多个目录下面,你可以多次调用 express.static 中间件:现在, public 目录下面的文件就可以访问了。(不用带上public)
app.use(express.static('public'));
//访问路径
//http://localhost:3000/images/kitten.jpg
//http://localhost:3000/css/style.css
//http://localhost:3000/js/app.js
//http://localhost:3000/images/bg.png
//http://localhost:3000/hello.html
2、 如果你希望所有通过 express.static 访问的文件都存放在一个“虚拟( virtual)”目录(即目录根本不存在)下面,可以通过为静态资源目录指定一个挂载路径的方式来实现,现在,你就爱可以通过带有 “/static” 前缀的地址来访问 public 目录下面的文件了。
如下所示:——类似于给public
起一个别名static
,使得其他文件可以访问
app.use('/static', express.static('public'));
//访问路径
//http://localhost:3000/static/images/kitten.jpg
//http://localhost:3000/static/css/style.css
3、
app.use('/static', express.static(path.join(__dirname, 'public')));
//访问路径
//http://localhost:3000/static/images/kitten.jpg
//http://localhost:3000/static/css/style.css
2、在Express中使用art-template渲染
安装:
npm install --save express
npm install --save art-template
npm install --save express-art-template
配置:
var express = require('express')
var app = express()
/*
*第一个参数‘html’表示,当渲染以该名称结尾的文件时,使用art-template模板引擎
*需要安装art-template,因为express-art-template依赖于它
*/
app.engine('html', require('express-art-template'))
//默认将所有视图文件放到views中
使用:
app.get('/', function (req, res) {
//默认会去项目中的views目录中寻找该文件,可以通过app.set()修改
res.render('404.html', {
comment: '文件失联了',
})
})
<!DOCTYPE html>
// 404.html内容
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<h1>您访问文件不存在。。。{{comment}}</h1>
</body>
</html>
//可以通过app.set()修改,将默认的`views`视图路径修改
//第一个参数`views`不可修改
app.set('views', 新的视图存储路径)
3、在Express解析表单post请求
//提交之后你的url会变成,`url/post?数据`
//res.query获取get请求数据
<form action="/post" method="get">
</form>
//提交之后你的url会变成,`url/post?
<form action="/post" method="post">
</form>
安装:
npm install --save body-parser
配置-使用:
var express = require('express')
var bodyParser = require('body-parser')
var app = express()
//配置body-parser
//只要加入这个配置,则会在req请求上多出:`body`属性
//即可获取post请求提交数据
app.use(bodyParser.urlencoded({extended: false}))
app.use(bodyParse.json())
app.use(function(req, res){
res.setHeader('Content-Type', 'text/plain')
res.send(JSON.stringify(req.body, null, 2))
})
使用:
4、回调函数
获取到一个函数中异步操作的结果,必须使用回调函数获取。
使用callback
常见的异步函数
// setTimeout
// readFile
// wirteFile
// readdir
// ajax
// 往往异步 API 都伴随有一个回调函数
// var ret = fn()
// $.get('dsadas', fucntion () {})
// var ret = $.get()
crypto模块——hash加密
crypto模块的目的是为了提供通用的加密和哈希算法。用纯JavaScript代码实现这些功能不是不可能,但速度会非常慢。Nodejs用C/C++实现这些算法后,通过cypto这个模块暴露为JavaScript接口,这样用起来方便,运行速度也快。
const crypto = require('crypto');
const hash = crypto.createHash('md5');
// 可任意多次调用update():
hash.update('Hello, world!');
hash.update('Hello, nodejs!');
console.log(hash.digest('hex')); // 7e1977739c748beac0c0fd14fd26a544