node.js初探之静态服务

作者: 零穆 | 来源:发表于2019-12-02 00:49 被阅读0次

    基本功能

    在本地根据指定端口启动一个http server,等待着来自客户端的请求
    当请求抵达时,根据请求的url,以设置的静态文件目录为base,映射得到文件位置
    打开文件待读取
    设置response header
    发送文件到客户端
    等待来自客户端的下一个请求

    利用express 执行node.js

    var app = express()

    然后设置静态文件目录,规则如下:

    1. 当以 /public/ 开头的时候,去./public/ 目录中找对应的资源

    app.use('/public/',express.static('./public/'))

    1. 若以其他开头,比如以‘/a/’为例,则必须是/a/public 目录中的资源具体路径。

    app.use('/public/',express.static('./public/'))

    1. 当省略第一个参数的时候,i则可以通过 省略 /public 的方式来访问

    app.use(express.statice('./public/'))

    配置使用 art-template 模板引擎

    因为利用fs文件模块读取的数据,是2进制字符串,需要转译之后才可以变为人们可以看得懂的文件,同时也要注意文件的格式。

    app.engine('html', require('express-art-template'))

    第一个参数 表示, 当渲染以 .html 结尾的文件的时候, 使用art-template 模板引擎
    express-art-template是专门用来在 Express 中,把 art-template 整合到express 中。

    注意点:虽然引用 art-template 但是也必须安装art-template.原因就在于 express-art-template 依赖了 art-template

    Express 为 Response 相应的对象提供了一个方法,render
    render 方法默认是不可以使用的,但是如果配置了模板引擎就可以使用, 第一个参数不可以写路径,默认会去项目中的 views 目录中查找该模板文件 ,也就是说 Express 有一个约定:开发人员把所有的视图文件都放到了 views 目录中。

    如果想要修改默认的 views目录

    app.set('views', render 函数的默认路径) // 第一个参数必须是 'views'

    配置路由

    app.get('/login', (req, res) => {
        console.log('********************')
        console.log(req.body)  
        res.render('login.html');
    })
    

    当请求是/login的时候,返回login页面

    开启服务

    app.listen(3000, () => {
    console.log('开启3000端口‘’)
    })

    开启3000端口的服务

    注意:在 Express 中没有内置 获取表单 post 请求体的API。
    如果涉及到表单,这里我们需要使用一个第三方包:body-parser。

    安装:

    npm install --save body-parser

    配置如下:

    var express = require('express')
    var bodyParser = require('body-parser')
    
    const localPort = 3000
    var app = express()
    
    // create application/json parser
    var jsonParser = bodyParser.json()
    
    // create application/x-www-form-urlencoded parser
    var urlencodedParser = bodyParser.urlencoded({ extended: false })
    
    
    app.post('/login', (req, res) => {
        console.log('********************')
        console.log(req.body)
    
        res.end();
    })
    
    app.listen(localPort, () => {
        //console.log('http://127.0.0.1:%s', host, port)
    })
    

    相关文章

      网友评论

        本文标题:node.js初探之静态服务

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