美文网首页WEB前端程序开发Web前端之路我的日更计划
nodejs09-静态服务器+简单ejs+获取form提交的数据

nodejs09-静态服务器+简单ejs+获取form提交的数据

作者: 经纬文学 | 来源:发表于2019-11-08 16:31 被阅读0次

nodejs 搭建静态web服务器

拆分【07-搭建静态web服务】中http.js

新建model/router.js
  /**
   * req = request 获取浏览器参数
   * res = response 返回数据
  */


  var fs = require('fs')
  var events = require('events')
  var url = require('url')
  var path = require('path')
  var EventEmitter = new events.EventEmitter()
  exports.static = function(req, res){
    var urlName = url.parse(req.url).pathname

    if (urlName == '/favicon.ico') return
  
    if (urlName == '/') {
      urlName = 'index.html'
    }
    /**
     * 过滤掉?之后的数据
     * 例: www.xx.com/index.html?asdasdadas=2 -----> www.xx.com/index.html
     */
    getSuffixName(path.extname(urlName))
    EventEmitter.on('send', (suffixName)=>{
      fs.readFile(`static/${urlName}`, (err, data)=>{
        if (err) {
          fs.readFile('static/404.html', (error, result)=>{
            if (error) return
            res.writeHead(200, {"Content-Type": `${suffixName};charset=UTF-8`});
            /**
             * 使用EventEmitter会出现Error [ERR_STREAM_WRITE_AFTER_END]: write after end错误
             * 这边建议直接end返回
            */
            // res.write(result)
            res.end(result)
          })
        } else {
          res.writeHead(200, {"Content-Type": `${suffixName};charset=UTF-8`});
          // res.write(data)
          res.end(data)
        }
      
      })
    })

  }


function getSuffixName (url) {

  fs.readFile('model/mime.json', 'utf8',(err,data)=> {
    if (err){
      console.log(err)
      return
    }
    var result = JSON.parse(data)
    for (var i in result) {
      if (i == url) {
        // return result[i]
        EventEmitter.emit('send', result[i])
        return
      }
    }
  })

}

http.js
var http = require('http');
var path = require('path')

var router = require('./model/router')
/**
 * http.createServer()创建http服务器
*/
console.log(path.extname('index.html')) // 输出.html
http.createServer(function(req,res){
  router.static(req,res)

}).listen('8080')

console.log('server is running')

简单的使用ejs模板

安装 npm install ejs --save-dev
具体使用查看官网ejs官网

index.js
var http = require('http')
var url = require('url')
var ejs = require('ejs')



http.createServer(function(req, res){
  if (req.url == '/favicon.ico') return

  res.writeHead(200, {"Content-Type": "text/html;charset=UTF-8"})
  var pathname = url.parse(req.url).pathname

  if (pathname == '/login') {
    ejs.renderFile('views/login.ejs', {
      msg: '你好啊'
    }, (err, data)=>{
      if (err) {
        console.log(err)
        return
      }
      res.end(data)
    })
  } else {
    res.end('结束')
  }
}).listen('8089')

console.log('server is Running at 8089')
新建views/login.ejs
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <meta http-equiv="X-UA-Compatible" content="ie=edge">
  <title>Document</title>
</head>
<body>
    <p>ejs模板--登录</p>
    <p><%=msg  %></p>
</body>
</html>

form表单 提交数据

views/form.ejs
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <meta http-equiv="X-UA-Compatible" content="ie=edge">
  <title>Document</title>
</head>
<body>
  <form action="/dologin" method="post">
    <input type="text" name="name" >
    <br>
    <input type="text" name="password">
    <br>
    <input type="submit" value="提交">
  </form>
</body>
</html>

获取get提交的数据

get.js
    /**
     * 获取数据
    */
    var query = url.parse(req.url).query

    console.log(query)
    res.end(query)

获取post提交的数据

post.js
    /**
     * 获取数据
    */
    var postData = ''
    req.on('data', (data)=>{
      postData += data
    })
    req.on('end', (err, data)=>{
      fs.appendFile('login.txt', `${postData}\n`, (err, data)=>{
        if (err) {
          console.log(err)
          return
        }
        console.log('写入成功')
      })
      res.end(postData)
    })

相关文章

  • nodejs09-静态服务器+简单ejs+获取form提交的数据

    nodejs 搭建静态web服务器 拆分【07-搭建静态web服务】中http.js 新建model/router...

  • Laravel 常用的方法

    获取form提交的数据

  • formData提交表单

    用form标签 同时后台服务器处理提交的数据,用multiparty库 不用form标签 同时后台服务器处理提交的...

  • HTML 表单的用法:

    form表单是将用户输入的数据做一个集合,提交时将数据提交给后台服务器,实现用户与服务器之间的交互。 1.form...

  • 表单提交

    发送数据给服务器 form 标签是表单标签 action 属性设置提交的服务器地址 method 属性设置提交的方...

  • HTML 表单的用法

    HTML表单 form表单 form表单用于把用户输入的数据提交给后台服务器name表示提交的表单名称,actio...

  • ajax获取数据

    ajax获取数据 属性意义用法formpost表单提交name = request.form.get('name'...

  • 爬虫_028_Form表单

    标签 ** form属性**action 提交的地址method 提交的方式get:从服务器端拿数据(1) 默...

  • HTML中的表单

    1. form表单有什么作用 form表单用于把用户输入的数据提交给后台服务器name表示提交的表单名称,acti...

  • Form表单

    Form简介 表单在网页中主要负责数据采集功能。可以将form标签内的内容提交到服务器。 1.Form标签属性 a...

网友评论

    本文标题:nodejs09-静态服务器+简单ejs+获取form提交的数据

    本文链接:https://www.haomeiwen.com/subject/bclwbctx.html