Node JS 05 - Express

Node JS 05 - Express

原生的 http 在某些方面表现不足以应对我们的开发需求, 所以需要使用框架加快开发效率, 使代码更加的高度统一.

在 Node 中有很多 Web 开发框架,我们使用 Express .

入门

  • 安装 : npm install express --save
  • helloworld
var express = require('express')
var app = express()

app.get('/',function(req,res){
    //原生: res.end('hello')
    res.send('hello')
})

app.listen(3000,function(){
	console.log('express started....')
})

修改完代码自动重启

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

任意目录可以运行该命令 : npm install --global nodemon

安装完毕后,使用 nodemon 运行

nodemon app.js

当文件发生变化的时候,自动重启服务器

G:\JAVA\笔记\NODE.JS\express01>nodemon app.js
[nodemon] 1.19.1
[nodemon] to restart at any time, enter `rs`
[nodemon] watching: *.*
[nodemon] starting `node app.js`

基本路由

// 访问 /index , 执行后面的方法
app.get('/index',function(req,res){

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

})

静态服务

//指定公开目录 通过 /public/* 访问 /public/* 目录文件
app.use('/public/',express.static('./public/'))
//当没有第一个参数的时候,直接通过 /xxx 进行访问 ./static/xxx 文件 , 建议加上
app.use(express.static('./static/'))

在 Express 中配置 art-template 模板引擎

安装 :

npm install --save art-template
npm install --save express-art-template

配置 :

//配置使用 art-template 模板引擎
//第一个参数表示当渲染以 .art 结尾的文件的时候,使用 art-template 模板引擎
//express-art-template 是专门用来在 Express 中把 art-template 整合到 Express 中
//虽然在外面不需要加载 art-template 但是也必须安装
//原因是 : express-art-template 依赖了 art-template
app.engine('art',require('express-art-template'))
//如果想修改寻找模板的路径可以通过
app.set('views',路径)

使用 :

//Express 为 Response 对象提供了一个方法 render
//render 方法默认是不可以使用,但是如果配置了模板引擎就可以使用了
//res.render('html模板名',{模板数据})
//第一个参数不能写路径,默认去项目中的 views 目录查找该模板文件
//也就是说 Express 有一个约定 : 开发人员把所有的视图文件都放到了 views 目录中了
//若没有第二个参数,直接把页面返回
//默认后缀必须为 art 文件 , 如果想修改 , 则修改配置中的 
//app.engine('art',require('express-art-template')) ---> app.engine('html',require('express-art-template')) 即可
res.render('404.html')

Express 请求解析

Get 请求 :

var comment = req.query

Post 请求 :

在 Express 中没有默认获取 POST 请求体的API , 需要第三方包 body-parser

// 安装 :
npm install --save body-parser

// 导包 :
var express = require('express')
var bodyParser = require('body-parser')
var app = express()

//配置 body-parser
//只要加入这个配置就会在 req 对象上多出一个属性 : body
//也就是说可以直接通过  req.body 获取表单 POST 请求体数据了
app.use(bodyParser.urlencoded({extended:false}))
app.use(bodyParser.json())

//使用
var body = req.body

留言板改造

// 引包
var express = require('express')
var bodyParser = require('body-parser')

var comments = [
	{
		name:'张三',
		message:'我叫张三',
		dataTime:'2019-7-16'
	},
	{
		name:'张三',
		message:'我叫张三',
		dataTime:'2019-7-16'
	},
	{
		name:'张三',
		message:'我叫张三',
		dataTime:'2019-7-16'
	}
	
]

// 创建服务器应用程序
var app = express()

// 配置 bodyParser
app.use(bodyParser.urlencoded({extended:false}))
app.use(bodyParser.json())

// 配置 art-template
app.engine('html',require('express-art-template'))

//路径如果为 / 则执行回调函数
app.get('/',function(req,res){
	res.render('index.html',{
		comments:comments
	})
})
app.get('/index',function(req,res){
	res.render('index.html',{
		comments:comments
	})
})
app.get('/post',function(req,res){
	res.render('post.html')
})
//接收 post 请求
app.post('/post',function(req,res){
	var comment = req.body
	comment.dataTime = new Date()
	comments.unshift(comment)
	// res 的 redirect, redirect 自动结束 
	res.redirect('/')
})
//指定公开目录 通过 /public/* 访问 /public/* 目录文件
app.use('/public/',express.static('./public/'))
app.use('/static/',express.static('./static/'))

//监听端口
app.listen(3000,function(){
	console.log('服务器已启动...')
})
  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值