(Node.js nota 02) para enviar los recursos estáticos y 404 redirecciones y ejercicios URL Simplificar y tablón de mensajes

recursos estáticos A. Enviar

1. Al incluir externa js recursos / css / imagen, etc., dentro de las necesidades de la página solicitada para ser adquirida, si el servidor no se envía, el navegador ha sido cargado, la observación más directa es que cuando se abre la pestaña de la página ha estado en un anillo girar.

//index.html
<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    //页面所需要的资源
    <link rel="stylesheet" href="../public/main.css">
</head>

<body>
    <h1>获取静态资源</h1>
</body>

</html>

//http-server.js
var http = require('http')
var fs = require('fs')
var server = http.createServer()

server.listen(3000, function (error) {
    if (error) {
        console.log('服务器监听失败...')
    } else {
        console.log('服务器监听成功,可通过http://127.0.0.1:3000/进行访问...')
    }
})

server.on('request', function (req, res) {
    var url = req.url
    if (url == '/') {
        fs.readFile('./views/index.html', function (error, data) {
            if (error) {
                return res.end('404 Not Found...')
            } else {
                res.end(data)
            }
        })
    }
    // else if (url.indexOf('/public/') == 0) {
    //     fs.readFile('.' + url, function (error, data) {
    //         if (error) {
    //             return res.end('获取main.css失败...')
    //         } else {
    //             res.end(data)
    //         }
    //     })
    // }
})

Aquí Insertar imagen Descripción
Aquí Insertar imagen Descripción
2. Si queremos enviar estos recursos estáticos a la parte solicitante, a continuación, es necesario agregar la palabra clave está anotado.

server.on('request', function (req, res) {
    var url = req.url
    //回应第一次请求发送index.html的数据
    if (url == '/') {
        fs.readFile('./views/index.html', function (error, data) {
            if (error) {
                return res.end('404 Not Found...')
            } else {
                res.end(data)
            }
        })
    }
    //请求方解析index.html时发现需要main.css资源则又一次发送请求,请求的url对应link的路径
    else if (url.indexOf('/public/') == 0) {
        fs.readFile('.' + url, function (error, data) {
            if (error) {
                return res.end('获取main.css失败...')
            } else {
                res.end(data)
            }
        })
    }
})

Aquí Insertar imagen Descripción
Aquí Insertar imagen Descripción
! La obtención de otros recursos, también

Dos 0,404 redirecciones URL y simplificar

1. Cuando añadimos el nombre de dominio especificado en un lío al final de la cadena de tiempo, si el servidor no puede encontrar la página web correspondiente, por lo general redirigido a una página 404
2. De hecho, sólo tiene que añadir el código que implementa redirigir los demás en la final de la frase página juicio
3 . URL simplificada, la eliminación de los sufijos (ver más abajo gif comparativo)

server.on('request', function (req, res) {
    var url = req.url
    if (url == '/') {
        fs.readFile('./views/index.html', function (error, data) {
            if (error) {
                return res.end('获取index页面失败...')
            } else {
                res.end(data)
            }
        })
    }
    else if (url == '/views/next') {
        fs.readFile('.' + url+'.html', function (error, data) {
            if (error) {
                return res.end('获取next.html失败...')
            } else {
                res.end(data)
            }
        })
    } else {
        fs.readFile('./views/404.html', function (error, data) {
            if (error) {
                return res.end('获取404页面失败...')
            } else {
                res.end(data)
            }
        })
    }
})

Aquí Insertar imagen Descripción
URL simplificar la comparación:
Aquí Insertar imagen Descripción
Aquí Insertar imagen Descripción

III. Mensaje de ejercicios (sin la participación de la base de datos)

1. Mostrar la página
Aquí Insertar imagen Descripción

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>留言板</title>
    <link rel="stylesheet" href="../public/css/main.css">
    <link rel="stylesheet" href="../public/css/bootstrap.css">
</head>

<body>
    <div class="header container">
        <div class="page-header">
            <h1>留言板 <small>写你所想</small></h1>
            <a class="btn btn-success" href="./public/views/post.html">发表留言</a>
        </div>
    </div>
    <div class="comments container">
        <ul class="list-group">
            {{each comments}}
            <li class="list-group-item">
                {{$value.name}}说: {{$value.message}}
                <span style="float: right;">{{$value.date}}</span>
            </li>
            {{/each}}
        </ul>
    </div>
</body>

</html>

Aquí Insertar imagen Descripción

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>发表留言</title>
    <link rel="stylesheet" href="../css/bootstrap.css">
</head>

<body>
    <div class="header container">
        <div class="page-header">
            <h1>留言板 <small>发表评论</small></h1>
        </div>
    </div>
    <div class="comments container">
        <form action="comments" method="get">
            <div class="form-group">
                <label for="InputName">你的大名:</label>
                <input type="text" class="form-control" id="InputName" placeholder="Input Your Name" required
                    name="name">
            </div>
            <div class="form-group">
                <label for="IputMeassge">留言内容</label>
                <textarea id="InputMessage" cols="30" rows="10" class="form-control" required name="message"></textarea>
            </div>
            <button type="submit" class="btn btn-success">发表</button>
        </form>
    </div>
</body>

</html>

2. puede comentar y mostrar
Aquí Insertar imagen Descripción

var http = require('http')
var fs = require('fs')
var template = require('art-template')
var parse = require('url')
var server = http.createServer()

var comments = [
    {
        name: "法外狂徒",
        message: "我为非作歹",
        date: "2020-3-18"
    }, {
        name: "张三",
        message: "俺也一样",
        date: "2020-3-18"
    },
]

server.listen(3000, function (error) {
    if (error) {
        console.log('服务器监听失败...')
    } else {
        console.log('服务器监听成功,可通过http://127.0.0.1:3000/进行访问...')
    }
})

server.on('request', function (req, res) {
    var parseObj = parse.parse(req.url, true)
    var pathname = parseObj.pathname
    if (pathname == '/') {
        fs.readFile('./public/views/index.html', function (error, data) {
            if (error) {
                return res.end('获取index页面失败...')
            } else {
                var htmlStr = template.render(data.toString(), {
                    comments: comments
                })
                res.end(htmlStr)
            }
        })
        console.log(pathname)
    } else if (pathname == '/public/views/comments') {
        var comment = parseObj.query
        comment.date = "2020-3-17"
        comments.unshift(comment)
        res.statusCode = 302
        res.setHeader('Location', '/')
        res.end()
    } else if (pathname.indexOf('/public/') == 0) {
        fs.readFile('.' + pathname, function (error, data) {
            if (error) {
                return res.end('获取失败...')
            } else {
                res.end(data)
            }
        })
        console.log(pathname)
    } else {
        fs.readFile('./views/404.html', function (error, data) {
            if (error) {
                return res.end('Nothing')
            } else {
                res.end(data)
            }
        })
    }
})
Publicado 20 artículos originales · ganado elogios 5 · Vistas 880

Supongo que te gusta

Origin blog.csdn.net/zhuangww05/article/details/104942797
Recomendado
Clasificación