zoukankan      html  css  js  c++  java
  • node

    1. node.js的安装

    2. 客户端与服务端

    意思就是js文件是在客户端环境运行(在浏览器中打开)还是在服务端环境(直接终端运行命令 node index.js)运行

    3.1 nodejs原生服务器

    const http = require("http")
    const server = http.createServer((req, res) => {
        res.write("使用node启动一个服务器")
        res.end()
    })
    
    server.listen(3000)

     4.1 node 模块 (遵循commonjs规范) 

    http://nodejs.cn/learn/expose-functionality-from-a-nodejs-file-using-exports

    const car = {
      brand: 'Ford',
      model: 'Fiesta'
    }
    module.exports = car
    //在另一个文件中
    const car = require('./car')

    5.1 npm 包管理

    npm i axios@0.19.2(安装指定版本)

    开发依赖:只在开发环境中使用到的依赖,例如:eslint,less(生产环境是以css)等等

    运行依赖:任何环境都用到的依赖,例如:jquery

    "dependencies": {},       // 运行依赖
    "devDependencies": {},  // 开发依赖 

    6.1 fs模块 (文件操作(读取和写入))

    const fs = require("fs")
    
    // 文件写入
    // a:追加写入; w:写入; r:读取
    // fs.writeFile("1.txt", "追加的文字",{flag: "a"}, function(err) {
    //   if(err) {
    //     return console.log(err)
    //   }
    //   console.log("文件写入成功")
    // })
    
    // 文件读取 
    // fs.readFile("1.txt", "utf-8", function(err, data) {
    //   if(err) {
    //     return console.log(err)
    //   }
    //   console.log(data)
    // })
    
    // 所有文件操作 没有Sync都是异步 否则是同步
    // let data = fs.readFileSync("1.txt", "utf-8")
    // console.log(data)
    
    // 修改文件名
    // fs.rename("1.txt", "2.txt", err => {
    //   if(err) {
    //     return console.log(err)
    //   }
    // })

     6.2 文件夹目录操作

    // 目录(文件夹)操作
    
    // 创建目录
    //  fs.mkdir("11", err => {
    //    if(err) {
    //      return console.log(err)
    //    }
    //    console.log("创建目录成功")
    //  })
    
    // 修改目录名称
    // fs.rename('11', '22', err => {
    //   if (err) {
    //     return console.log(err)
    //   }
    //   console.log("修改目录成功")
    // })
    
    // 读取目录
    // fs.readdir("22", (err, data) => {
    //   if(err) {
    //     return console.log(err)
    //   }
    //   console.log(data)
    // })
    
    // 删除目录 (空文件夹/目录)
    // 想要删除文件夹,可以通过删除文件夹里面的文件,当不确定文件夹里面是否还有文件夹时,利用递归的方法
    // fs.rmdir("11", err => {
    //   if(err) {
    //     return console.log(err)
    //   }
    //   console.log("删除目录成功")
    // })
    
    // 删除文件
    // fs.unlink("11.html", err => {
    //   if (err) {
    //     return console.log(err)
    //   }
    //   console.log("删除文件成功")
    // })
    
    // 判断文件/目录 是否存在
    // fs.exists("22", exists=> {
    //   console.log(exists) // 返回布尔值
    // })
    
    // 获取文件或者目录的详情信息
    // fs.stat("22", (err, stat) => {
    //   if(err) {
    //     return console.log(err)
    //   }
    //   // console.log(stat)
    //   // 判断文件是否是文件
    //   let res = stat.isFile()
    //   // 是否是文件夹
    //   // let res = stat.isDirectory()
    //   console.log(res)
    // })

     7.1 Buffer(缓冲区)

    https://www.runoob.com/nodejs/nodejs-buffer.html

    JavaScript 语言自身只有字符串数据类型,没有二进制数据类型。
    
    但在处理像TCP流或文件流时,必须使用到二进制数据。因此在 Node.js中,定义了一个 Buffer 类,该类用来创建一个专门存放二进制数据的缓存区。
    
    在 Node.js 中,Buffer 类是随 Node 内核一起发布的核心库。Buffer 库为 Node.js 带来了一种存储原始数据的方法,可以让 Node.js 处理二进制数据,每当需要在 Node.js 中处理I/O操作中移动的数据时,就有可能使用 Buffer 库。原始数据存储在 Buffer 类的实例中。一个 Buffer 类似于一个整数数组,但它对应于 V8 堆内存之外的一块原始内存
    
    Buffer 实例一般用于表示编码字符的序列,比如 UTF-8 、 UCS2 、 Base64 、或十六进制编码的数据。 通过使用显式的字符编码,就可以在 Buffer 实例与普通的 JavaScript 字符串之间进行相互转换
    创建 Buffer 类
    Buffer 提供了以下 API 来创建 Buffer 类:
    
    Buffer.alloc(size[, fill[, encoding]]): 返回一个指定大小的 Buffer 实例,如果没有设置 fill,则默认填满 0
    Buffer.allocUnsafe(size): 返回一个指定大小的 Buffer 实例,但是它不会被初始化,所以它可能包含敏感的数据
    Buffer.allocUnsafeSlow(size)
    Buffer.from(array): 返回一个被 array 的值初始化的新的 Buffer 实例(传入的 array 的元素只能是数字,不然就会自动被 0 覆盖)
    Buffer.from(arrayBuffer[, byteOffset[, length]]): 返回一个新建的与给定的 ArrayBuffer 共享同一内存的 Buffer。
    Buffer.from(buffer): 复制传入的 Buffer 实例的数据,并返回一个新的 Buffer 实例
    Buffer.from(string[, encoding]): 返回一个被 string 的值初始化的新的 Buffer 实例
    // 创建一个长度为 10、且用 0 填充的 Buffer。
    // const buf1 = Buffer.alloc(10);
    // console.log(buf1)
    
    // const buf2 = Buffer.from("范顺");
    // console.log(buf2); // <Buffer e8 8c 83 e9 a1 ba>
    
    // const buf3 = Buffer.from([0xe8, 0x8c, 0x83, 0xe9, 0xa1, 0xba])
    // console.log(buf3)  // <Buffer e8 8c 83 e9 a1 ba>
    // console.log(buf3.toString()) //范顺
    
    // 一个汉字的为3个字节,会出现乱码的情况
    // 如果知道其编码格式,利用concat方法
    const buf4 = Buffer.from([0xe8, 0x8c, 0x83, 0xe9])
    const buf5 = Buffer.from([0xa1, 0xba])
    // console.log(buf4.toString())  // 范�
    // const newbuffer = Buffer.concat([buf4, buf5])
    // console.log(newbuffer.toString()) //范顺
    
    // 不用concat方法,node内置的这个模块会关联
    let { StringDecoder } = require("string_decoder") 
    let decoder = new StringDecoder()
    let res1 = decoder.write(buf4)
    let res2 = decoder.write(buf5)
    console.log(res1)
    console.log(res1 + res2)

    8.1 stream 流

  • 相关阅读:
    奇数阶魔方问题
    《DSP using MATLAB》示例9.3
    《DSP using MATLAB》示例9.2
    《DSP using MATLAB》示例9.1
    找个目标很重要
    《DSP using MATLAB》示例Example 8.30
    《DSP using MATLAB》示例Example 8.29
    《DSP using MATLAB》示例Example 8.28
    《DSP using MATLAB》示例Example 8.27
    《DSP using MATLAB》示例Example 8.26
  • 原文地址:https://www.cnblogs.com/shun1015/p/13183766.html
Copyright © 2011-2022 走看看