一、安装Node.js
二、Node.js功能
- Node可以作为前端的一个工具去使用,通过NPM安装好用的工具。
- Node可以开发一些前端的工具。
- Node可以做服务器。
- 可以操作数据库并对外提供接口。
- 可以实现即时聊天程序。
- 可以制作一些好用的工具,比如编辑器。
三、Node.js的镜像配置
**配置淘宝镜像** 由于每次安装包需要走国外的网络,速度很慢,所以,淘宝帮我们在国内创建了一个NPM包托管网站,能够提升使用NPM装包时候的速度!
npm config set registry https://registry.npm.taobao.org --global
npm config set disturl https://npm.taobao.org/dist --global
下载工具包
- Node.js的包管理器npm,是全球最大开源库生态系统。
- 先使用
npm init -y
初始化一下包管理文件package.json
,将来所有安装的包,都会记录都这个文件中 - 使用
npm install 包名 --save / --save-dev
去安装包;其中,install
可以简写成i
: --save
可以简写成-S
;--save-dev
可以简写成-D
;npm uninstall 包名 --save / --save-dev
或者npm remove 包名 --save / --save-dev
;npm i webpack -g
,其中,-g
表示全局安装某些包,通过-g
安装的包都在C:\Users\用户名\AppData\Roaming\npm
下面。- 配置yarn的国内淘宝镜像
yarn config set registry https://registry.npm.taobao.org --global
yarn config set disturl https://npm.taobao.org/dist --global
四、使用Node执行js代码的两种方式
- 直接在命令函中输入
node
,进行Node的REPL
运行环境:
R:Read:读取用户输入的字符串内容
E:Evaluate:把用户输入的字符串,当做JS代码去解析执行
P:Print:打印输入Evaluate解析的结果
L:Loop:进入下一次循环
- 将Node代码写入到一个js文件中,然后通过
node 要执行的JS文件路径
去运行Node代码。
五、Node中的内置模块之fs
- fs模块是Node.js中的核心内置模块之一。
- 主要是用来读写文件的。
读取文件的数据
// fs模块是node在已安装完了的情况下,就会直接存在的,可以直接使用,但是得先引用一下
// 核心API(模块):Node官方,发现有一些模块使用非常频繁,于是就把这些使用狠频繁的模块,编译成了二进制文件
// 放到了Node的安装包中,如果安装了Node,那么里面的核心模块就可以直接使用
// require表示引入核心模块的方式
// 1. 引入模块
var fs = require('fs');
// 2. 调用方法读取文件
fs.readFile('./files/1.txt','utf-8',(err,data)=>{
if (err) return console.log(err.message);
console.log(data);
});
/**
* readFile方法的参数
* 1. 第一个参数是读取文件的路径
* 2. 编码的方式
* 3. 执行读取操作后的回调函数
*/
将数据写入文件
// 1. 引入核心模块
var fs = require('fs');
// 2. 调用写入数据的方法,写入数据
/**
* 写入方法有四个参数:
* 1. 参数一是要写入文件的路径
* 2. 参数二是要写入的数据
* 3. 参数三是可选的,是写入数据的编码方式,默认是UTF-8
* 4. 参数四是写入文件后的回调函数callback,有一个err参数
* 如果写入成功err是一个null,如果写入失败err是一个具体的对象
*
* 注意:
* 1. 如果写入的文件不存在,则会先创建此文件,再写入内容
* 2. 如果文件已经存在,新写入的内容会将原来的内容给覆盖掉
* 3. 如果想在后面追加内容的话,可以使用方法appendFile
*/
fs.writeFile('./files/2.txt','好好学习,天天向上',(err)=>{
if(err) throw err;
console.log('写入成功');
})
Other
// 引入包(fs 也是内置的)
const fs = require('fs');
const path = require('path');
// 使用包中的方法 读取文件
// fs.readFile(); 读文件 异步的
// fs.readFileSync(); 读文件 同步的 用的特别少
// let data = fs.readFileSync('./test01.txt', { encoding: 'utf-8' });
// console.log(data);
// let url = path.join(__dirname)
let url = path.join(__dirname,'test01.txt');
console.log(url);
fs.readFile(path.join(__dirname,'test01.txt'), {
encoding: 'utf-8' }, (err, data) => {
if (err) throw new Error(err.message);
console.log(data);
})
// console.log(__dirname);
// fs.writeFile('./1.txt','js真难学啊',(err,data)=>{
// console.log(err);
// })
六、箭头函数
- 箭头函数就是一个普通的匿名函数,解决了this指向的问题。
- 箭头函数内部的this,永远和外部作用域中this一致。
- 标准箭头函数的写法:()=>{}。
箭头函数的变体:
变体一
// 如果参数列表中,只有一个参数,可以省略小括号而直接写参数即可
x=>{
console.log(123)}
// 如果左侧没有任何参数,或者有多个参数,则小括号不能省略
变体二
// 如果函数中,只有一行代码,则函数体外部的{}可以省略,但是一般不省略
(a,b)=> console.log(123)
七、__dirname
- Node在执行读写文件的时候,路径是根据运行Node命令所在的文件夹路径进行查找文件的。
- 为了解决Node中fs模块的路径问题,Node中提供了一个__dirname方法。
- __dirname拿到的永远是这个当前正在执行的js文件所在的根目录,是一个绝对路劲,是从系统盘符开始的。
- 这个路径是动态可变的,根据执行文件的不同,路径也不同,但肯定是绝对路径,是以盘符开始的。
// 1. 引入模块
var fs = require('fs')
// 2. 调用方法读取文件
// Node在执行读写文件的时候,路径是根据运行Node命令所在的文件夹路径进行查找文件的.
// 为了解决Node中fs模块的路径问题, Node中提供了一个__dirname,获取的这是一个绝对路径
// __dirname获取的永远是当前的js文件所在的绝对路径
// fs.readFile('./files/2.txt','utf-8',(err,data)=>{
fs.readFile(__dirname+'/files/2.txt','utf-8',(err,data)=>{
if(err) throw err;
console.log(data);
})
console.log(__dirname);