1.什么是node.js
js之所以可以在浏览器中使用,是因为不同浏览器自带着不同的javascript解析引擎,可以对js代码进行解析并执行
浏览器中的 JavaScript 运行环境(运行环境指的是代码正常运行所需的必要环境)
以谷歌浏览器为例,js的运行环境就是由v8解析引擎和一些内置的web API所组成;
总结:
V8 引擎负责解析和执行 JavaScript 代码。
内置 API 是由运行环境提供的特殊接口,只能在所属的运行环境中被调用。
Node.js是一个属于后端的运行环境,通过node可以使js进行后端的开发
Node.js 是一个基于 Chrome V8
引擎的 JavaScript
运行环境。属于后端的一个运行环境
终端的一些快捷指令
2.fs文件系统模块
导入模块有两种方法,import和require都可以
_ _dirname表示当前文件所处的目录(打开终端的默认路径名),可以有效的防止路径动态拼接的问题
3.path 路径模块
只有…/才有抵消路径的功能,会抵消前面的路径,./是没有的也不会
路径的最后的一部分一般返回的是文件名
http模块
服务器和普通电脑的区别在于,服务器上安装了 web 服务器软件
,例如:IIS、Apache
等。通过安装这些服务器软件,就能把一台普通的电脑变成一台 web 服务器。在 Node.js 中,我们不需要使用 IIS、Apache 等这些第三方 web 服务器软件。
因为我们可以基于 Node.js 提供的http 模块
,通过几行简单的代码,就能轻松的手写一个服务器软件,从而对外提供 web服务。
node.js是相当于用前端的语法写后端,因为js的语法跟java的类似
如果端口号是80,则可以省略不写(注意:是80端口号,不是8080)
req请求对象中储存的是与客户端有关的数据和属性
res响应对象中储存的是与服务器相关的属性和方法,可以向客户端响应指定内容
注意:setHeader()函数必须要在end()之前调用
服务器充当的角色就是一个字符串的搬运工
模块化
模块化是指解决一个复杂问题时,自顶向下逐层把系统划分成若干模块
的过程。对于整个系统来说,模块是可组合、分解和更换的单元。
类似于小时候玩的插卡游戏机,不同游戏的卡片就是模块,游戏主机就是系统
注意:在使用require加载用户自定义模块的时候,可以省略.js的后缀名;
使用 require() 方法加载其它模块时,会执行被加载模块中的代码。
好处:防止全局变量的污染
在每个 .js 自定义模块中都有一个 module 对象,它里面存储了和当前模块有关的信息
导入一个自定义模块的时候,默认得到的是一个空对象,因为模块具有作用域
导入自定义事件的时候实际上读取的是module.export对象,当我们在创建自定义模块的时候将需要暴露出去的属性和方法都挂载到module.export对象上
npm与包
包是基于内置模块封装出来的,提供了更高级、更方便的 API,极大的提高了开发效率。
包和内置模块之间的关系,类似于 jQuery 和 浏览器内置 API 之间的关系。
内置模块是由 Node.js 官方提供的模块,内置模块的加载优先级最高
Express
导入之前需要进行依赖安装
express.static()还可以对外开放访问我们指定目录下的html文件
nodemon会监听我们的代码,当有修改时,自动重启项目
app.use()函数的作用是用来注册全局中间件的
中间件(Middleware ),特指业务流程的中间处理环节。
中间件
除了错误级别的中间件,其他的中间件必须在路由之前配置
CORS 主要在服务器端进行配置。客户端浏览器无须做任何额外的配置,即可请求开启了 CORS 的接口。
通过cors实现跨域资源共享必须要配置一系列响应头,跟cors相关的响应头都是以Access-Control-Allow开头的
数据库
传统型数据库的数据组织结构,与 Excel 中数据的组织结构比较类似。