node基础

一.//用node创建一个应用
/*
1.引入模块
2.创建服务
3.监听端口
 */
const http = require('http');
http.createServer((req,res)=>{
 res.writeHead(200,{
     'Content-Type':'text/plain;charset=utf-8'
 })
 res.end('生命不息')
}).listen(8080);

二:读取文件

//默认是异步的 即可以一边读取文件一边做别的事情 
const fs = require('fs')
console.log('start')
fs.readFile('./1.html',(err,data)=>{
    console.log(data.toString())
})
console.log('end')

const fs = require('fs')
console.log('start')
//同步读取文件 需要等待
const data = fs.readFileSync('./1.html');
console.log(data.toString())
console.log('end')

const fs = require('fs');
console.log('start sync');
//同步会阻塞
const data = fs.readFileSync('1.html','utf-8',(err)=>{
    if(err){
        console.error(err)
    }
});
console.log('end sync');
console.log('start async');
//异步不会阻塞
fs.readFile('2.html',(err,data)=>{
    if(err){
        console.error(err)
    }else{
        console.log('end async')
    }
})

写:
const fs = require('fs');
fs.writeFile('1.html','你好啊',(err)=>{
    console.log(err)

})

三:事件队列:
Node.js 所有的异步 I/O 操作在完成时都会发送一个事件到事件队列
const events = require('events');
const eventEmitter = new events.EventEmitter();
//绑定事件
eventEmitter.on('aa',()=>{
    console.log('事件被触发了123');
})
setTimeout(()=>{
    eventEmitter.emit('aa');
},2000);

四:Buffer对象,是为了处理二进制数据
//写入buffer
const buf = Buffer.alloc(256);
const len = buf.write('www.baidu');
console.log(buf);
//转换为字符串
console.log(buf.toString('ascii'));
console.log(len);

//将buffer转换为json

五:流
//流的步骤
// 1.创建流对象
// 2.处理流事件
//创建读取流
const fs = require('fs');
const readerStream = fs.createReadStream('src/input.txt');
let data = '';
readerStream.on('data', (chunk) => {
    data += chunk;
})
readerStream.on('error', (err) => {
    console.log(err);
})
readerStream.on('end',()=>{
    console.log(data);
})
console.log('读取执行完了');

//创建写入流
const writerStream = fs.createWriteStream('src/out.txt');
let writeData = '这是我写入的内容';
//使用utf8格式写入数据
writerStream.write(writeData,'UTF8');
//标记文件末尾
writerStream.end();
//处理流事件
writerStream.on('finish',()=>{
    console.log('写入完成');
})
writerStream.on('error',(err)=>{
    console.log(err);
})
console.log('写入执行完毕了')

六:express
//注意req里面的 baseUrl是定义时候的/a,path是/a后面的所有的字符串,originalUrl是包含/a和后面的所有的字符串
//创建一个get请求
const express = require('express');
const app = express();
// app.get('/name',(req,res)=>{
//     res.end("xx");
// })
// app.listen(8004,()=>{
//     console.log('server start');
// })
//创建一个带参数的get请求
// app.get('/name1/:age',(req,res)=>{
//     const {age} = req.params;
//     res.json({
//         "name":"zhangsan",
//         age
//     })
// })
// app.listen(8005,()=>{
//     console.log('server start')
// })
//创建一个post请求
app.post('/name3',(req,res)=>{
    res.send('这是post请求');
})
app.listen('8006',()=>{
    console.log('server start');
})

七:路由
web服务如何处理一个请求
1.按照请求的方式来区分 根据get/post
2.通过uri即路径来区分

八:node的工具模块
path模块
//join是连接路径
//resolve是从右向左解析路径成为一个绝对路径
 

你可能感兴趣的:(node)