nodejs-day01
1.node到底是什么?
node就是一个js代码的运行环境。基于chrome v8引擎的运行环境。
2.环境变量path的作用?
告诉操作系统有一些目录,这些目录中有需要执行的程序。
当我们去执行某些程序的时候(比如说node),就先到操作系统的默认执行目录中查找这个程序
如果没有找到,就继续去path环境变量中查找是否有这个程序可以执行。
3.javascript的组成
在浏览器中,javascript是由ecmascript ,dom, bom 组成
在nodeJS环境中,javascript是由ecmascript , nodeJS提供的api 组成
在nodeJS中,无法使用window,document,无法使用dom,bom相关的操作。
能使用nodeJS提供的一些方法
在nodeJS中,也有一个全局对象,叫global,在global对象中有方法:
console.log()
setTimeout()
clearTimeout()
setInterval()
clearInterval()
4.模块化开发
在nodeJS中,认为一个js文件就是一个模块。
一个js文件我们可以去编写一个功能,如果项目需要很多功能,项目就需要很多的js文件。
js文件与js文件之间可能存在依赖关系,假设a.js文件需要使用b.js文件中的一个函数sayHi。
在a.js文件要如何去使用b.js文件中的内容?
在b.js文件中要如何告诉a.js文件哪些内容可以使用。
module.exports.sayHi = sayHi;
在a.js文件中需要去导入b.js文件的内容。
let b = require(’./b.js’);
在b.js文件中导出需要让别人使用的sayHi(可以是变量,也可以是函数)
5.导入和导出
在nodeJS中,使用exports进行导出操作,这个操作还有一个叫法,叫做暴露。
在nodeJS中,使用require(‘导入的文件路经与文件名’)进行导入操作。
如果一个模块没有到处任何成员,那么他被导入的时候是一个空对象。
练习:
创建一个sub.js文件,在这个文件中提供一个函数,如下
function sub(num1,num2){
return num1-num2;
}
在sub.js中,去导出sub函数,供别人使用
常见一个test.js文件,在文件中导入sub.js,并调用sub函数去计算100-99.
补充:
如果exports和module.exports同时存在,以module.exports为准。
只要你不混用,不会出现问题.
exports对象不要直接赋值成另外一个对象,比如:
exports = {
name:"jack"
}
如果真的需要这样做,必须使用module.exports来进行操作,比如:
module.exports = {
name:"rose"
}
建议:导出的使用直接使用module.exports.
6.系统模块的使用
A.如果想要使用nodeJS提供的系统模块,我们必须要使用require进行系统模块的引入。
const fs = require("fs");
//fs的reasdFile方法
//readFile的第一个参数是需要读取的文件路径
//readFile的第二个参数是需要读取的文件的编码格式
//readFile的第三个参数是一个回调函数,当文件读取结束之后,将会调用这个函数
fs.readFile("./test.txt","utf8",(err,doc)=>{
//回调函数的第一个形参是错误对象,如果读取的时候没有任何问题,错误对象将会为null
//如果发生了错误,err将会是一个错误对象,可以通过err.message获知发生了什么错误
//回调函数的第二个参数是读取的内容。
})
fs.writeFile("文件路径","需要写入的内容",(err)=>{
//只要err 为null ,说明写入就是成功
})
B.path的模块的使用:主要使用path模块进行路径的拼接
const path = require(“path”);
path.parse() 解析路径 获取路径信息
path.join(“路径1”,“路径2”…) 路径拼接
不同系统路径分隔符不统一
防止路径拼接少写斜杠问题
使用绝对路径进行路径拼接 __dirname(获取当前文件的根目录路经)
7.相对路径和绝对路径
在nodejs中,相对路径不再是相对于当前写代码的文件去查找内容,
而是相对于终端运行的目录进行相对查找。
因为这样,可能会导致执行目录不正确进而导致找不到需要执行的文件。
建议大家使用绝对路径的形式。
__dirname : 当前编写js代码的文件所在的绝对路径
var myPath = path.join(__dirname, ‘test.txt’);
7.第三方包(模块)的安装
系统提供的模块没有办法满足所有用户的需要,可以到 https://www.npmjs.com/ 查找符合我们需要的第三方包
下载第三方包满足编程需求。
可以使用npm( node package manager )工具来下载第三方包
npm install 第三方包的名字
如:npm install date-format
可以简化成:
npm i date-format
删除第三方包
npm uninstall date-format
可以进行全局安装,只需要添加-g参数即可全局安装:
npm i less -g
全局安装nrm
npm i nrm -g
查看nrm下载点
nrm ls
切换下载点(切换到淘宝镜像)
nrm use taobao
项目描述文件package.json
项目描述文件,记录当前项目信息,例如项目名称、版本、作者、github地址、当前项目依赖了哪些第三方
模块,目的是方便他人了解项目信息,下载项目依赖文件。
该文件一般被放置在项目的根目录下,使用npm init命令生成。
项目依赖
在项目的开发阶段和线上运营阶段,都需要依赖的第三方包,称为项目依赖。
使用 npm install 包名 命令下载的文件会默认被添加到package.json文件的dependencies字段中。
开发依赖
在项目的开发阶段需要依赖,线上运营阶段不需要依赖的第三方包,称为开发依赖。
使用 npm install 包名 --save-dev 命令将包添加到package.json文件的devDependencies字段中。
为什么记录依赖?
- Node.js中下载的第三方包文件拥有非常多的细碎文件,将项目通过移动硬盘传递给别人时传输速度非常慢.
- 使用git工具管理项目时,不希望git管理node_modules文件夹,也不会将其上传到github中。当其他人获取到项目时,可以在项目根目录下执行 npm install 命令,npm工具会自动去package.json文件中查
找项目依赖文件并下载. - 当项目上线以后,可以直接运行 npm install --production 下载项目依赖,避免下载项目开发依赖。