Node.js基础

刚接触到点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的运行环境

注意:

  1. 浏览器是js的前端运行环境

  2. node.js是js的后端运行环境

  3. node.js中无法调用DOM BOM等浏览器内置API

node.js可以做什么

node.js作为一个js的运行环境,仅仅提供了基础的功能和API,基于node.js提供的这些基础功能,很多强大的工具和框架如雨后春笋,层出不穷,所以学会了node.js可以让前端程序员胜任更多工作和岗位

  1. 基于express框架,可以快速构建web应用

  2. 基于elctron框架,可以构建跨平台的桌面应用

  3. 基于restify框架,可以快速构建API接口项目

  4. 读写和操作数据库,创建实用命令工具辅助前端开发

总之: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代码

  1. 打开终端 输入cd切换至文件所处位置 (确保打开文件的路径正确)

  2. 输入node要执行的js文件的路径

 

如何在终端中输入cd 转换路径再运行js文件呢?

打开.js文件目录,按住shift键右键打开powershell再直接输入node空格+文件名称+回车键

powershell和 windows+r区别在于老与新  尽量使用powershell

终端中的快捷键

在windows的powershell或cmd终端中,可以通过如下快捷键,来提高终端的操作效率

  1. 使用 ↑ 键,可以快速定位到上一次执行的命令

比如说在1.js文件中添加了一写感叹号,保存后无需再次输入文件名称,而是按↑ 键再敲回车

 

  1. 使用tab键,能够快速补全路径

比如文件名称改为12345.js后,无需在输入node空格123456,按完1后直接tab键能够补全文件全称

  1. 使用esc键能够快速清空当前已输入的命令

比如在powershell中输入文件名称输错,可以按下esc清空

  1. 输入cls命令,可以清空终端 (是清空全部内容)

fs文件系统模块

什么是fs 文件系统模块

fs模块是node.js官方提供的,用来操作文件的模块,他提供了一系列方法和属性,用满足用户对文件的操作需求

例如:

  • fs.readFile()方法,用来读取指定文件中的内容

  • fs.writeFile() 方法,用来向指定的文件中写入内容

如果要在js代码中,使用fs模块来操作文件,则需要使用如下的方法先导入它

cont fs = require('fs')

读取指定文件中内容

  1. 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 `

核心实现步骤

  1. 导入需要的js文件系统模块

  2. 使用fs.readFile()方法,读取素材目录下的成绩.txt文件

  3. 判断文件是否读取失败

  4. 文件读取成功后,处理成绩数据

  5. 将处理完成的成绩数据,调用fs.writeFile()方法,写入新文件成绩-ok.txt中

 

fs模块-路径动态拼接的问题

在使用fs模块操作文件时,如果提供的操作路径是以./ 或 ../开头的相对路径时,很容易出现路径动态拼接错误的问题

原因:代码在运行的时候,会以执行node 命令时所处的目录,动态拼接出被操作文件的完整路径

 

路径问题没完全解决,明天继续 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值