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')
    })
  • 相关阅读:
    Subsequence
    【模板】AC自动机(加强版)
    1563: hzwer的跳跳棋(hop)
    P2469 [SDOI2010]星际竞速
    P2746 [USACO5.3]校园网Network of Schools
    Blocks
    Training little cats
    Period
    UVA-3942 Remember the Word
    初学线段树(poj3264+poj2777)
  • 原文地址:https://www.cnblogs.com/Tanqurey/p/10770622.html
Copyright © 2011-2022 走看看