Node.js | 青训营笔记

91 阅读3分钟

这是我参与「第四届青训营 」笔记创作活动的的第26天

本文是面向有至少一门高级编程语言和前端三件套基础的同学的自学笔记,代码较少,重在理解

介绍

JS是解释型语言,运行时需要解释器,即JS引擎

实际应用中,JS需要的是运行环境,包含引擎的同时,多了一些API函数

浏览器是JS的前端运行环境,引擎对于不同浏览器可能不同,API为DOM,BOM和ajax

Node.js是JS的后端运行环境,引擎为Chrome V8,包括文件读取,网络连接等API

可以近似理解Node.js就是JS的解释器

学习node.js其实就是学习node内置的API和第三方API,其使用语法已经在JS部分学过了

Node环境安装

类比python解释器,直接在官网下载安装即可,之后需要用node运行js文件则使用node命令(node和npm被自动添加进环境变量中)

Node中也有和python一样自带的pip,即npm(node package manager),用于安装第三方API

使用node运行JS代码的方式和使用python解释器运行Python代码相同,可以使用vscode

使用npm安装软件包时,默认安装在当前文件目录下

JS通用语法

参照C语言类的使用

定义

Class 类名{

//构造器方法

Constructor(arg1,arg2)

This.arg1=arg1;

This.arg2=arg2:

//一般方法(注意和一般函数的区别在于没有了function关键字)

Fucname(){

}

}

类内可以直接写赋值语句 A=VALUE

相当于构造函数中的this.A=VALUE

实例化

Var a = new 类名(arg1,arg2)

继承

Class 子类名 extends 父类名{

Constructor(arg1,arg2,arg3){
super(arg1,arg2)//调用父类初始化函数

This.arg3=arg3

}

}
\

数组

遍历

数组的遍历:
array.forEach(item=>(){

函数体(item是迭代器)

})

字符串

分割

Str.split(‘mark’)

替换

Str.replace(‘origin’,’new’)

内置API

获取模块

使用一个变量接收模块,返回的是该模块类

const 变量名=require('模块名');

fs

用于读写文件的模块

读文件

fs.readFile('path','encoder',

function(err,data){

//回调函数内容

});

回调函数是读完文件之后执行的函数(可以为空,不可省略),可利用两个参数值:读取错误信号和读取内容(如果读取成功,则err为null)

Encoder可以省略

写文件

fs.writeFile('path','context','encoder'

function(err){

   //回调函数内容

});

Encoder可以省略

相对路径问题

注意执行.JS文件时,相对路径会被动态拼接为绝对路径,而拼接在相对路径之前的就是当前工作目录

因此就会出现问题:当工作目录不是文件所处目录时,路径拼接错误,导致文件操作错误

解决方法:

使用绝对路径(也存在弊端)

使用__dirname常量,代表目前文件所处目录路径,将其与相对路径拼接即可
如果使用字符串+拼接则需要去掉相对路径的.符号

Path

用于处理文件路径的模块

拼接

Path=path.Join(arg1,arg2,agr3…)

参数不限量,将多个path拼接到一起,和字符串拼接的区别在于后者将会解析path,不是单纯的连接

例如a/b/..c是不合法的路径,使用字符串拼接则会出错,但是用join方法拼接会自动解析并生成a/c路径

提取文件名

用于从一个路径中提取文件名(即最后的部分)

Filename=path.basename(url,’.fext’)

第二个参数的无有决定了filename是否包括扩展名

提取扩展名

Fext=path.extname(url)