nodejs
介绍
node.js文档入门项目
Node.js 和 JavaScript 边界
建议在深入研究 Node.js 之前,对 JavaScript 的主要概念有所了解:
- 词汇结构
- 表达式
- 数据类型
- 变量
- 函数
- this
- 箭头函数
- 循环
- 作用域
- 数组
- 模板字面量
- 分号
- 严格模式
- ECMAScript 6、2016、2017
具备这些概念,无论是在浏览器还是在 Node.js 中,都会成为一名熟练的 JavaScript 开发者。
以下概念也是理解异步编程的关键,异步编程是 Node.js 的基本组成部分:
- 异步编程与回调
- 定时器
- Promise
- Async 与 Await
- 闭包
- 事件循环
node.js 和浏览器区别
- 文件系统
- 模块 node 使用require(),浏览器使用import
- node 没有document、window等对象
- 其他区别
V8JS 引擎
- 具体查看 v8官方网站
入门教程
基本情况
-
从命令行运行node.js
node app.js
-
如何从node.js 程序退出
- control + C
- process.exit()
-
读取环境变量
const env = process.env.NODE_ENV
-
日志输出 查看
-
console.log()
-
console.time()
-
console.timeEnd() // 函数运行时间
-
console.trace() // 查看堆栈
-
使用chalk库,可以修改输出字体样式
npm install chalk
const chalk = require('chalk') console.log(chalk.green('你好'));
-
进度条
npm install progress
-
-
输入 查看
- 使用readline
- 使用inquirer库
npm install inquirer
-
export 和module.exports之间的区别?
export公开了它指向的对象的属性,module.exports公开了它指向的对象
-
npm 包管理
- 安装 npm install
-
–save 安装并添加条目到 package.json 文件的 dependencies。
-
–save-dev 安装并添加条目到 package.json 文件的 devDependencies。
-
-g 为全局安装
通过 npm root -g 查看全局安装的包地址
区别主要是,devDependencies 通常是开发的工具(例如测试的库),而 dependencies 则是与生产环境中的应用程序相关。
-
- 更新 npm update
- 版本控制
- 运行任务 npm run
- 安装 npm install
-
package.json指南
- version 表明了当前的版本。
- name 设置了应用程序/软件包的名称。
- description 是应用程序/软件包的简短描述。
- main 设置了应用程序的入口点。
- private 如果设置为 true,则可以防止应用程序/软件包被意外地发布到 npm。
- scripts 定义了一组可以运行的 node 脚本。
- dependencies 设置了作为依赖安装的 npm 软件包的列表。
- devDependencies 设置了作为开发依赖安装的 npm 软件包的列表。
- engines 设置了此软件包/应用程序在哪个版本的 Node.js 上运行。
- browserslist 用于告知要支持哪些浏览器(及其版本)。
-
查看 npm 包安装的版本
npm list
-
将所有node.js的依赖包安装更新到最新版本
npm install -g npm-check-updates ncu -u npm update
-
卸载npm软件包
npm uninstall <package-name> npm uninstall -g <package-name>
- 查看全局安装的软件包 npm list -g --depth 0
node.js 事件循环
调用堆栈是一个 LIFO 队列(后进先出)。
事件循环不断地检查调用堆栈,以查看是否需要运行任何函数。
当执行时,它会将找到的所有函数调用添加到调用堆栈中,并按顺序执行每个函数。
-
消息队列
-
作业队列 查看
消息队列将你排在队列的后面(在所有其他人的后面),你不得不等待你的回合,而工作队列则是快速通道票,这样你就可以在完成上一次乘车后立即乘坐另一趟车。
JS异步编程和回调
事件触发器
- 使用events模块处理事件 查看
const EventEmitter = require('events') const eventEmitter = new EventEmitter()
搭建HTTP服务器
- 引入http模块 查看demo
使用node.js发送Http请求
文件相关
-
使用文件描述符
fs.open()
查看 -
文件属性
fs.stat()
查看 -
文件路径
path
查看 -
读取文件
fs.readFile()
查看 -
写入文件
fs.writeFile() fs.appendFile()
查看 -
使用文件夹 查看
- 检查权限
fs.access()
- 检查文件夹是否存在
fs.existsSync()
- 创建文件夹
fs.mkdir()
- 读取文件夹
fs.readdir()
- 重命名文件夹
fs.rename()
- 删除文件夹
fs.rmdir()
因删除包含内容的文件夹回比较复杂,所以一般使用fs-extra
库 fs.remove()npm install fs-extra
- 检查权限
-
流 stream
- 创建可读流
const Stream = require('stream') const readableStream = new Stream.Readable({ read() {} })
- 创建可写流
const Stream = require('stream') writableStream._write = (chunk, encoding, next) => { console.log(chunk.toString()) next() } process.stdin.pipe(writableStream)
- 创建可读流
-
记录对象
console.log(JSON.stringify(obj, null, 2))
以上node基础课程,开始中间件