zoukankan      html  css  js  c++  java
  • nodejs,,一些基本操作--server。js

    1.解决中文乱码问题:

    const http = require('http')
    
    const server = http.createServer((req, res) => {
        // 设置字符编码 - 设置文本的解析形式
        // 200 表示本次请求是成功的
        // text/html     ----   解析标签输出
        // text/plain    ----   转义标签输出   ----  原样输出
        // nodejs服务器 默认是 text/html
        res.writeHead(200, {
            'Content-Type': 'text/plain;charset=utf-8'
        })
        res.write('<h1>hello world</h1>')
        res.write('<h2>您好</h2>') // 如果出现中文字符,默认会乱码   ---- 设定字符编码
        res.end()
    }) 
    
    server.listen(3000)
    
    console.log('your server is runing at http://localhost:3000')
    
    // ???? 打开控制台 -》 NETWORK,刷新页面,发现有2个请求  --- 要的是一个请求 ---- 过滤不需要的请求2.

    2.解析网址(自己设置的网址)

    // http
    // 解析网址   url
    /**
     * 完整的URL地址的解析字段
    ┌────────────────────────────────────────────────────────────────────────────────────────────────┐
    │                                              href                                              │
    ├──────────┬──┬─────────────────────┬────────────────────────┬───────────────────────────┬───────┤
    │ protocol │  │        auth         │          host          │           path            │ hash  │
    │ 协议      │  │                     ├─────────────────┬──────┼──────────┬────────────────┤       │
    │          │  │                     │    hostname     │ port │ pathname │     search     │       │
    │          │  │                     │     域名         │ 端口  │   路由   ├─┬──────────────┤       │
    │          │  │                     │                 │      │          │ │    query     │       │
    "  https:   //    user   :   pass   @ sub.example.com : 8080   /p/a/t/h  ?  query=string   #hash "
    │          │  │          │          │    hostname     │ port │          │                │       │
    │          │  │          │          ├─────────────────┴──────┤          │    参数         │ 哈希值│
    │ protocol │  │ username │ password │          host          │          │                │       │
    ├──────────┴──┼──────────┴──────────┼────────────────────────┤          │                │       │
    │   origin    │                     │         origin         │ pathname │     search     │ hash  │
    ├─────────────┴─────────────────────┴────────────────────────┴──────────┴────────────────┴───────┤
    │                                              href                                              │
    └────────────────────────────────────────────────────────────────────────────────────────────────┘
     * 
     */
    const url = require('url')
    
    const urlStr = "http://localhost:3000/login?username=wudaxun&password=123456"
    
    // url.parse(urlStr[, boolean]) --- 将字符串类型的网址转换成对象
    
    const obj = url.parse(urlStr,true)
    
    // console.log(obj)
    
    /**
     * Url {
      protocol: 'http:', // 协议
      slashes: true,
      auth: null, // 作者
      host: 'localhost:3000', // 域名 + 端口
      port: '3000', // 端口
      hostname: 'localhost', // 域名
      hash: null, // 哈希值
      search: '?username=wudaxun&password=123456', // ? + 参数
      query: 'username=wudaxun&password=123456', // 字符串类型的参数
      pathname: '/login', // 路由
      path: '/login?username=wudaxun&password=123456', // 路由 + ? + 参数
      href: 'http://localhost:3000/login?username=wudaxun&password=123456' // 完整的地址
    }
     */
    
     console.log(obj.query)  // username=wudaxun&password=123456
     console.log(obj.query.username) //wudaxun
     console.log(obj.query.password) //123456

    2.1.过滤图标设置图标

    /**
     * 过滤图标 、设置路由
     */
    const http = require('http');
    const url = require('url'); // 获取前端请求的信息 ---  url.parse() 字符串的url转成对象
    
    const server = http.createServer((req, res) => {
        if (req.url !== '/favicon.ico') { // 过滤图标的请求
        res.writeHead(200, {
            'Content-Type': 'text/html;charset=utf-8'
        })
    
        const urlObj = url.parse(req.url, true) // true 将参数类型的字符串转成对象
    
        // // write函数不能输出对象,可以输出字符串 ---- 对象转字符串
        // res.write(JSON.stringify(urlObj))
    
        // 拿路由
        // const pathname = urlObj.pathname
        const { pathname } = urlObj;
    
        res.write('<h1>您好,世界!</h1>' + pathname);
    
        res.end();
    }
    });
    
    server.listen(3000);
    
    console.log('your server is running at http://localhost:3000');
    
    // querystring  username=wudaxun&password=123456&sex=1&age=18 转成 对象

     

    3.querystrng将参数类型的字符串转换成对象类型

    /**
     * querystring
     *      将参数类型的字符串转换成对象类型
     * 
     *  username=wudaxun&password=123456  
     * 
     *      ===>
     *  
     *  { username: wudaxun, password: 123456 }
     */
    const querystring = require('querystring')
    
    const queryStr = 'username=wudaxun&password=123456&age=18'
    
    // querystring.parse(queryStr)  *---- 将字符串类型的参数 转换成 对象
    
    const obj = querystring.parse(queryStr)
    
    console.log(obj)
    
    /***
     * {
      username: 'wudaxun',
      password: '123456',
      age: '18'
    }
    
    总结:
        实际开发过程中并不需要使用 querystring,建议使用 url.parse(str, true)
    
        url.parse()的第二个参数为true可转对象,其原理就是 querystring.parse()
     */
    
    
     // ??? 已知的网页字符串可以搞定,那么如果是用户输入的网址呢?

    4.解析网址(服务器获取的网址)

    const http = require('http')
    const url = require('url')
    
    const server = http.createServer((req, res) => {
        if (req.url !== '/favicon.ico') {
            res.writeHead(200, {
                'Content-Type': 'text/html;charset=utf-8'
            })
    
            const urlStr = req.url // /login?username=wudaxun&password=123456
    
            const obj = url.parse(urlStr, true).query // { username: 'wudaxun', password: '123456' }
    
            const { username, password } = obj
    
            res.write(`用户名:${username}`)
            res.write(`密码: ${password}`)
    
            res.end()
    
        }
    })
    
    server.listen(3000)
    
    // 登录 注册表单 不要使用  &  --- 丢失数据
    
    
    /**
     * 如果用户输入  /home  那么输出  首页
     * 如果用户输入  /kind  那么输出  分类
     * 如果用户输入  /cart  那么输出  购物车
     * 如果用户输入  /user  那么输出  个人中心
     */

    fs(file-system)

    /**
     * fs    ----  file system
     *  后端语言的标志:
     *      文件的读写
     */
    
     // 文件的读操作
     // fs.readFile(path, 'utf-8', (err, data) => {})
    
     const fs = require('fs')
    
     fs.readFile('./01node介绍.html', 'utf-8', (err, data) => {
        if (err) {
            console.log(err)
        } else {
            console.log(data)
        }
     })
     

    在服务器打开别的网页:

    const http = require('http')
    const fs = require('fs')
    const server = http.createServer((req, res) => {
        if (req.url !== '/favicon.ico') {
            res.writeHead(200, {
                'Content-Type': 'text/html;charset=utf-8'
            })
    
            fs.readFile('./12test.html', 'utf-8', (err, data) => {
                if (err) throw err // 遇到错误,抛出异常,代码不再继续执行
                res.write(data)
                res.end()
            })
        }
    })
    
    server.listen(3000)
    
    
    /**
     * 如果用户输入  /home  那么输出  首页.html
     * 如果用户输入  /kind  那么输出  分类.html
     * 如果用户输入  /cart  那么输出  购物车.html
     * 如果用户输入  /user  那么输出  个人中心.html
     */
  • 相关阅读:
    立体图
    旅行家的预算
    洛谷P多米诺骨牌
    洛谷P2331最大子矩阵
    理想的正方形
    2015 ACM/ICPC Asia Regional Hefei Online Find a path
    Atcoder abc 138 F
    Atcoder abc 138 E String of Impurity
    zlb的8.19考试
    Atcoder abc 138
  • 原文地址:https://www.cnblogs.com/hy96/p/11587013.html
Copyright © 2011-2022 走看看