node.js写入文本 前后端简单交互

397 阅读3分钟

1.同步异步创建文件写入文本 创建文件夹

1.var fs = require('fs')// fs   file 文件 system  系统  文件操作系统
// Synchrouons 同步
// Asyhchrouons 异步
// 同步:当有多个任务需要执行的执行,上一个任务没有执行完毕,下一个任务不能开启  
// 异步:上一个任务没有结束,下一个任务可以继续执行  

1.1 同步异步写入

// 参数1:路径
// 参数2:写入的数据 
// 参数3:回调函数   Error错误 
//同步写入
 fs.writeFileSync('./斗破苍穹.txt','萧炎',function(err){
     if(err){
         console.log(err)
     }else{
         console.log('成功')
     }
 })
 //异步写入
 fs.writeFile('斗罗大陆','唐三',function(err){
     if(err){
         console.log(err)
     }else{
         console.log('成功')
     }
 })

1.2exists 判断是否存在指定文件夹

fs.exists('文件夹名''是否存在当前文件夹 布尔类型')
fs.mkdirSync('public')//常见文件夹;

fs.exists('public',function(isExists){
    //如果不存在
    if(!isExists){
        //创建文件夹
        fs.mkdirSync('public');
    }
})

1.3同步异步读取文件

//同步读取
var data =fs.readFileSync('./斗破苍穹.txt')
console.log(data.toString());
//异步读取
fs.readFile('./斗罗大陆',function(err,data){
    if(err){
        console.log(err)
    }else{
        console.log(data.toString())
    }
})
    同步读取参数
    1.文件路径 返回文件内容toString()转换为字符串
    异步读取参数
    1.文件路径
    2.回调函数
    2.1 err错误
    2.2文件内容

3.文件的写入

// 如果没有这个文件 则自动创建并且写入内容
// 如果有这个文件 则直接覆盖文件里面的内容
// fs.writeFile('斗罗大陆','十万兽魂1111',function(err){
//     if(err){
//         console.log(err)
//     }else{
//         console.log('成功' )
//     }
// })
//添加新数据
fs.appendFile('./斗罗大陆','\n唐三',function(err){
    if(err){
        console.log(err)
    }else{
        console.log('成功')
    }
})
    fs.appendFile()参数
    1.文件路径
    2.写入的文本
    3.err;

2.express模块与前后端交互

2.1.npm init 初始化项目

重点 生成的main属性值 为服务器名

2.创建前端文件,ajax请求后端

    <button onclick="sendPost()">发送</button>
    <script>
        function sendPost() {
            var xhr = new XMLHttpRequest();
            xhr.open('POST', './postInfo');
            xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
            xhr.onreadystatechange=function () {
                if (xhr.readyState == 0) {
                    console.log('open方法已经调用,但是send未调用')
                }
                if (xhr.readyState == 1) {
                    console.log('send方法已经调用,但是服务器未响应')
                }
                if (xhr.readyState == 2) {
                    console.log('服务器已经开始响应,并且准备返回数据')
                }
                if (xhr.readyState == 3) {
                    console.log('服务器已经返回部分数据')
                }
                if (xhr.readyState == 4) {
                    console.log('服务器返回全部数据')

                    console.log(xhr.response)
                }
            }
            xhr.send('age=17&fond=吃鸡')
        }
        
    </script>

3,创建服务器 server.js具体看package.json看main属性是什么

4.下载模块 npm install express模块 此处下载的是express模块

5.server.js写服务器

var express = require('express')
//发送请求post请求 所以还需要body-parser模块
// body身体  parser解析   
// 解析post请求当中的请求体参数
var bodyParser = require('body-parser')

//获取express对象
var app = express()//等于http模块中的app.createServer();

//获取前端代码文件夹 // 让当前程序使用静态资源文件夹  public
app.use(express.static('public'))

// url  encoded 编码   decoded 解码
// 使用bodyparser对编码的url进行处理   extended  扩展  是否允许url扩展  
//extended是否允许url扩展 false为字符串 true为其他类型如数组等;
app.use(bodyParser.urlencoded({extended:false}))



//获取前端请求
app.post('postInfo',function(req,res){
    //解析前端参数
    var age = req.body.age;
    var fond = req.body.fond;
    //发送给前端
    res.send('我今年'+age+'岁了'+',我喜欢打'+fond)
})

//设置端口 监听
app.listen('8080',function(){
    console.log('8080启动//......')
})
    server.js写服务器 解析
    1.创建express模块
    var express = require('express')
    2.创建body-parser 解析模块 
     var bodyParser = require('body-parser')
    3.创建express对象 我现在理解为创建服务器;
    var app = express()//等于http模块中的app.createServer();
    
    4//获取前端代码文件夹  //当前程序使用静态资源文件夹  public
    app.use(express.static('public'))
    
    5.使用bodyparser对编码的url进行处理 urlencoded解析 
    extended是否允许url扩展 false为字符串 true为其他类型如数组等;
    app.use(bodyParser.urlencoded({extended:false}))
    
    6.//获取前端请求
    参数 服务器路径;req前端所给的参数,res数据响应对象
    req.body.age解析参数
    res.send()给前端返回值
    
    app.post('postInfo',function(req,res){
        //解析前端参数
        var age = req.body.age;
        var fond = req.body.fond;
        //发送给前端
        res.send('我今年'+age+'岁了'+',我喜欢打'+fond)
    })
    
    //设置端口 监听
    app.listen('8080',function(){
        console.log('8080启动//......')
    })