nodejs10-路由的封裝(上)

  • 先附上上章的代碼
var http = require('http')
var url = require('url')
var ejs = require('ejs')
var fs = require('fs')


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
  var method = req.method.toLowerCase()
  if (pathname == '/login') {
    ejs.renderFile('views/form.ejs', {
      msg: '你好啊'
    }, (err, data)=>{
      if (err) {
        console.log(err)
        return
      }
      console.log(data)
      res.end(data)
    })
  } else if (pathname == '/dologin' && method == 'get') {
    /**
     * 獲取數(shù)據(jù)
    */
    var query = url.parse(req.url).query

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

  }else if (pathname == '/dologin' && method == 'post') {
    /**
     * 獲取數(shù)據(jù)
    */
    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)
    })

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

console.log('server is Running at 8089')

可見,是如此的復(fù)雜以及不人性化

極不利于后期的維護工作

接下來,對路由部分進行拆分

新建model/models.js

var ejs = require('ejs')
var fs = require('fs')
var url = require('url')


var app = {
  index: function(req, res){
    console.log('主頁')
    res.end('主頁')
  },
  login: function(req, res){
    console.log('登錄')
    ejs.renderFile('views/form.ejs',{},(err, data)=>{
      res.end(data)
    })
  },
  register: function(req, res){
    console.log('注冊')
  },
  dologin: function(req, res) {
    var method = req.method.toLowerCase()

    if (method == 'get') {
      /**
       * 獲取數(shù)據(jù)
      */
      var query = url.parse(req.url).query

      res.end(query)
    } else {
      /**
       * 獲取數(shù)據(jù)
      */
      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('寫入成功')
        })
        console.log(postData)
        res.end(postData)
      })
    }

  }
}

module.exports = app
對index.js進行模塊調(diào)用
var http = require('http')

var url = require('url')
var model = require('./models/model')

// model['register']('req')


http.createServer(function(req, res){
  if (req.url == '/favicon.ico') return
  var pathname = url.parse(req.url).pathname.replace('/', '')
  try {
    model[pathname](req, res)

  } catch (error) {
    model['index'](req, res)

  }

  res.end()
}).listen('8081')


一下子,就好了很多

在寫代碼的時候,一定不能只局限于本次需求的交付

要考慮代碼的可讀性、可擴展性

這就是模塊化出現(xiàn)的意義

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容