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 流

  • 相关阅读:
    讨论Android开发中的MVC设计思想
    关于AppFromwork集成XMPP开发的使用详解
    Android 强大的开发支持库组件AppFromwork框架详解
    Z语音概述from百度
    《软件形式规格说明语言-Z》 缪淮扣 学习笔记 10-12
    形式化规格技术和验证技术小结
    编译TS发生 Property or signature expected
    electron 启动错误
    java学习第三章4.运算
    java学习第三章3.基本类型的转换和直接量
  • 原文地址:https://www.cnblogs.com/shun1015/p/13183766.html
Copyright © 2011-2022 走看看