Node.js特点
- 异步事件驱动
- 非堵塞I/O
- 单线程(这里指主线程)
- 性能出众
基本语法
应用程序 参数1 参数2…
NVM命令
$ nvm ls #查看当前计算器安装过的nodejs列表
$ nvm install 版本号 #根据给定版本安装版本号
$ nvm use 版本号 #使用指定版本号的nodejs
$ nvm uninstall 版本号 #卸载已经安装过的版本
REPL测试环境
用于简易测试 Read Eval Print Loop 可以在终端直接写代码类似于控制台
$ node #进入REPL测试环境
$ .exit #推出REPL测试环境
终端命令
终端命令 后跟随的内容是 参数 每个参数使用空格隔开(本质上是应用程序)
$ pwd # 查看当前绝对路径
$ cd # 改变目录(进入)
$ ls # 查看目录
$ ls -l # 以列表形式查看目录
$ ls -a # 查看全部目录内容(包含隐藏信息)
$ ls -la # 以列表形式查看全部目录内容(包含隐藏信息)
路径和隐藏文件
相对路径
./ 从当前目录开始计算路径
绝对路径
windows操作系统中 绝对路径从盘符开始表示
c:/
d:/
e:/
类Unix操作系统(Unix Linux OSX) 中 绝对路径从根目录开始计算(没有盘符概念)
/ 表示根目录
~ 表示用户目录(home目录)
隐藏文件
类Unix操作系统中 隐藏文件/目录 是以点开头的 例如 .git
类Unix操作系统没有文件后缀概念(文件后缀由windows提出)
node 全局对象
global 对象
process 对象
process.argv属性
argv属性返回进程启动时的命令行参数的数组
第一个元素为 node程序
第二个元素为 当前执行文件的路径
剩余 元素为 额外的命令行参数
node 全局变量
__dirname 当前执行的目录名
console.log(__dirname); // 当前目录名 绝对路径
__filename 当前执行的文件名
console.log(__filename); // 当前文件名 绝对路径
node 回调函数
在nodejs中 所有的异步操作都是由回调函数完成的
nodejs的回调函数 是错误优先的
所有的回调函数 第一个参数都是 错误对象
// 判断奇偶数
function isOdd(num,callback) {
if(typeof num !='number'){
//如果参数错误 则调用回调函数并传入一个error对象
callback(new Error('传入的不是数字'))
}
if(num % 2){
callback(null,'是基数');
}else{
callback(null,'是偶数')
}
}
isOdd('5',function (err,reslut) { //回调函数的第一个参数必须是错误对象
if(err) throw err;//错误处理放在最前
console.log(reslut);
})
node 模块化规范
nodejs 采用的是模块化设计 采用 common.js 模块化规范
common.js规范特点
每个模块都拥有独立的作用域 代码在各自的模块中执行 不会照成全局污染
每个模块都是一个独立的文件
模块允许多次加载 但是只有在第一次加载时会执行一次
运行的结果会被缓存 如果再次加载 则从缓存中获得结果
模块加载顺序和代码书写顺序有关
模块使用
1.内置模块
2.自定义模块
3.第三方模块
模块导出和导入
module.export={导出内容} // 模块导出 (模块导出的是一个对象)
require(模块路径) // 模块导入 (导入自定义模块使用相对路径)
**注:**模块也可以导出Class类
path模块
path模块是内置模块,提供了一些实用工具,用于处理文件和目录的路径
//模块导入方式 const path = require('path');
path.join()
**作用:**拼接路径
语法: path.join(路径片段1,路径片段2…)
**返回值:**String
**注意:**会智能补齐斜杠或识别斜杠,…代表返回上一级
path.extname(path)
**作用:**获得文件后缀
语法: path.extname(path)
**返回值:**String
path.dirname(path)
**作用:**获得文件路径名(不包括文件)
语法: path.dirname(path)
**返回值:**String
path.basename(path[,ext])
**作用:**用于获得文件名
**语法: ** path.basename(path[,ext])
**参数: ** ext代表去除指定后缀名
**返回值:**String
fs模块
filesystem文件系统模块是内置模块 用于进行文件系统的操作
//模块导入方式const fs = require('fs');
fs.readFile(path [,opations] , callback)
**作用:**读取文件
语法: fs.readFile(path [,opations] , function(err,data){})
参数: path 文件路径
opations 字符集utf8
callback 回调函数(两个参数为err 和 data)
**注意:**为异步操作
fs.readFileSync(path [,opations] , callback)
**作用:**读取文件
语法: fs.readFile(path [,opations] , function(err,data){})
参数: path 文件路径
opations 字符集utf8
callback 回调函数(两个参数为err 和 data)
**注意:**为同步
querystring模块
querystring.parse(str[, sep[, eq[, options]]])
**作用:**将query字符串转成query对象
语法: querystring.parse(str[, sep[, eq[, options]]])
参数: sep 分隔符
eq 键值对连接符
querystring.stringify(obj[, sep[, eq[, options]]])
**作用:**将query对象转成query字符串
语法: querystring.parse(str[, sep[, eq[, options]]])
参数: sep 分隔符
eq 键值对连接符