刚接触到点vue就来补node.js知识了,好久没记录学习了也是空白了挺久,在家学习更加考验自制力和毅力,最后一个暑假了加油把
两个问题引出node.js
为什么javascript可以在浏览器中被执行?
在浏览器中待执行的js代码有解析引擎,不同的浏览器使用不同的js解析引擎
chrome浏览器v8解析引擎性能最好
为什么js可以操作dom和bom?
每个浏览器都内置了DOM、BOM这样的API函数,因此浏览器中js才可以调用他们
浏览器中的js运行环境
运行环境是指代码正常运行所需的必要环境
Node.js简介
什么是node.js
node.js是基于chrome v8 引擎的js运行环境
简单来说就是js的运行环境
注意:
-
浏览器是js的前端运行环境
-
node.js是js的后端运行环境
-
node.js中无法调用DOM BOM等浏览器内置API
node.js可以做什么
node.js作为一个js的运行环境,仅仅提供了基础的功能和API,基于node.js提供的这些基础功能,很多强大的工具和框架如雨后春笋,层出不穷,所以学会了node.js可以让前端程序员胜任更多工作和岗位
-
基于express框架,可以快速构建web应用
-
基于elctron框架,可以构建跨平台的桌面应用
-
基于restify框架,可以快速构建API接口项目
-
读写和操作数据库,创建实用命令工具辅助前端开发
总之:node.js是大前端时代的“大宝剑”有了node.js这个超级buff的加持,前端程序员的行业竞争力会越来越强
node.js怎么学
浏览器中的js学习路径:
js基础语法+浏览器内置API(DOM+BOM)+第三方库(jQuery art-template等)
node.js学习路径:
js基础语法+node.js内置API模块(fa path http等)+第三方API模块(express myspl)
node.js环境的安装
如果希望通过Node.js来运行js代码,必须在计算机上安装node.js环境才行
安装包可以从node.js的官网首页直接下载,进入到node.js的官网首页点击绿色的按钮,下载所需的版本后,双击直接安装即可
区分LTS版本和current版本的不同
LTS为长期稳定版,对于追求稳定性的企业项目来说,推荐安装LTS版本的node.js
current为新特性尝鲜版,对于热衷于尝试新特性的用户来说,推荐安装current版本,但是current版本可能存在隐藏的bug或安全性漏洞,因此不推荐在企业级项目使用current版本
查看已安装的node.js的版本号
如果查不到则安装失败
打开终端,在终端输入命令node -v后按下回车键,即查看已安装的node.js版本号
windows系统快速打开终端的方式
使用快捷键(windows徽标键 + R)打开运行面板,输入cmd后直接回车,即可打开终端
什么是终端终端
(英文:teminal)是专门为开发人员设计的,用于实现人机交互的一种方式
作为一名合格的程序员,有必要标记一些常用的终端命令,来辅助更好的操作与使用计算机
在node.js环境中执行js代码
-
打开终端 输入cd切换至文件所处位置 (确保打开文件的路径正确)
-
输入node要执行的js文件的路径
如何在终端中输入cd 转换路径再运行js文件呢?
打开.js文件目录,按住shift键右键打开powershell再直接输入node空格+文件名称+回车键
powershell和 windows+r区别在于老与新 尽量使用powershell
终端中的快捷键
在windows的powershell或cmd终端中,可以通过如下快捷键,来提高终端的操作效率
-
使用 ↑ 键,可以快速定位到上一次执行的命令
比如说在1.js文件中添加了一写感叹号,保存后无需再次输入文件名称,而是按↑ 键再敲回车
-
使用tab键,能够快速补全路径
比如文件名称改为12345.js后,无需在输入node空格123456,按完1后直接tab键能够补全文件全称
-
使用esc键能够快速清空当前已输入的命令
比如在powershell中输入文件名称输错,可以按下esc清空
-
输入cls命令,可以清空终端 (是清空全部内容)
fs文件系统模块
什么是fs 文件系统模块
fs模块是node.js官方提供的,用来操作文件的模块,他提供了一系列方法和属性,用满足用户对文件的操作需求
例如:
-
fs.readFile()方法,用来读取指定文件中的内容
-
fs.writeFile() 方法,用来向指定的文件中写入内容
如果要在js代码中,使用fs模块来操作文件,则需要使用如下的方法先导入它
cont fs = require('fs')
读取指定文件中内容
-
fs.readFile() 语法格式
fs.readFile(path[, option], callback)
中括号是可选参数
-
参数1.必须按参数 字符串,表示文件的路径
-
参数2可选参数,表示以什么编码格式来读取文件
-
参数3:必选参数,文件读取完成后,通过回调函数拿到读取的结果
2.fs.readFile() 的示例代码
以utf8的编码格式,读取指定文件的内容,并打印err和dataStr 值
const fs = require('fs')
fs.readFile('./flie/11/txt', 'utf8', function(err, dataStr) {
console.log(err)
console.log('-----')
console.log(dataStr)
})
如果读取错误则
判断文件是否读取成功
可以判断err对象是否为null 从而知晓文件读取的结果:
方法:
const { log } = require('console')
const fs = require('fs')
fs.readFile('./files/1.txt', 'utf8', function(err, dataStr) {
if(err) {
return console.log('读取文件失败!' + err.message);
}
console.log('读取文件成功!' + dataStr);
})
向指定的文件中写入内容
fs.writeFile() 的语法格式
fs.writeFile(file, data[,option], callback)
-
参数1:必选参数,需要指定一个文件路径的字符串,表示文件的存放路径
-
参数2:必选参数,表示要写入的内容
-
参数2可选参数,表示以什么编码格式来读取文件 默认utf8
-
参数4:必选参数,文件写入完成后的回调函数
判断文件是否写入成功
// 1.导入 fs 文件系统模块
const fs = require('fs')
// 2.调用 fs.writeFile() 方法 写入文件的内容
// 参数1 表示文件存放路径
// 参数2 要写入的内容
// 参数3 回调函数
fs.writeFile('./files/3.txt', 'ok123', function(err) {
if(err) {
return console.log('文件写入失败!' + err.message);
}
console.log('文件写入成功!');
// 2.1 如果文件写入成功则 err的值等于null
// 2.2如果文件写入失败 err的值 是一个错误对象
// console.log(err);
})
如果写入成功则files文件夹中多一个3.txt文件,其内容是ok123
同样写入错误 则弹出错误的对象
练习-考试成绩整理
使用fs文件系统模块,将素材目录下成绩.txt文件中的考试数据,整理到成绩-ok.txt文件中
整理前,成绩.txt文件中的数据格式如下
小红=99 小白=100 小黄=70 小黑=66 小绿=88
整理完成之后,希望得到的成绩-ok.txt文件中的数据格式如下
1.小红:99
2.小白:100
3.小黄:70
4.小黑:66
5.小绿:88 `
核心实现步骤
-
导入需要的js文件系统模块
-
使用fs.readFile()方法,读取素材目录下的成绩.txt文件
-
判断文件是否读取失败
-
文件读取成功后,处理成绩数据
-
将处理完成的成绩数据,调用fs.writeFile()方法,写入新文件成绩-ok.txt中
fs模块-路径动态拼接的问题
在使用fs模块操作文件时,如果提供的操作路径是以./ 或 ../开头的相对路径时,很容易出现路径动态拼接错误的问题
原因:代码在运行的时候,会以执行node 命令时所处的目录,动态拼接出被操作文件的完整路径
路径问题没完全解决,明天继续