目录
node.js基本介绍
Node.js是一个基于Chrome V8 引擎的JAvascript运行环境。
JavaScript程序如果需要运行执行,必须要有JavaScript的运行环境。
window等操作系统不支持运行JavaScript程序,浏览器中浏览器内核/引擎可以支持JavaScript运行。
node.js是将谷歌浏览器 V8版本的内核独立出来,生成一个JavaScript程序的运行环境。也就是JavaScript可以在浏览器中运行,也可以在node.js中运行。
node.js的注意点
node.js中运行JavaScript,
可以运行ECMAScript、DOM、BOM。
不可以运行I/O线程操作,input输入、output输出,简单的理解就是不能操作本地文件和数据库文件。
node.js的特点:天生就是异步操作程序,适合做并发处理。
接下来,我们就简单的了解一下Node.js。
node.js的模块化开发
node.js和普通的js程序开发模式不同,模仿后端程序的模块化开发方式,采用的commonJS开发模式。
node.js模块化开发的语法形式:
将每一个独立的功能定义成一个js文件,使用专门的 导出 导入 语法形式。导出当前模块化文件中的数据,导入加载模块化文件中的数据。
模块化开发的优点:
1、数据更加安全,只能操作导出的数据。
2、加载依赖更加清晰。
3、加载顺序更加明确。
模块化开发的形式
1、自定义模块
程序员自己定义开发的模块化文件,只需要定义模块化文件和导出语句,其他文件通过导入数据 加载模块化文件导出的数据。
2、内置模块
nodejs自己开发的模块化文件,只需要 通过 导入语句 导入 nodejs开发好的模块化文件。
3、第三方模块
其他程序员定义开发的模块化文件,先下载模块化文件,再通过 导入数据 导入 其他程序员开发的模块化文件。
自定义模块
在 模块化文件中 以 固定的语法形式 导出 数据/函数。
在 执行文件中 以 固定的语法形式 导入 模块化文件中 导出的 数据/函数。
导出语法
module.exports = {};
以对象的语法形式使用属性属性值,导出数据/函数。
导入语法
const 变量 = require('路径');
按照指定的路径导入加载模块化文件中;如果没有导出的数据,那么就不能导入加载操作。
接下来,就举个例子,看看这两个语法是怎么使用的,如下所示:
//demo1.js是一个模块化文件
//定义了数据,导出数据
int bool = true;
let int = 100;
let float = 123.456;
let str = '北京';
const arr = [1,2,3];
const obj = {name:'王昭没有君啊' , age:18 , sex:'男'};
function fun1(){'王昭没有君啊'};
function fun2(){'王昭君'};
//导出语法,以对象形式,导出指定的数据/函数
module.exports = {
bool: bool,
int: int,
//对象属性和属性值的简写语法
//如果对象的属性和存储属性值的变量名称相同,写一个就行了
flaot,
arr: arr,
obj: obj,
fun1: fun1,
fun2: fun2,
}
//demo2.js是一个执行文件
//导入 加载demo1.js模块化文件中 导出的数据
// 导入语法
const resObj = require('./demo1');
// 变量resObj 中以 对象形式 存储 模块化文件中导出的 数据 / 函数
// 以 对象的语法形式 操作
console.log(resObj.float);
console.log(resObj.obj);
resObj.fun1();
resObj.fun2();
内置模块
fs模块,读取设定外部文件内容的模块,是node.js一个内置模块,通过导入加载fs模块执行程序。
通过require('fs')导入fs模块,以对象的形式存储 node.js定义的fs模块导出的函数方法和数据。
关于内置模块,我们只需要通过require加载导入内置模块文件,调用使用函数方法。而且我们也只需要了解几个函数方法就行。如下所示:
readFile(参数1,参数2,参数3);
读取外部文件内容的函数方法,异步程序
参数1 读取外部文件的路径
参数2 读取外部文件的编码格式,默认是Buffer格式是两位十六进制数值形式
参数3 function(参数1 , 参数2){}
参数1 读取外部文件的报错信息
如果读取成功报错信息是null
参数2 读取外部文件的内容信息
如果读取失败,内容信息是undefined
writeFile(参数1,参数2,参数3)
写入外部文件内容的函数方法,异步程序
参数1 写入文件的路径
如果文件存在,向文件中写入内容
如果文件不存在,创建文件写入内容
参数2 写入文件的内容
必须是字符串格式
参数3 function(){}
readFileSync(参数1,参数2,参数3);
读取外部文件内容的函数方法,同步程序
参数1 读取外部文件的路径
参数2 读取外部文件的编码格式,默认是Buffer格式是两位十六进制数值形式
参数3 function(参数1 , 参数2){}
参数1 读取外部文件的报错信息
如果读取成功报错信息是null
参数2 读取外部文件的内容信息
如果读取失败,内容信息是undefined
writeFileSync(参数1,参数2,参数3)
写入外部文件内容的函数方法,异步程序
参数1 写入文件的路径
如果文件存在,向文件中写入内容
如果文件不存在,创建文件写入内容
参数2 写入文件的内容
必须是字符串格式
参数3 function(){}
内置模块只要通过require加载导入内置模块文件,调用使用函数方法就可以了。
//执行文件加载导入执行fs文件
const fs = require('fs');
第三方模块
node.js使用的是commentJS模块化开发模式。
使用 module.exports = {} 语法形式导出数据和函数
使用 const 变量 = require('路径') 导入数据和函数
第三方依赖包/模块,是其他程序员定义好的模块化文件,其中定义了 数据和函数,需要下载导入 之后,使用其他程序员定义好的 导出的内容。
第三方依赖包的下载,nodejs 给我们提供了专门的下载 依赖包的服务器,通过nodejs自带的下载工具 npm 来下载依赖包,npm默认使用的是美国服务器地址,一般会修改为 中国淘宝镜像地址。
设定程序 npm config set registry https://registry.npm.taobao.org
cnpm国内程序员编辑的中国国内下载方式,可以代替 npm 下载依赖包。
cnpm的配置下载 npm install -g cnpm --registry=https://registry.npm.taobao.org
配置 cnpm 之后,可以使用命令 cnpm i -g sass
但是 有些依赖包 只能使用 npm 下载,有些 依赖包 只能使用 cnpm 下载。