node是什么:
Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境。
- node应用场景:
Web服务API,比如RESTful API(本身没有太多的逻辑,只需要请求API,组织数据进行返回即可) 服务器渲染页面,提升速度 后端的 Web 服务,例如跨域、服务器端的请求
- 浏览器端的 JS 由三部分组成:
ECMAScript:定义了JavaScript语言的基本语法,它是JavaScript的核心。
DOM:文档对象模型,用于操作网页中的内容。
BOM:浏览器对象模型,用于操作浏览器窗口。
- Node端的 JS:
没有 BOM,因为服务器不需要
没有 DOM,因为没有浏览器窗口,也就没有文档对象模型
几乎包含了所有的 ES 规范
没有 window 对象,取而代之的是一个叫 global 的全局变量
在 Node 中禁止函数的 this 指向 global,所以执行 console.log(this) 的结果为 {}
commonJS是什么?
CommonJS是一种JavaScript模块化规范,用于定义 JavaScript 的模块化编程。
- commonJS的性质是什么?
它以同步的方式加载模块,使用 require() 函数加载模块,通过 module.exports 或 exports 对外暴露接口。
- commonJS有什么用?
它实现了模块的加载机制,使编写的代码可以复用,减少了重复劳动。
- commonJS属于什么技术栈?
CommonJS是Node.js服务端技术栈中的重要一环,它增强了Node.js的模块化能力,让Node.js在服务端发挥出更大的作用。
- module.exports是什么?
module.exports是CommonJS模块化规范中的一个重要特性。
- module.exports的性质是什么?
它的性质是一个对象,用来导出模块的接口,有助于模块的复用和重复利用。
- module.exports有什么用?
module.exports的用途是将模块内定义的方法和变量导出,从而让其他文件可以使用。
- module.exports属于什么技术栈?
它属于Node.js服务端技术栈中的重要一环,增强了Node.js的模块化能力,让Node.js在服务端发挥出更大的作用。
package 包:
Node.js 的包基本遵循 CommonJS 规范,包将一组相关的模块组合在一起,形成一组完整的工具。 包由包结构和包描述文件两个部分组成。
- 包结构:
用于组织包中的各种文件
- 包描述文件:
描述包的相关信息,以供外部读取分析, 包描述文件用于表达非代码相关的信息,它是一个JSON格式的文件:package.json
NPM 是什么:
全称:Node Package Manager,Node 的包管理器。
- NPM 与 Node 的关系:
安装 node 后自动安装 npm(npm是node官方出的包管理器,专门用于管理包)
- NPM 能干什么:
通过 NPM 可以对 Node 的包进行搜索、下载、安装、删除、上传。
- Yarn:
Yarn发布于2016年10月,截至当前2019年1月,gitHub上的Start数量为:34.3k,已经超过npm很多了, yarn使用本地缓存,有时甚至无需互联网连接就能安装本地已经缓存过的依赖项。
Node 中的 fs 文件系统:
在 Node 中有一个文件系统,所谓的文件系统,就是对计算机中的文件进行增删改查等操作。 在 NodeJs 中,给我们提供了一个模块,叫做fs模块(文件系统),专门用于操作文件。 fs模块是 Node 的核心模块,使用的时候,无需下载,直接引入。
数据库是什么:
数据库(DataBase)是按照数据结构来组织、存储和管理数据的仓库。
1.3 数据库的分类
1.3.1 关系型数据库(RDBS):
- 代表有:
MySQL、Oracle、DB2、SQL Server...
- 特点:
关系紧密,表结构
- 优点:
易于维护:都是使用表结构,格式一致; 使用方便:SQL 结构化查询通用,可用于复杂查询; 高级查询:可用于一个表以及多个表之间非常复杂的查询。
- 缺点:
读写性能比较差,尤其是海量数据的高效率读写; 有固定的表结构,字段不可随意更改,灵活度稍欠; 高并发读写需求,传统关系型数据库来说,硬盘I/O是一个很大的瓶颈。
1.3.2 非关系型数据库(NoSQL):
- 代表有:
MongoDB、Redis...
- 特点:
关系不紧密,文档存储,有键值对
- 优点:
格式灵活:存储数据的格式可以是key,value形式。 速度快:nosql可以内存作为载体,而关系型数据库只能使用硬盘; 易用:nosql数据库部署简单。
- 缺点:
不支持sql,学习和使用成本较高; 不支持事务; 复杂查询时语句过于繁琐。
MongoDB 简介:
MongoDB 是为 快速开发互联网 Web 应用而设计的数据库系统。 MongoDB 的设计目标是极简、灵活、作为Web应用栈的一部分。 MongoDB 的数据模型是面向文档的,所谓文档是一种类似于 JSON 的结构,简单理解 MongoDB 这个数据库中存的是各种各样的JSON。(BSON) MongoDB 图形化工具: Studio 3T Navicat
- MongoDB 原生 CRUD(增删改查):
Mongoose:
Mongoose是一个对象文档模型(ODM)库,它对Node原生的MongoDB模块进行了进一步的优化封装,并提供了更多的功能。
- Buffer 缓冲器:
Node.js技术栈:
Node.js:是一个基于Chrome V8引擎的JavaScript运行环境,使用事件驱动、非阻塞式I/O的模型,为JavaScript脚本设计的平台。
Express:是一个基于Node.js开发的Web应用开发框架。它提供了一系列强大的特性,例如路由、模板引擎、数据库抽象层等,帮助开发者更方便地完成各种Web应用。
MongoDB:是一个专为Web应用准备的NoSQL数据库。它提供了一系列强大的功能,例如文档存储、查询、聚合、复制等,帮助开发者更快地完成各种Web应用。
Socket.io:是一个基于Node.js的实时应用框架,通过使用Websocket技术,可以实现服务器端与客户端的即时通信。
Node项目的目录结构及功能-1:
bin:用来存放可执行文件,例如www(应用服务器入口文件)、npm(npm命令)等。
config:用来存放应用的配置文件,例如database.js(数据库连接配置文件)、routes.js(路由配置文件)等。
lib:存放应用的公共模块文件,例如logger.js(日志模块文件)、utils.js(工具模块文件)等。
public:存放静态资源文件,例如html、css、js、images等。
routes:用来存放路由文件,例如index.js(首页路由)、user.js(用户路由)等。
views:用来存放模板文件,例如index.ejs(首页模板)、user.ejs(用户模板)等。
models:存放数据模型文件,用于操作数据库。
app.js:应用的入口文件,用来加载所有的配置文件和模块文件,并启动应用服务器。
package.json:存放开发项目的信息,例如项目名称、版本号、作者、描述等,以及依赖的Node模块列表等。
Node.js中的模块主要包括:
HTTP模块:用于创建服务器和对HTTP请求和响应进行处理。
File System模块:用于读取文件和目录,创建文件和目录,修改文件和目录的权限,移动文件和目录,删除文件和目录等。
Path模块:用于解析文件路径和转换文件路径。
Stream模块:用于创建流对象,并对数据流进行操作。
Net模块:用于创建TCP/IP客户端和服务器程序。
DNS模块:用于解析域名。
Child Processes模块:用于创建子进程。
Events模块:用于监听和触发事件。
Crypto模块:用于加密和解密数据。
Buffer模块:用于处理二进制数据。
Node项目的目录结构及功能-2:
bin:存放可执行文件,用于启动应用服务器。
config:项目的配置文件,包括数据库连接配置、第三方接口配置等。
lib:存放项目的核心代码文件,包括路由文件、控制器文件等。
models:存放数据模型文件,用于操作数据库。
public:存放静态资源文件,包括css、js、图片等。
routes:存放路由文件,用于处理HTTP请求。
views:存放显示页面文件,一般是html文件。
app.js:应用的入口文件,用来加载所有的配置文件和模块文件,并启动应用服务器。
package.json:存放开发项目的信息,例如项目名称、版本号、作者、描述等,以及依赖的Node模块列表等。
liang14658fox