NodeJs—04—路由;

 

 

一、路由

我们使用原生js实现一个路由功能,即url是什么我们就转发到什么;

这个时候有个问题,比如说url后缀是login,所以我们要转发到./static/login.html,可如果这个html页面里有很多引入的标签,比如img标签引入了fulian.jpg的一张图片,那么这个时候,这个路径还是走我们自己的路由的,所以就需要专门给它设置一个路由,比如 case '/fulian.jpg':   fs.readFile( './static/fulian.jpg'这个;

var http = require('http')
var fs = require('fs')

http.createServer( function ( req, res ) {

  switch ( req.url ) {
    case '/home':
      res.write('home')
      res.end()
      break
    case '/mine':
      res.write('mine')
      res.end()
      break
    case '/login': 
      fs.readFile( './static/login.html',function ( error , data ) {
        if ( error ) throw error  
        res.write( data )
        res.end()
      })
      break
    case '/fulian.jpg':
      fs.readFile( './static/fulian.jpg', 'binary', function( error , data ) {
        if( error ) throw error 
        res.write( data, 'binary' )
        res.end()
      })
      break
    default: 
      break
   }

 }).listen( 8000, 'localhost', function () {
   console.log( '服务器运行在: http://localhost:8000' )
 })

升级一下,但还是什么url过来我们都要做一个路由的转发,只不过我们使用通用的方式实现了,这里的前提是html和要请求的图片在同一级目录下;

 

 好像也不对,不需要所有资源都在html页面同级目录下,只要html的img等资源请求标签路径正确,就也可以通过这个路由找到相应的资源;这样看,最主要的还是html资源路径写得正确,然后还有一点就是我们要知道html的img scr=路径和script src=路径这些都也是要经过前端服务器去请求资源的;

 

 

 

所有的css、js、imp等资源都要在同一个

 

 

 

path.join(__dirname),其中__dirname两个下划线+dirname表示当前文件所在的物理路径;

readStaticFile.js这个文件主要是res写writeHead的返回值类型时要用到的,结果mime模块一起用;

 

 

二、express框架

express就像spring一样,是简化原生操作的;

express框架可以简化nodejs的操作;

 

如果请求方式是get方式,那么使用req.query()的返回值就是url后面的参数;

如果请求方式是post方式,那么需要下载一个body——parse模块,

 

 

 

服务器server.js将所有请求都转发给router,比如说/符匹配所有请求;

router将请求转发给controller;

controller用户逻辑判断,model存放数据,view是静态视图比如html、css

 

 

 

 

ssr 

server side rendr   服务端渲染

csr 

client side  rendr  客户端渲染

 

如图所示,服务端写好代码,然后发送给客户端,客户端的代码是这个样子的;

 

 客户端的代码是这个样子的,直接就可以运行,不需要渲染;

 

如果服务端不进行渲染,只将数据传送给客户端,哪个客户端接收的数据就是这样的,是一个json串;

 

 后面客户端自己根据这个json串进行渲染;

 

posted @ 2021-06-26 18:00  Eric-Shen  阅读(84)  评论(0编辑  收藏  举报