成都网站建设设计

将想法与焦点和您一起共享

nodejs中怎么构建一个http服务

nodejs中怎么构建一个http服务,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。

成都创新互联专注为客户提供全方位的互联网综合服务,包含不限于成都网站设计、成都做网站、外贸网站建设、松江网络推广、微信平台小程序开发、松江网络营销、松江企业策划、松江品牌公关、搜索引擎seo、人物专访、企业宣传片、企业代运营等,从售前售中售后,我们都将竭诚为您服务,您的肯定,是我们最大的嘉奖;成都创新互联为所有大学生创业者提供松江建站搭建服务,24小时服务热线:18982081108,官方网址:www.cdcxhl.com

内容索引:
  • Node中的http模块

  • 使用node构建http服务

  • 实现一个静态资源服务器

  • 使用模板引擎处理动态网页

  • 结合数据库渲染动态页面

  • 实现一个留言本案例

  • 第三方HTTP服务框架

Node中的http模块
  • TCP和UDP 都属于传输层协议

  • HTTP,用于浏览器和服务器端进行通信,由于HTTP协议本身并不考虑数据如何传输等其他问题,所以属于应用层协议。

  • Node提供了基本的http和https模块用于HTTP 和 HTTPS的封装

const http = require('http')
const server = http.createServer()
1.1Server实例
API说明
Event: 'close'服务器关闭时触发
Event: 'request'服务器收到请求消息时触发
server.close()关闭服务
server.listening获取服务状态
1.2 请求对象
API说明
request.method请求方法
request.url请求路径
request.header请求头
request.httpVersioni请求http协议版本
1.3 响应对象
API说明
response.end()结束响应
response.setHeader(name, value)设置响应头
response.removeHeader(name, value)删除响应头
response.statusCode设置响应状态码
response.statusMessage设置响应状态短语
response.write()写入响应数据
response.writeHead()写入响应头
2.1 hello world
const http = require('http');
const path = require('path');
const mimie = require('mime'); // 返回扩展名对应的content-type
const fs = require('fs');

const hostname = '127.0.0.1';
const port = 3000;
const server = http.createServer((req, res) => {
  // res.setHeader('Content-type', 'text/plain charset=utf-8'); // 响应字符串
  const url = req.url;
  if (url === '/') {
    fs.readFile(`./index.html`, (err, data) => {
      if (err) {
        throw err;
      }
      res.statusCode = 200;
      res.setHeader('Content-type', 'text/html; charset=utf-8'); // 响应html
      res.end(data);
    });
  } else if (url.startsWith('/assets/')) {
    fs.readFile(`.${url}`, (err, data) => {
      if (err) {
        res.setHeader('Content-type', 'text/plain; charset=utf-8');
        res.statusCode = 404;
        res.end('404 Not Fund.');
      }
      // path.extname(url) 获取文件对应的扩展名
      const contentType = mimie.getType(path.extname(url));
      res.statusCode = 200;
      res.setHeader('Content-type', `${contentType}; charset=utf-8`); // 设置响应头
      res.end(data);
    });
  } else {
    res.statusCode = 404;
    res.setHeader('Content-type', 'text/plain; charset=utf-8');
    res.end('404 Not Fund.');
  }

  // console.log('req', Object.keys(req));
});
server.listen(port, hostname, () => {
  console.log(`server running at http://${hostname}:${port}`);
});
  • contentType对照表:http://tool.oschina.net/commons

常用模板引擎:
  • marko

  • nunjucks

  • handlebars.js

  • ejs

  • Pug

  • art-template

template-engine.js

const http = require('http');
const path = require('path');
const fs = require('fs');
const template = require('art-template');
const hostname = '127.0.0.1';
const port = 3000;
const server = http.createServer((req, res) => {
  const url = req.url;
  const fileBaseUrl = path.join(__dirname);
  if (url === '/') {
    fs.readFile('./template-engine.html', (err, data) => {
      data = data.toString();
      const ret = template.render(data, {
        msg: 'world',
        todos: [
          { title: '吃饭', completed: false },
          { title: '睡觉', completed: true },
          { title: '打豆豆', completed: false }
        ]
      });
      res.setHeader('Content-type', 'text/html charset=utf-8'); // 响应字符串z
      res.end(ret);
      res.statusCode = 200;
    });
  }
});
server.listen(port, hostname, () => {
  console.log(`server running at http://${hostname}:${port}`);
});

template-engine.html



  
    
    
    
    Document
  
  
    我是我{{ msg }}
    
          {{ each todos }}       
  •         {{ $value.title }}                
  •       {{ /each }}     
  

看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注创新互联行业资讯频道,感谢您对创新互联的支持。


新闻名称:nodejs中怎么构建一个http服务
标题URL:http://chengdu.cdxwcx.cn/article/goihei.html

其他资讯