0%

const fs=require('fs')
//第一种方式:普通读取
// fs.readFile('../资料/学习流程.jpeg',(err,data)=>{
//     if(err){
//         console.log('文件读取失败');
//         return;
//     }
//     console.log(data);

//     fs.writeFile('../资料/学习流程2.jpg',data,err=>{
//         if(err){
//             console.log('写入失败');
//             return;
//         }
//         console.log('写入成功');
//     })

// })

//第二种方式:流式读取写入
const rs=fs.createReadStream('../资料/学习流程.jpeg')
const ws=fs.createWriteStream('../资料/学习流程3.png')
rs.on('data',chunk=>{
    //console.log('读取成功');
    console.log(chunk);
    ws.write(chunk)
})

const fs=require('fs')

//创建读取流对象
const rs=fs.createReadStream('../资料/学习流程.jpeg')

//绑定data事件
rs.on('data',chunk=>{
    console.log(chunk.length);
})

//end是可选事件
rs.on('end',()=>{
    console.log('读取完成');
})

const fs=require('fs')

//参数说明:
//path 文件路径
//options 选项配置
//callback 回调函数

//异步读取
// fs.readFile('./观书有感.txt',(err,data)=>{
//     if(err){
//         console.log('读取失败');
//         return;
//     }
//     console.log('读取成功');
//     console.log(data.toString());//默认输出的是Buffer,所以要转化为字符串形式
// })

//同步读取
let data=fs.readFileSync('./观书有感.txt')
console.log(data.toString());//默认输出的是Buffer,所以要转化为字符串形式

//导入fs模块
const fs=require('fs');

//创建写入流对象,适用于写入较为频繁的场景
//(要传递文件的写入路径)
const ws=fs.createWriteStream('./观书有感.txt')

//流式写入
ws.write('半亩方塘一鉴开\r\n');
ws.write('天光云影共徘徊\r\n');
ws.write('问渠那得清如许\r\n');
ws.write('为有源头活水来\r\n');

//关闭通道
ws.close();

const fs=require('fs')

//在我呢见末尾追加写入(同步)
//    \r\n表示换行
fs.appendFile('座右铭.txt',',择善而从',err=>{
    if(err){
        console.log('文件追加失败');
        return;
    }
    console.log('文件追加成功');
})

//异步
fs.appendFileSync('座右铭.txt','\r\n择善而从')

const fs=require('fs');

// 参数说明:
// file 文件名
// data 待写入的数据
// options 选项设置 (可选)
// callback 写入回调

//同步写入:js代码向下执行,将写入文件的操作交给IO线程,自己继续向下执行,全部执行完毕后从栈中去除数据
fs.writeFile('./座右铭.txt','三人行,则必有我师',err=>{
    //err 写入成功,err为一个对象;写入失败,err则为null
    if(err){
        console.log('写入失败');
        return;
    }
    console.log('写入成功');
})
console.log(1+1);


//异步写入:js代码等待文件写入执行完毕后继续向下执行
fs.writeFileSync('./data.txt','test');

Buffer(缓冲器)

1、概念

Buffer 是一个类似于数组的 对象 ,用于表示固定长度的字节序列
Buffer 本质是一段内存空间,专门用来处理 二进制数据

2、特点

1、Buffer 大小固定且无法调整

2、Buffer 性能较好,可以直接对计算机内存进行操作

3、每个元素的大小为 1 字节(byte)

//1、alloc,要对旧数据进行清零,速度慢
let buf=Buffer.alloc(10);
// console.log(buf);

//2、allocUnsafe,不会对数据进行清零,速度快
let buf_2=Buffer.alloc(10000);
// console.log(buf_2);

//from:转化为16进制
let buf_3=Buffer.from('hello');
// console.log(buf_3);

//buffer转化为字符串
let buf_4=Buffer.from([105, 108, 111, 118, 101, 121, 111, 117]);
console.log(buf_4.toString());//iloveyou

1、entry(入口)

指示 Webpack 从哪个文件开始打包

2、output(输出)

指示 Webpack 打包完的文件输出到哪里去,如何命名等

3、loader(加载器)

webpack 本身只能处理 js、json 等资源,其他资源需要借助 loader,Webpack 才能解析

4、plugins(插件)

扩展 Webpack 的功能

5、mode(模式)

主要由两种模式:

  • 开发模式:development
  • 生产模式:production
const path = require("path");//用来处理路径问题
module.exports = {
    //入口
    entry: "./src/main.js",//相对路径
    //输出
    output: {
        //文件的输出路径
        //__dirname表示node.js变量,表示当前文件的文件夹目录
        path: path.resolve(__dirname, 'dist'),//绝对路径
        //文件名
        filename: 'main.js',
    },
    //加载器
    module: {
        rules: [
            //loader的配置
        ]
    },
    //插件
    plugins: [],
    //模式
    mode: "development"
}

1、为什么要学习webpack?

开发时,我们会使用框架(React、Vue),ES6 模块化语法,Less/Sass 等 css 预处理器等语法进行开发。

这样的代码要想在浏览器运行必须经过编译成浏览器能识别的 JS、Css 等语法,才能运行。

所以我们需要打包工具帮我们做完这些事。

除此之外,打包工具还能压缩代码、做兼容性处理、提升代码性能等。

2、基本使用:

Webpack 是一个静态资源打包工具。

它会以一个或多个文件作为打包的入口,将我们整个项目所有文件编译组合成一个或多个文件输出出去。

输出的文件就是编译好的文件,就可以在浏览器段运行了。

我们将 Webpack 输出的文件叫做 bundle

3、功能介绍

Webpack 本身功能是有限的:

  • 开发模式:仅能编译 JS 中的 ES Module 语法
  • 生产模式:能编译 JS 中的 ES Module 语法,还能压缩 JS 代码

<script>
    //数组解构
    let ary = [1, 2, 3];
    let [a, b, c, d] = ary;
    //若解构不成功就被定义为undefine
    console.log(a);//1
    console.log(b);//2
    console.log(c);//3
    console.log(d);//undefined

    //解构赋值可以指定默认值
    //解构赋值也可以引用其他变量,但必须是已经声明的
    let [x = 1, y = x] = []
    console.log(x);//1
    console.log(y);//1

    //对象解构
    let person = { name: '我的', age: 18 }
    let { name, age } = person
    console.log(name);//我的
    console.log(age);//18

    let { name: myName } = person;
    console.log('myName的值为' + myName);
</script>