
●什么是 node?
○官方原话:■一个基于 Chrome V8 解析引擎的 JavaScript 运行时环境○换句话说:■从前有一个人, 把浏览器内的 JS 解析引擎拿出来, 和其它内容进行了一个组装■变成了一个新的东西, 并起了个名字叫做: 'NodeJS'●前端 JS 和 NodeJS 的区别 1
○前端 JS
■当 JS 被引入到 HTML 文件中, 放在浏览器中执行的时候 (JS 的组成: BOM + DOM + ECMAScript)■他在这个时候, 才会有所谓的 BOM 和 DOM●BOM: 浏览器对象模型 浏览器提供给我们的●DOM: 文档对象模型 HTML 提供给我们的○NodeJS
■把 JS 从 HTML 文件中拿出来, 放在 电脑系统中直接运行■此时没有所谓的 DOM 和 BOM■但是因为是在 电脑系统中运行●可以操作 文件/文件夹 (I/O; input/output)●可以操作电脑系统●可以操作数据库●...
●前端 JS 和 NodeJS 的区别 2○前端 JS■运行时可以操作模块发开发(ES6 模块化), 也可以采用非模块开发■为什么可以采用非模块化■因为我们把所有的 JS 文件, 引入到某一个 HTML 文件中, 去使用
○ NodeJS○运行时 必须采用 模块化开发○因为他是直接执行 JS 文件, 没有一个统一的 html 文件去引入所有的 JS 文件○使用的 模块化语法 是 CommonJS●JS 代码种是没有错误的○关键是我们要把 JS 运行在那个环境(要把代码运行在哪里)○假设 将来需要把这个 JS 文件放在前端使用(引入到 HTML, 并运行在浏览器中)■那么可以在 JS 中书写 BOM 和 DOM 相关的东西○ 假设 将来需要把这个 JS 文件放在 NODEJS 中使用■那么就不能在 JS 中书写 DOM 和 BOM 相关的 东西■但是 此时可以书写 操作 文件/文件夹相关的代码●NodeJS 的作用○按照 CommonJS 模块化开发语法的规范进行书写代码○能够 使用 JS 这个语言 进行后端代码的开发
node 初体验●如何利用 node 执行 JS 代码○因为 node 是直接在电脑操作系统上进行 JS 代码的执行○其实就是 在 小黑窗 内直接执行 JS 文件○小黑窗内执行 JS 代码
■方式 1:●打开 小黑窗, 目录无所谓●输入命令: node 按下回车●会进入 JS 代码编辑模式○此时是不能执行 cmd 命令的, 只能书写 JS 代码●按下 ctrl + c 退出当前环境●缺点: 书写的代码无法保存
■方式 2:●把你要执行的 JS 代码 书写在一个 .js 文件内●打开命令行, 切换目录到 JS 文件所在的目录●输入指令: node 文件名
node 的模块化开发●node 必须模块化开发●node 自带的所有内容都是以模块的形式出现的● 模块化语法○导出■每一个 JS 文件天生自带一个变量叫做 module■表示的是当前自己这个模块的所有信息■ 每一个文件默认导出一个对象■语法:●如果你想向默认导出的对象内添加成员●module.exports.属性名 = 属性值●exports.属性名 = 属性值●node 的 每一个 JS 文件, 内部天生自带一个 变量 叫做 exports● 变量内部存放的是 指向 module.exports 这个对象的 地址■如果你想修改这个默认导出的内容●module.exports = 值○导入■ 每一个 JS 文件天生自带一个方法叫做 require()■语法: require('地址')●注意: 如果地址书写的时候, 文件后缀是 .js, 那么可以省略后缀不写■返回值: 该文件的 module.exports (该文件向外暴露的内容)●模块分类○自定义模块■自己写的 JS 文件○内置模块■node 给我们提供的模块, 直接引入使用即可○第三方模块■由其他人写好上传到某一个仓库内(npm)■我们去这个仓库内(npm)下载到本地, 然后引入使用●node 内置模块 fsnode 给出的内置模块, 专门用来操作 文件/文件夹
1.异步读取文件a.语法: fs.readFile(文件路径, 配置参数, 回调函数)b.参数:i.文件路径: 必填ii.配置参数: 不写默认是 buffer 可以手动配置为 utf-8iii.回调函数: 必填, 接受两个参数, 第一个为报错信息, 第二个为正确读取到的文件的内容(字符串格式的)
2,同步读取文件
3.异步写入文件a.语法: fs.writeFile(文件地址, 写入内容, 回调函数)b.参数:i.文件地址:1.这个文件, 直接讲内容写入到指定文件内2.没有这个文件, 创建一个出来, 然后写入到指定文件内ii.写入内容:1.符串格式的内容, 将这段文本直接写入到指定文件中, 并覆盖这个文件之前的所有内容iii.回调函数:1.必写, 哪怕这个函数什么也不做, 也必须要写
4,同步写入文件
●node 内置模块 pathnode 自带的模块, 专门用于和路径相关的操作
1.绝对路径a.C:/a/b/c/d.html2.相对路径a. ./d.htmlb. ../c/d.html
●组装一个相对路径 path.join(路径片段 1, 路径片段 2, 路径片段 3)
●组装一个绝对路径 path.resolve(路径片段 1, 路径片段 2, 路径片段 3)
●组装一个解析路径 path.parse(路径)
●node 内置模块 urlnode 自带的模块, 专门用来操作 url 地址的
●url.parse('地址', 是否深度解析);○地址: 必填○是否深度解析■ 默认是 false, 不深度解析, 可以手动配置为 true■深度解析其实就是把 对象中的 query 解析为 对象格式
●node 内置模块 httpnode 自带的一个模块, 用于开启一个 http 服务
●服务器○提供 服务 的 机器■服务: 提供一些内容(文件/数据)■机器: 电脑○有一台电脑, 运行了 一个 '软件'■ 这个 "软件" 可以向外开放一个 "文件夹"(根目录)■当其他电脑访问到这台电脑的时候, 并且制定了访问这个 "软件" 的时候■那么相当于在访问这个文件夹○例子:■一台电脑: 10.11.12.13■软件: 8080■开放的文件夹是: D:/a/b■当你打开浏览器访问 http:10.11.12.13:8080 的时候, 就是在访问这台电脑上的 D:/a/b○node 就可以利用 http 模块来充当 "软件" 启动服务
1.创建服务a.语法: http.createServer(函数)b.函数: 每当前端有一个请求访问这个服务器的时候, 就会执行一次 - 返回值: 一个服务
2.给当前服务配置一个端口号a.语法: server.listen(端口号(0~65535), 回调函数)
3.创建函数时 函数接收的两个参数a.第一个 形参: request, 对应的值为前端请求时携带的请求报文b.第二个 形参: response, 表示本次响应的相关信息, 你只要添加到 res 内, 会由服务器自动组装响应报文返回给前端
补充---请求●什么算请求?○在浏览器地址栏输入一个 地址, 然后按下回车■以浏览器为主体在发送请求■服务器返回的内容直接给到浏览器, 显示在页面上○在浏览器内 以 link script iframe img 等标签请求的内容■例如: <link href="./css/a.css"></link>■例如: <script src="./js/a.js"></script>○当前页面中的 js 代码内的 ajax 请求●请求的完整地址是什么○在一个 html 文件内所有的书写地址的位置都可以写 绝对地址 和 相对地址■绝对地址: 写什么就是什么■ 相对地址: 你打开的文件地址是什么, 那么相对地址就按照打开文件的地址进行拼接○例子: 打开页面是 http://localhost:8080/a/b/c/index.html■如果你的地址写的是 ./a/a.css●完整地址: http://localhost:8080/a/b/c/a/a.css■你的地址写的是 ../a.css●完整地址: http://localhost:8080/a/b/a.css■你的地址写的是 ../d/a.css●完整地址: http://localhost:8080/a/b/d/a.css■你的地址写的是 /a.css●完整地址: http://localhost:8080/a.css
搭建简易服务器1.初始搭建
2.配置 css
3.接口和静态资源
4.接受请求参数
