node基础

JavaScript由三部分组成,ECMAScript,DOM,BOM。
Node.js是由ECMAScript及Node环境提供的一些附加APl组成的,包括文件、网络、路径等等一些更加强大的API。


node.js模块化开发

JavaScript在使用时存在两大问题,文件依赖命名冲突。模块化开发能解决这个问题。

  • 文件依赖不明确,文件的依赖关系是由引入先后顺序决定的,复用的时候完全不知道啊,文件依赖于哪个文件,分析繁琐复杂。

  • 命名冲突,依赖关系中,a文件和b文件如果存在命名冲突,会覆盖,很麻烦。

一个功能就是一个模块,多个模块可以组成完整应用,抽离一个模块不会影响其他功能的运行。
在这里插入图片描述

Node.js中模块化开发规范

  • Node.js规定一个JavaScript文件就是一个模块,模块内部定义的变量和函数默认情况下在外部无法得到。
  • 模块内部可以使用exports对象进行成员导出,使用require方法导入其他模块。
    在这里插入图片描述
	// a.js文件
	// 定义变量
	var fa = 'hello node.js';
	// 定义函数
	const fn = name => `您好,${name}`;
	// 向模块外部导出数据
	exports.fa = fa;
	exports.fn = fn;
	
	// b.js文件
	// 在b.js模块中导入a模块
	let a = require('./a.js');
	// 调用输出a.js中的变量
	console.log(a.fa);
	// 调用输出a.js中的函数,并输出返回值
	console.log(a.fn('xxx'));

模块导入的时候,后缀(.js)是可以省略的。

模块成员导出的另一种方式:

把模块成员作为module.exports对象的属性值就可以了

	module.exports.fa = fa;
	module.exports.fn = fn;

⭐exports是module.exports的别名(地址引用关系),导出对象最终以module.exports为准。详解:
在这里插入图片描述
module.exportsexports指向的都是同一个对象,这两句是等价的。
在这里插入图片描述
然后我给module.exports重定义一个对象,那么就指向了另一个对象,哪怕再给exports重定义一个对象,结果也是以module.exports为准。

系统模块

Node运行环境提供的APl.因为这些API都是以模块化的方式进行开发的,所以我们又称Node运行环境提供的API为系统模块
比如:文件模块(fs)(file system 文件操作系统):读取文件、写入文件、创建文件夹

	const fs = require('fs');	//使用之前导入模块
  1. 读取文件内容:
	fs.readFile('文件路径/文件名'[,'文件编码'],callback);
	
	[] 是可选参数
	callback	这里是回调函数

案例:

	const fs = require('fs');
	fs.readFile('../js/a.js','utf-8',(err,doc)=>{
	  if(err == null){
	    console.log(doc);
	  }
	});
  1. 文件写入内容操作
	fs.writeFile('文件路径/文件名','数据',callback);
	
	callback	这里是回调函数

案例:

	const fs = require('fs');
	fs.writeFile('../js/a.js','//写入',(err,doc)=>{
	  if(err != null){
	    console.log(err);
	    return;
	  }
	  console.log('文件写入成功!');
	});

系统模块path

路径操作

为什么要进行路径拼接?
不同操作系统的路径分隔符不统一

  • /public/uploads/avatar
  • Windows上是 \ /
  • Linux上是 /
	path.join('路径','路径',...);

案例:

	const path = require('path');
	let lujing = path.join('shopping','img','logo.png');
	console.log(lujing);  //shopping\img\logo.png
相对路径VS绝对路径
  • 大多数情况下使用绝对路径,因为相对路径有时候相对的是命令行工具的当前工作目录,并不是代码的相对路径,所以使用的时候用绝对路径
  • 在读取文件或者设置文件路径时都会选择绝对路径
  • 使__dirname获取当前文件所在的绝对路径

案例:
拼接路径完成完整的绝对路径进行文件选取,文件操作。

	const fs = require('fs');
	const path = require('path');
	fs.readFile(path.join(__dirname,'a.js'),'utf-8',(err,doc)=>{
	  if(err == null){
	    console.log(err);
	    console.log(doc);
	  }
	});

第三方模块

别人写好的、具有特定功能的、我们能直接使用的模块即第三方模块,由于第三方模块通常都是由多个文件组成并且被放置在一个文件夹中,所以又名

第三方模块有两种存在形式:

  • 以js文件的形式存在,提供实现项目具体功能的API接口。
  • 以命令行工具形式存在,辅助项目开发
获取第三方模块

npmjs.com 第三方模块的储存和分发仓库
npm(node package manager):node的第三方模块管理工具

安装命令:npm install 模块名称
卸载命令:npm uninstall 模块名称
全局安装:npm install -g 模块名称

安装分为本地安装和全局安装,本地安装只有当前项目可用,全局安装将模块安装到公共目录,所有项目都可以使用,一般来说:
命令行工具:全局安装
库文件:本地安装

修改全局模块默认路径(先新建两个文件夹):

	npm config set prefix "D:\Program Files\node12\node_gobal"
	npm config set cache "D:\Program Files\node12\node_cache"

剩下的操作:点这里

下载的时候默认下载到命令当前执行的目录下,所以尽量在安装目录下执行命令。
获取过程中黄色为警告可以无视,红色为报错。

nodemon(第三方模块)

nodemon是一个命令行工具,用以辅助项目开发。
在Node.js中,每次修改文件都要在命令行工具中重新执行该文件,非常繁琐。
nodemon可以修改文件后,就会执行该文件。

使用步骤

  1. 使用npminstall nodemon-g下载它
  2. 在命令行工具中用nodemon命令替代node命令执行文件

如果安装后执行报错,添加环境变量,变量目录包含nodemon.cmd,重启cmd即可。

nrm(第三方模块)

nrm(npm registry manager):npm下载地址切换工具
npm默认的下载地址在国外,国内下载速度慢

国外:npmjs.com
国内:npm.taobao.org

切回国内源

  1. 安装 npm install -g nrm
  2. 查询可用地址列表 nrm ls
  3. 切换地址 nrm use taobao
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值