复习nodsjs基础

83 阅读6分钟

1.Node.js是什么

官方概念:Node.js® 是一个基于 Chrome V8 引擎 的 JavaScript 运行时

  • 上面的概念中有两个特殊的名词,解释如下
  1. chrome V8引擎: chrome浏览器用来解析和执行js代码的工具
  2. 运行时:理解为一个容器,用来运行代码的环境;
  3. 所以,对Node.js更通俗的解释是:一个用chrome浏览器V8引擎来跑js代码的环境

2.Nodejs的理解

  • Node全名是Node.js(也叫Node, nodejs, node.js),但它不是一个js文件,而是一个软件
  • Node.js是一个基于Chrome V8引擎的javascript的运行环境,在这个环境中可以执行js代码
  • Node.js提供了大量的内置模块及丰富的第三方模块,能够让我们完成文件读写、Web服务器、操作数据库等功能

3.Node环境下运行js代码

let a = 1;
console.info(a + 2);
/*打开终端输入命令 node 要执行的文件的路径 
注意:node的后面要有一个空格*/
//终端命令执行示例
node index.js 
node 01.js    // 01.js就是当前目录下
node a/01.js  // 01.js在目录a下面的文件名
//node.js就是一个运行环境,可以跑js代码

4.常用cmd终端命令总结

node 空格 某个js文件              调用 node 程序,运行某个js文件

clear  或者  cls                 清空界面

ls/dir                           查看列表(list)

cd 目录名                        进入到目录中去

cd ..                           返回上一级目录

cd \		                直接回到根目录
                   
Ctrl+C                          停止 Node 程序

输入部分文件名后按下 Tab 键      补全文件名 或 目录名, 多次tab会进行切换

↑ ↓ 上下箭头         	        切换历史输入

5.Node.js和浏览器端的区别

1.在浏览器端

js由三部分组成:ECMAScript + BOM + DOM

2.在nodejs端

ECMAScript + 内置模块(fs, http, path,.....)。在nodejs中是没有BOM、DOM、window,但使用ECMAScript是通用的

  • 相同点:
  1. 都是可以运行js代码的容器,更严格一点说:都可以运行ECMAScript
  2. 要下载按照才能使用
  • 不同点:
  1. 各有不同的API:nodejs运行js时,不能写DOM,BOM , 也不能使用window对象

  2. Node.js环境可以实现后端的功能

  3. 浏览器环境可以去实现前端的功能

  4. 浏览器环境可以去实现前端的功能

6.nodejs中的模块分类

每个模块都是一个独立的文件。每个模块都可以完成特定的功能,我们需要时就去引入它们,并调用。

  1. 核心模块
-  就是nodejs自带的模块,在安装完nodejs之后,就可以任意使用
-   相当于学习js时使用的Array对象
-   源代码 <https://github.com/nodejs/node/tree/master/lib>

2. 自定义模块 - 程序员自己写的模块 相当于我们在学习js时的自定义函数。 3. 第三方模块 其他程序员写好的模块。

7.核心模块

  • 核心模块就是Node内置的模块,需要通过唯一的标示名称来进行获取
  • 每一个核心模块基本上都是暴露了一个对象,里面包含一些方法供我们使用
  • 一般在加载核心模块的时候,变量(或常量)的起名最好就和核心模块的标识名同名
  • 例如:const fs = require('fs'),const path = require('path')

8. fs-readFileSync-文件读取

//1.引入fs模块
const fs = require("fs")
//2.调用api
let rs = fs.readFileSync('文件路径',"utf8")
// rs 就是读出来的内容
console.log(rs)
//注意:api的名字结尾有Sync (async是异步的, sync表示同步的)

捕获同步格式中的错误对象

//如果读成功,则会获取读出来的数据,如果失败了,则会中断后续所有的代码执行
//1.引入fs
const fs = require('fs')
//2.调用api
let rs = fs.readFileSync('./01.jsxxxxxx', 'utf8')//没有01.jsxxxxx这个文件
console.log(rs); 
console.log(1); //这样报错后面的代码不会继续执行
//终端会报错显示 会报错:Error: ENOENT: no such file or directory, open './01.jsxxxxxx'
//意思为:错误:ENOENT:没有这样的文件或目录,打开”。/ 01. jsxxxxxx”

解决方案:用try. catch 结构

try {
  // 可能会有错误的代码
  const fs = require('fs')
  let rs = fs.readFileSync('./01.jsxxxxxx', 'utf8')
  console.log(rs);
} catch (err) {
  // 如果try内的代码有错误,就会进入catch,并把错误传进来
  console.log('有错误发生');
  console.log(err);
}
//这样写终端会显示有错误发生,然后会继续执行后面的代码
console.log(1)

9. fs-writeFileSync-文件写入

  • 功能:向指定文件中写入字符串,如果没有该文件则尝试创建该文件
  • 注意:它是覆盖写入,会把文件中的内容全部删除,再填入新的内容
fs.writeFileSync(pathName, content, option);
// 参数1: 要写入的文件路径 --- 相对路径和绝对路径均可,推荐使用绝对路径
// 参数2: 要写入文件的内容
// 参数3: 配置项,设置写入的字符集,默认utf-8

写入JSON数据

const fs = require('fs')
const data = [{name: '小王', age: 20}]
fs.writeFileSync('./a.txt', data)
//这样写会报错:data不是一个字符串或者是Buffer

解决方法 JSON.stringify(常量名)将里面的内容转换为字符串

const fs = require('fs')
const data = [{name: '小王', age: 20}]
fs.writeFileSync('./a.txt', JSON.stringify(data))

10. 路径问题-使用绝对路径

  • 绝对路径: 从磁盘根目录开始到指定文件的路径。
  • 相对路径:是以某个文件的位置为起点,相对于这个位置来找另一个文件。

nodejs中提供了两个全局变量来获取绝对路径

  • __filename:获取当前被执行的文件的绝对路径
  • __dirname:获取当前被执行的文件的文件夹所处的绝对路径

全局变量的含义是

  • 变量:它们的值是变化的。在不同的文件中值就不同,因为文件的路径也不同嘛。
  • 全局:在任意地方都可以直接使用。

11. path模块

  • 作用是用来处理路径问题:拼接,分析,取后缀名等等 常用的api
  • path.basename() :此方法返回 path 的最后一部分。一般可用来获取路径中的文件名。
  • path.join() :路径拼接。
  • path.parse(pathurl) :把一个路径转成一个对象 注意:path模块并不考虑其中地址是否真的存在,只是单纯调用方法,获取结果。

12. 小结

  1. nodejs 是什么?
a.是一个基于chrome v8引擎的javascript 运行时
b,它是不是一个新语言,它只是一个环境,用来运行js代码

2. 与浏览器的区别在?

a,nodejs中没有dom,bom, window, 只有 ECMAScript

3. 我们学它是图什么?

a,它是用来写后端功能,帮助我们了解后端程序员是如何工作;

b,提升竞争力,会后端优先!

c,后边学习前端框架的基础

4. 学什么?

a,模块系统(核心模块 fs, path,自定义模块,第三方模块)

b,npm 操作

5. fs: 用来做文件(文件夹)操作:读\写\删除\创建.......

  1. path: 做路径相关的操作 path.join()

  2. dirname, filename : 在nodejs中,表示全局变量。用来获取绝对路径。

    a,__dirname : 获取当前被执行的文件所在的文件夹的绝对路径

    b,__filename: 获取当前被执行的文件的绝对路径