nodejs-未完结

Http模块

1.引入http模块

node-http-server

//表示引入http模块
const http = require('http');
//创建web服务
/*
request 获取url传过来的信息
response 给浏览器响应信息
*/
http.createServer(function(request,response){
    //设置响应头
    response.writeHead(200,{'Content-Type':'text/plain'});
    //表示给页面上面输出一句话并结束响应
    response.end('hello World');
}).listen(8081);  //端口

URL模块

url.parse() 解析URL
const url = require('url');

var api='http:www.baidu.com?name=zhangsan&age=20';
var temp = url.parse(api,true)
console.log(temp);
var getValue = temp.query;
console.log(getValue);
console.log(`name:${getValue.name}--age:${getValue.age}`);

supervisor工具

npm install -g supervisor

用supervisor代替node

CommonJS

提供一个类似python语言的标准库

是模块化的标准,nodejs是模块化的实现

核心模块:

http,url,fs

文件模块:自定义模块

自定义模块的规定

1,可以把公共的功能抽离成为一个单独的js文件作为一个模块,默认情况下这个模块的方法或属性,外部无法访问。如果让外部访问模块里面的方法或属性,就必须在模块里面通过 exports获得module.exports暴露属性或者方法

2,需要使用这些模块时,通过require的方式引入模块,可以使用模块里面暴露的属性和方法

function A(a){
    return a*a;
}
exports.A = A;
// 或者
// module.exports = obj;
//有一点区别,都可以使用
const x = require('./a.js')
x.A(1);

在node_modules文件夹下的文件,可以直接写node_modules之后的路径,不写全路径

默认找模块里面的index.js文件

可以在package.json文件更改入口

通过npm init --yes生成package.json文件

包目录

  • package.json 包描述文件
  • bin 用来存放可执行二进制文件的目录
  • lib 用于存放javaScript代码的目录
  • doc 用来存放文档的目录

通过npm命令,下载第三方的模块(包)

npmjs.com文档

– save 写入依赖

1.找到包

2.下载包

3.引用包

4.使用包

6.npm i 表示安装dependencies的所有依赖包

格式化日期的包, silly-datetime

指定包的版本 npm install jQuery@2.1.0

package.json 定义了这个项目所需要的各种模块以及项目的配置信息(比如名称、版本、许可证等元数据)

1.创建package.json

npm init  或者 npm init --yes

2.package.json文件

^ 表示第一位版本号不变,后面两位取最新的
~表示前两位不变,最后一个取最新
*表示全部取最新
没有前缀表示指定版本

淘宝镜像

npm install -g cnpm --registry=http://registry.npm.taobao.org

FS模块

const fs = require('fs')
//fs.stat 检查是文件还是目录
fs.stat('./html',(err,data)=>{
    if(err){
        console.log(err);
        return;
    }
    console.log(`是文件:${data.isFile()}`);
    console.log(`是目录:${data.isDirectory()}`);
});

//fs.mkdir 创建目录
fs.mkdir('./css',(err)=>{
    if(err){
        console.log(err);
        return;
    }
    console.log("success!")
});
//fs.writeFile 创建写入文件,
//如果文件已经存在,直接覆盖文件,不存在就创建
fs.writeFile('./html/index.html','hellojs',(err)=>{
    if(err){
        console.log(err);
        return;
    }
    console.log("success!")
})
//fs.appendFile 追加文件
// 不存在,创建,存在,追加
fs.appendFile('./css/base.css','body{color:red}',(err)=>{
	if(err){
        console.log(err);
        return;
    }
    console.log("success!")
})

//fs.readFile 读取文件
fs.readFile('./html/index.html',(err,data)=>{
    if(err){
        console.log(err);
        return;
    }
    console.log(data.toString());//buffer 转化为string类型
})

//fs.readdir 读取目录
fs.readdir('./html',(err,data)=>{
    if(err){
        console.log(err);
        return;
    }
    console.log(data)
});

//fs.rename 重命名移动文件
// 1.修改名称 2.移动文件
// 旧路径 新路径  回调函数
fs.rename('./css/aaa.css','./css/index/css',(err)=>{
     if(err){
        console.log(err);
        return;
    }
    console.log('success');
});

//fs.rmdir 删除目录
//目录里面有文件 不能删除 ,先删除目录里的所有文件,在删除目录
fs.rmdir('./aaa',(err)=>{
     if(err){
        console.log(err);
        return;
    }
    console.log('success');
});
//fs.unlink 删除文件
fs.unlink('./aaa/html.js',(err)=>{
    if(err){
        console.log(err);
        return;
    }
    console.log('success');
});

案例

1.判断是否存在upload目录,如果没有就创建这个目录,有就不做操作

const fs=require('fs');
var path = './upload';
fs.stat('./upload',(err,data)=>{
    if(err){
        //创建目录
        mkdir(path);
        return;
    }
    if(data.isDirectory()){
        console.log('cunzai')
    }else {
        //先删除同名文件再执行创建目录
        fs.unlik(path,(err)=>{
            if(!err){
                mkdir(path);
            }else{
                console.log('error!')
            }
        })
        
    }
});

//创建目录方法
function mkdir(dir){
    fs.mkidr(dir,(err)=>{
        if(err){
            console.log(err);
            return;
        }
        
    })
}

第三方 mkdirp

var mkdirp = require(‘mkdirp’)

ES6常见语法的使用

1.let const 模板字符串

let name='zhangsan'
const age = 20
console.log(`${name}deage${age}`)

2.箭头函数 this指向上下文

function(){
    
}
()=>{
}

3.对象、属性的简写

var name='zhangsan'
var app = {
	name,
    run(){
        console.log(`${this.name}runing`)
    }
}
app.run();

4.Promise

async是让方法变成异步

await 是等待异步方法执行完成,必须用在异步方法中

以流的方式

读取文件

const fs = require('fs')
var readStream = fs.createReadStream('./data/input.text');
var count = 0;
var str='';
readStream.on('data',(data)=>{
	str+=data;
    count++;
});
readStream.on('end',(data)=>{
	console.log(str);
    console.log(count);
});
readStream.on('error',(err)=>{
	console.log(err);
});

写入文件

var fs = require('fs');
var data='ifhaigfikabifafjbasfhall';
var writeStream = fs.createWriteStream('./data/output.txt');
writeStream.write(data);
//标记写入完成
writeStream.end();
writeStream.on('finish',()=>{
    console.log('写入完成');
})

管道流,主要用于大文件

var fs=require('fs')
//创建一个可读流
var readerStream = fs.createReadStream('input.txt');
//创建一个可写流
var writerStream = fs.createWriteStream('output.txt');

readerStream.pipe(writerStream);
console.log("程序执行完成")

创建一个静态web服务器

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值