HTTP 服务
1、加载 http 核心模块
var http = require('http')
加载模板引擎(先npm安装)
var template = require('art-template')
2. 使用 http.createServer() 方法创建一个 Web 服务器,返回一个 Server 实例
var server = http.createServer()
3. 注册 request 请求事件,当客户端请求过来,就会自动触发服务器的 request 请求事件
request 请求对象 response 响应对象
server.on('request', function (request,response) { console.log(resqust.url) //端口号之后的路径/...; 3.1 response 对象可以用 write() 给客户端发送响应数据,可以使用多次,但最后一定要用 end() 来结束响应 response.write('lllll') response.end() 3.2 直接使用end(‘<h1>你</h1>’) //响应内容只能是二进制或字符串,使用JSON.stringify()
使用模板引擎
fs.readFile('./views/index.html', function (err, data) {
if (err) {
return response.end('404 NOT FOUND');
}
var rel = template.render(data.toString(), dataList);
response.end(rel);
}); })
4. 绑定端口号,启动服务器
server.listen(3000, function () { console.log('服务器启动成功,请求访问 http://127.0.0.1:3000/') })
简写:
http
.createServer(function (request, response) {}) //创建一个 Web 服务器
.listen(3000, function () {}) //绑定端口号,启动服务器
response.end() 一个HTML页面,如果HTML页面引入静态资源,需设置
访问首页 if (url === '/') { fs.readFile('./views/index.html', function (err, data) { if (err) { return response.end('404 NOT FOUND'); } response.end(data); }); } else if (url.indexOf('/public/') === 0) { 访问静态资源(控制用户可以访问到什么) console.log(url); // /public/img/image3.jpg fs.readFile('.' + url, function (err,data) { if (err) { return response.end('404 NOT FOUND'); } response.end(data); }); }
express 框架
1、安装 npm
2、引包
var express = require('express');
创建服务器应用程序
var app = express();
静态资源服务: 公开指定目录,就可以通过/public/xxx 方式访问public目录中所有资源
app.use('/public/', express.static('./public/')) 127.0.0.1/public/index.html (推荐) app.use(express.static('./public/')) 127.0.0.1/index.html 通过省略/public 方式访问 app.use('/a/', express.static('./public/')) 127.0.0.1/a/index.html 起别名,通过 /a 代替 /public 方式访问
配置使用art-template 模板引擎
app.engine('art', require('express-art-template'));
第一个参数: 表示当渲染以 .art 结尾的文件时,使用art-template 模板引擎,可以修改成 html ,则渲染 html 文件
不需要 require('art-template')
使用方式:
res.render('html 模板名', {数据})
第一个参数:不能写路径,默认会去项目中的 views 目录中查找该模板文件
如果文件是 views 中 子目录 admin 下的 admin.html,则
res.render('/admin/html 模板名', {数据})
如果想要修改默认的 views 目录,可以
app.set('views', 修改render函数的默认路径)
基本路由: 当以 get/post 请求 / 时,执行对应的回调函数
app.get('/', function (req, res) { res.send('hello world'); });
app.post('/login', function (req, res) { res.send('login'); });
获取 get 请求的数据
req.query 返回对象
获取 post 请求的数据 (express网站-->资源-->中间件)
需使用第三方包: body-parser
安装: npm install body-parser
配置:
var express = require('express')
var bodyParser = require('body-parser')
var app = express()
配置body-parser,只要加入这个配置,则在 req 请求对象上多出一个属性: body
可以通过 req.body 获取 post 请求数据
// parse application/x-www-form-urlencoded
app.use(bodyParser.urlencoded({ extended: false }))
// parse application/json
app.use(bodyParser.json()
设置端口
app.listen(3000, function () { console.log('app server is running'); });
修改完代码自动重启:
使用第三方命令行工具 nodemon 解决修改代码重启服务器问题
安装 npm install --global nodemon 验证安装成功 nodemon --version 使用: nodemon app.js
通过nodemon启动的服务器,会监视文件的变化,当文件变化时,自动重启服务器