zoukankan      html  css  js  c++  java
  • node01

    ---恢复内容开始---

    1、node初体验

    安装完成node,写好相应的js代码后,在cmd中node 文件名即可完成编译执行过程。

    2、尝试使用node搭建一个简单服务器

    //引入http模块
    const http = require('http')
    //创建服务器
    let server = http.createServer(function (req,res) {//默认有两个参数,请求与相应
        res.write('welcome')
        res.end()//终止响应
    })
    //监听及设置端口
    server.listen(8080,function(){
        console.log('server is running')
    })

    通过打印上述代码中的req对象,有用的是

    .url 请求的资源地址

    3、文件读写:

    1)使用模块:fs

    2)读取操作

    const fs = require('fs')
    
    fs.readFile('a.txt',function(err,data){
        if(err){
            console.log(err)
        }else{
            //将二进制数据转换为字符串
            console.log(data.toString())
        }
    })

    3)写入操作

    const fs = require('fs')
    
    fs.readFile('a.txt',function(err,data){
        if(err){
            console.log(err)
        }else{
            //将二进制数据转换为字符串
            console.log(data.toString())
        }
    })
    
    //writeFile(fileName,data,callback)
    fs.writeFile('b.txt','hello,b!',function(err){
        console.log(err)
    })

    4)结合服务器一同使用

    //引入http模块
    const http = require('http')
    const fs = require('fs')
    //创建服务器
    let server = http.createServer(function (req,res) {//默认有两个参数,请求与相应
        let file=`./www${req.url}`//进行目标文件路径的拼接
        fs.readFile(file,function(err,data){
            if(err){
                res.end('读取失败哦')
            }else{
                res.end(data)
            }
        })
    })
    //监听及设置端口
    server.listen(8080,function(){
        console.log('server is running')
    })

    要注意的是,不论前台是按什么方式发起请求,form/ajax/jsonp,

    后台的处理方式都是相同的,请求方式才有影响

    4、服务器对get的处理

    1)使用queryString模块

    const qs=require('querystring')
    qs.parse('aquerystring')//将查询字符串转为json对象
     
    2)使用url模块
    将帮助我们解析url地址
    .parse(url,true)
    将返回一个对象,包含请求参数,端口等各种信息
    给了true的话query将被自动解析为json,同时也会解析pathname
    const http = require('http')
    const qs=require('querystring')
    const urlLib=require('url')
    
    //创建服务器
    let server = http.createServer(function (req,res) {//默认有两个参数,请求与相应
       let obj=urlLib.parse(req.url,true)
       let url=obj.pathname
       let query=JSON.stringify(obj.query)
       console.log(`${url}=====${query}`)
        res.end('test page')
    })
    //监听及设置端口
    server.listen(8080,function(){
        console.log('server is running')
    })

    5、服务器对post的处理

    const http = require('http')
    const qs = require('querystring')
    
    //创建服务器
    let server = http.createServer(function (req, res) {//默认有两个参数,请求与相应
        let str = ''//用于存储发送过来的数据,不严谨
        //由于通过post发送的数据可能很大,因此根据数据量大小采取分段多
        //多次发送的策略
        //data,在有一段数据到达后触发,可能触发多次
        req.on('data', function (data) {
            str += data
        })
        //end,数据全部到达后触发,仅触发一次
        req.on('end', function () {
            let postData = qs.parse(str)
            console.log(postData)
            res.end('请求完成')
        })
    })
    //监听及设置端口
    server.listen(8080, function () {
        console.log('server is running')
    })

    6、阶段性总结,写一个比较完整的服务器

    const http = require('http')
    const qs = require('querystring')
    const fs = require('fs')
    const urlLib = require('url')
    
    //创建服务器
    let server = http.createServer(function (req, res) {//默认有两个参数,请求与相应
        //get
        let obj=urlLib.parse(req.url,true)
        let url=obj.pathname
        const GET=obj.query
        
        //post
        let str=''
        req.on('data',function (data) {  
            str+=data
        })
        req.on('end',function(){
            const POST=qs.parse(str)
        })
    
        //文件请求
        let file='./www'+url
        fs.readFile(file,function(err,data){
            if(err){
                res.end('404')
            }else{
                res.end(data)
            }
        })
    
    
    })
    //监听及设置端口
    server.listen(8080, function () {
        console.log('server is running')
    })
  • 相关阅读:
    Vue(小案例_vue+axios仿手机app)_go实现退回上一个路由
    nyoj 635 Oh, my goddess
    nyoj 587 blockhouses
    nyoj 483 Nightmare
    nyoj 592 spiral grid
    nyoj 927 The partial sum problem
    nyoj 523 亡命逃窜
    nyoj 929 密码宝盒
    nyoj 999 师傅又被妖怪抓走了
    nyoj 293 Sticks
  • 原文地址:https://www.cnblogs.com/Tanqurey/p/10770622.html
Copyright © 2011-2022 走看看