原生 HTTP 和 express

HTTP 服务
    1、加载 http 核心模块

   var http = require('http')

  加载模板引擎(先npm安装)

 var template = require('art-template')


    2. 使用 http.createServer() 方法创建一个 Web 服务器,返回一个 Server 实例
  

 var server = http.createServer()

 
    3. 注册 request 请求事件,当客户端请求过来,就会自动触发服务器的 request 请求事件
    request 请求对象  response 响应对象

    server.on('request', function (request,response) {
      console.log(resqust.url) //端口号之后的路径/...;
      
          3.1 response 对象可以用 write() 给客户端发送响应数据,可以使用多次,但最后一定要用 end() 来结束响应
          response.write('lllll')
          response.end()
          3.2 直接使用end(‘<h1>你</h1>’)
          //响应内容只能是二进制或字符串,使用JSON.stringify()

  使用模板引擎
            fs.readFile('./views/index.html', function (err, data) {
                if (err) {
                    return response.end('404 NOT FOUND');
                }
                var rel = template.render(data.toString(), dataList);
                response.end(rel);
            });
})


    4. 绑定端口号,启动服务器

    server.listen(3000, function () {
      console.log('服务器启动成功,请求访问 http://127.0.0.1:3000/')
    }) 


简写:
http

  .createServer(function (request, response) {})  //创建一个 Web 服务器
  .listen(3000, function () {}) //绑定端口号,启动服务器


response.end() 一个HTML页面,如果HTML页面引入静态资源,需设置

        访问首页
        if (url === '/') {
            fs.readFile('./views/index.html', function (err, data) {
                if (err) {
                    return response.end('404 NOT FOUND');
                }
                response.end(data);
            });
        }  else if (url.indexOf('/public/') === 0) {

        访问静态资源(控制用户可以访问到什么)


            console.log(url);  //  /public/img/image3.jpg
            fs.readFile('.' + url, function (err,data) {
                if (err) {
                    return response.end('404 NOT FOUND');
                }
                response.end(data);
            });
        }

 

express 框架
1、安装  npm
2、引包

var express = require('express');


创建服务器应用程序

var app = express();


静态资源服务:  公开指定目录,就可以通过/public/xxx 方式访问public目录中所有资源

    app.use('/public/', express.static('./public/'))
    127.0.0.1/public/index.html   (推荐)

    app.use(express.static('./public/'))
    127.0.0.1/index.html    通过省略/public 方式访问

    app.use('/a/', express.static('./public/'))
    127.0.0.1/a/index.html    起别名,通过 /a 代替 /public 方式访问

 

配置使用art-template 模板引擎

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


 第一个参数: 表示当渲染以 .art 结尾的文件时,使用art-template 模板引擎,可以修改成 html ,则渲染 html 文件

    不需要 require('art-template')

    使用方式:

 res.render('html 模板名', {数据})


    第一个参数:不能写路径,默认会去项目中的 views 目录中查找该模板文件
    如果文件是 views 中 子目录 admin 下的 admin.html,则
    res.render('/admin/html 模板名', {数据})

    如果想要修改默认的 views 目录,可以
    app.set('views', 修改render函数的默认路径)

基本路由: 当以 get/post 请求 / 时,执行对应的回调函数

app.get('/', function (req, res) {
        res.send('hello world');
    });
app.post(
'/login', function (req, res) { res.send('login'); });

获取 get 请求的数据
    req.query  返回对象
获取 post 请求的数据  (express网站-->资源-->中间件)
    需使用第三方包: body-parser
    
  安装: npm install body-parser
   配置:
    
  var express = require('express')
  var bodyParser = require('body-parser')

  var app = express()

  配置body-parser,只要加入这个配置,则在 req 请求对象上多出一个属性: body
  可以通过 req.body 获取 post 请求数据
  // parse application/x-www-form-urlencoded
  app.use(bodyParser.urlencoded({ extended: false }))

  // parse application/json
  app.use(bodyParser.json()


设置端口

app.listen(3000, function () {
    console.log('app server is running');
});


修改完代码自动重启:
使用第三方命令行工具 nodemon 解决修改代码重启服务器问题

    安装  npm install --global nodemon
    验证安装成功  nodemon --version
    使用: nodemon app.js

 通过nodemon启动的服务器,会监视文件的变化,当文件变化时,自动重启服务器

posted on 2019-11-08 13:08  听说你比我贱  阅读(1252)  评论(0编辑  收藏  举报

导航