Node基础

本文介绍了学习Node.js的原因,其具有非阻塞IO优势,适用于webpack等场景。阐述了Node.js特点,它移植V8引擎,用JavaScript语法。还介绍了内置对象分类,如全局对象process等,以及核心对象path。最后讲解fs文件模块,包括同步和异步IO操作,异步IO不阻塞后续代码执行。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

为什么学习Node?

  • IO优势
  • IO I—inputu 读取文件 o — outinput 写入文件
  • 对于文件读写,Node采用的是非阻塞IO
  • 传统IO在读写文件的时候CPU来处理,而代码执行也处于等待中,浪费性能
  • 非阻塞IO将读写操作交给CPU,而代码正常执行,减少等待浪费的性能
  • 应用场景
    • 实际应用: webpack/gulp/npm/http-server/json-server
    • 服务器中负责IO读写的中间层服务器(天猫中间层IO服务器)

NodeJS特点

  • 其移植了chrome V8 引擎,解析和执行代码机制和浏览器js相同
  • 其沿用了JavaScript语法、另外扩展了自己需要的功能
  • 总结: nodejs 是一个后端语言 , 其具备操作文件的能力, 可以具备服务器的创建和操作能力 node也是运行环境
    • 其语法是JavaScript语法,代码运行在chrome V8 引擎之上
    • 为什么是能够运行 js 因为js天然运行环境是浏览器;也就是在V8引擎上;因为node植入了v8引擎所以可以运行
基本使用
  • 官网上下载 node-v-xx.msi 傻瓜式的安装包 一路下一步,就ok
  • 检测是否安装成功 node -v
  • 运行程序 node ./xxx.js 当前目录下的xxx.js文件

内置对象介绍


分类

一个文件一个模块;一个模块一个对象

  • 全局对象: 何时何处都能访问 。 全局对象就是在系统中
  • 核心对象: 放在node.exe 中 向系统索要,引入即可使用
  • 自定义对象: 按路径引入即可 自己创建的模块;导出、导入
process(全局对象)
  • 每个系统的环境变量几乎都不一样,可以利用环境变量中的具体某个特定的值来区分不同的机器

  • process.env 是一个对象,我们可以通过其.属性名来获取具体的环境变量值

    • 设置一个特定的环境变量,以达到简单区分不同的机器,从而针对生产/开发环境运行不同的效果
  • process.argv 获取命令行参数

filename/dirname(全局对象)
  • __filename 获取当前运行文件的目录,绝对路径 (带文件名字)
  • __dirname 当前运行文件的绝对路径(不带文件名字,到当前目录为止)
nodejs实现规范
  • CommonJS : 规范JavaScript语言作为后端语言运行的标准
    • 具备什么能力,该怎么做 ,比如: 具备服务器的功能/ 可以操作文件 …
    • 模块应该怎么写: Module :
      • 1:依赖一个模块 require(‘模块名(id)’)
      • 2: 需要被模块依赖 module.exports = 给外部的数据
      • 3:一个文件是一个模块
核心对象path
  • 1:const path = require('path');
  • 路径 -> 在处理路径的时候很擅长,但是,其不负责判断路径是否存在文件
  • 拼接并修正路径 path.join(__dirname,'a','b'); 以当前目录/a/b
  • path.resovle('./xxx') 相对转绝对
  • 接收一个合法的路径字符串,转换成一个对象
    • let pathObj = path.parse(mypath);
  • 接收一个路径对象,转换成一个字符串路径
    • let str = path.format(pathObj);
{ root: 'C:\\',
  dir: 'C:\\Users\\孙悟空',
  base: '金箍棒.txt',   // 该属性可以用于修改文件名和后缀
  ext: '.txt',
  name: '金箍棒' }

  • 注意:path对象是方便我们操作路径的,对于获取来讲: parse解析成对象,format转换成字符串.join拼接并修正… 对于修改路径对象来讲,可以用base属性更改,不能用name,ext更改
模块
  • 弊端
    • 在js中要涉及到逻辑,还要在html中,为逻辑对象考虑引用顺序
    • 所有对象默认都是全局对象,命名冲突
    • commonjs规范
    • 一个文件就是一个模块
      • 导入用require(’./xxx.js’);
      • 导出用module.exports = xxx;
      • 在每一个模块内声明的变量属于模块内的作用域

fs文件模块

  • 文件读写
  • 其他功能
  • 扩展介绍
操作文件对象
  • IO

    • I :input输入
    • O:output 输出
    • 文件的操作就是IO
  • 复制文件的过程, I: 通过计算机,存储文件到剪切板

    • 粘贴到指定目录: O: 通过计算机,将剪切板上的数据,写出到 指定目录
  • node中有两种IO的操作

    • 同步IO

      • 一行代码(读文件)不执行完毕…后续代码不能执行
    • 异步IO (建议)

      • 一行代码(读写文件) 不执行完毕(正在读写中) … 后续代码也可以执行
    • 代码体验:

      • 读写文件

      • const fs = require('fs'); //必须这个名称
        //读 fs.readFile(路径,回调函数);
        //写 fs.writeFile(路径,数据,回调函数);
        
      • 总结: 异步的读/写文件 参数1:都是路径,可以相对可以绝对,最后一个参数都是回调函数,回调函数的参数中错误对象优先

  • 同步和异步IO的区别: 同步IO会阻塞后续代码执行,异步IO不会阻塞后续代码执行

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值