目录
第1节:初始NodeJS
第2节:v8引擎
第3节:Node-Module require
第4节:事件模块
第5节:Node 文件系统模块
第6节:文件系统 创建及删除
第7节:Http 创建服务器
第8节:缓存区及流
第9节:读写数据流
第10节:读取 html json
第11节:Router 路由模块
第12节:npm 、package.json
第13节:express 及 nodemon
第14节:express框架应用
第15节:express框架 中 EJS模板引擎
第16节: EJS引擎模板 复杂示例
第17节: 公共模板 Don‘t repeat yourself
第18节: 实战操作 ToDoApp
--------------------------------------------------------------------------------------------------------------------------------------
第1节:初始NodeJS
1. NodeJS 简介:
2. NodeJS 优点
3.知识点
4. 需要掌握的知识点
------------------------------------------------------------------------------------------------------------------------------------------------------------
第2节:v8引擎
1. 定时器
2. 路径
__dirname: 不包含文件名的路径
__filename: 包含文件名的路径
3.js中全局对象为window
NodeJS全局对象为 global
4. 引擎
------------------------------------------------------------------------------------------------------------------------------------------------------------
第3节:Node-Module require
1. module传输一个方法
2. module传输多个方法
------------------------------------------------------------------------------------------------------------------------------------------------------------
第4节:事件模块
1. 什么是时间模块
2. “自定义模块的引入” 与 ”系统自定义模块的引入”
3. 事件模块
var events = require('events'); // 引入事件模块
var myEmitter = new events.EventEmitter(); // 创建EventEmitter 对象
myEmitter.on('someEvent', function(){ ... }); // 注册事件
setImmediate(() => { ... }); // 异步
myEvent.emit('someEvent'); // 触发事件
------------------------------------------------------------------------------------------------------------------------------------------------------------
第5节:Node 文件系统模块
1. 文件系统主要对项目中的文件进行操作
2. 示例
------------------------------------------------------------------------------------------------------------------------------------------------------------
第6节:文件系统 创建及删除
1.
2. 同步/异步 -- 创建/删除 -- 文件/ 文件夹
mkdirSync(fileName): 同步创建 文件夹
unlink: 同步删除文件夹
rmdirSync(fileName): 同步删除 文件夹
mkdir( fileName, callback): 异步创建 文件夹
rmdir(fileName, callback) : 异步删除 文件夹
writeFile(fileName, data): 创建文件
readFile(fileName, callback): 读取文件
var fs = require('fs');
// 创建文件夹 同步
fs.mkdirSync('stuff1');
// 创建文件夹 异步
fs.mkdir('stuff',function () {
fs.readFile('readMe.txt', 'utf8', function (err,data) {
if(err) throw err;
fs.writeFile('./stuff/writeMe.txt', data);
})
});
// unlink 删除文件夹 同步
fs.unlink('writeMe.txt', function (err) {
if(err) throw err;
console.log('文件删除成功!');
});
// rmdirSync 删除文件夹 同步
fs.rmdirSync('stuff1');
// 异步删除文件夹
// 1.先删除文件夹中的文件 2.再删除外部的文件夹
fs.unlink('./stuff/writeMe.txt',function () {
fs.rmdir('stuff',function (err) {
if(err) throw err;
console.log('文件夹删除成功!');
})
})
------------------------------------------------------------------------------------------------------------------------------------------------------------
第7节:Http 创建服务器
1.
2.
3.
4. 创建本地服务器
// 通过 http模块,创建本地服务器
// 1. 引入 http 模块
var http = require('http');
// 2. 创建服务器方法
var server = http.createServer(function (req,res) {
console.log("客户端向服务器端发送请求:" + req.url);
res.writeHead(200,{"Content_type":"text-plain"});
res.end("Server is working!");
})
// 3. 服务对象监听服务器地址以及端口号
server.listen(8888, "127.0.0.1");
console.log("server is running...");
------------------------------------------------------------------------------------------------------------------------------------------------------------
第8节:Node 缓存区Buffer 及 流stream
1. 缓存区
在 ECMAScript 2015 引入 TypedArray 之前,JavaScript 语言没有读取或操作二进制数据流的机制。 Buffer 类被引入作为 Node.js API 的一部分,使其可以在 TCP 流或文件系统操作等场景中处理二进制数据流。
TypedArray 现已被添加进 ES6 中,Buffer 类以一种更优化、更适合 Node.js 用例的方式实现了 Uint8Array API。
Buffer 类的实例类似于整数数组,但 Buffer 的大小是固定的、且在 V8 堆外分配物理内存。 Buffer 的大小在被创建时确定,且无法调整。
Buffer 类在 Node.js 中是一个全局变量,因此无需使用 require('buffer').Buffer。
2.缓存区示意图
3. 流 stream
流(stream)是一种在 Node.js 中处理流式数据的抽象接口。 stream 模块提供了一些基础的 API,用于构建实现了流接口的对象。
Node.js 提供了多种流对象。 例如,发送到 HTTP 服务器的请求和 process.stdout 都是流的实例。
流可以是可读的、可写的、或是可读写的。 所有的流都是 EventEmitter 的实例。
stream 模块可以通过以下方式使用:
4. 流stream 示意图
const stream = require('stream');
------------------------------------------------------------------------------------------------------------------------------------------------------------
第9节:Node 读写数据流
1.读写数据流示例
2.读取纯文本, 经过缓存区,以流的形式展示
3. .write( ) 取写入数据流
4. 使用pipe( ) 读写数据流
5. server stream 读取纯文本
------------------------------------------------------------------------------------------------------------------------------------------------------------
第10节:Node 读取 html json
1. 读取 html
2. 读取展示 json (text/plain text/html)
3. 对象与json的区别
对象 key 可以不用引号, value 可以是单引号或者双引号
json key 和 value 都必须用双引号。value为数值时,可以不用引号
4.favicon.ico 是一个独立的请求 , 与页面不是同一个
------------------------------------------------------------------------------------------------------------------------------------------------------------
第11节:Node Router 路由模块
------------------------------------------------------------------------------------------------------------------------------------------------------------
第12节:Node npm 、package.json
1.npm 拥有一个庞大的服务器
2. package.json 用来记录安装了哪些第三方库
nom install ** 时报错
以为需要安装package
3. 执行 npm install jquery --save, package.jsom会添加下面的记录:
"dependencies": {
"jquery": "^3.3.1"
},
4.npm install、npm install --save与npm install --save-dev区别
npm install X:
会把X包安装到node_modules目录中
不会修改package.json
之后运行npm install命令时,不会自动安装X
npm install X –save:
会把X包安装到node_modules目录中
会在package.json的dependencies属性下添加X
之后运行npm install命令时,会自动安装X到node_modules目录中
之后运行npm install
–production或者注明NODE_ENV变量值为production时,会自动安装msbuild到node_modules目录中
npm install X –save-dev:
会把X包安装到node_modules目录中
会在package.json的devDependencies属性下添加X
之后运行npm install命令时,会自动安装X到node_modules目录中
之后运行npm install
–production或者注明NODE_ENV变量值为production时,不会自动安装X到node_modules目录中
使用原则:
运行时需要用到的包使用–save,否则使用–save-dev。
------------------------------------------------------------------------------------------------------------------------------------------------------------
第13节:express 及 nodemon
1. experss框架: 基于Nodejs平台,快速,开放,极简的web开发框架
2. express安装: npm install express --save
3.nodemon工具: 在开发环境下,往往需要一个工具来自动重启项目工程,我们可以借助nodemon来代替node进行启动
4.nodemon安装:npm insatll nodemon --save-dev
5.nodemon全局安装:npm install -g nodemon --save-dev 安装在电脑全局,其他电脑也可以使用
6. nodemon 运行 示例:
------------------------------------------------------------------------------------------------------------------------------------------------------------
第14节:express框架应用
1. express 已经封装好:
服务器, 路由, 中间件, 网络请求
2.express 框架的使用:
npm 安装 express 框架 => 引入express模块 => 实例化express对象 => 通过对象调用各种方法
3.express示例: send( ) 打开纯文本 sendFile( ) 可以打开html
// 引入express模块
var express = require('express');
// 实例化 express 的对象
var app = express();
// 根据用户请求的地址,返回对应的数据信息
app.get('/', function (req,res) {
console.log(req.url); // /
// send打开纯文本 sendFile可以打开html
// res.send('this is the home page');
res.sendFile(__dirname + '/index.html');
})
app.get('/contact', function (req,res) {
console.log(req.url); // /contact
res.send('this is the contact page');
})
// 路由参数
app.get('/profile/:id', function (req,res) {
console.log(req.url); // /contact
res.send('路径参数为:' + req.params.id);
})
// 设置端口号
app.listen(3333);
------------------------------------------------------------------------------------------------------------------------------------------------------------
第15节:express框架 中 EJS模板引擎
1.EJS模板引擎的特点:快速编译和渲染,简单的模板标签,支持浏览器端和服务器端,支持express视图系统
2. EJS示例:
3.webstrom 新建 express 项目 EJS 模板引擎, 示例:
4. 安装ejs模板引擎: npm install ejs --save-dev
------------------------------------------------------------------------------------------------------------------------------------------------------------
第16节: ejs 复杂示例
------------------------------------------------------------------------------------------------------------------------------------------------------------
第17节: 公共模板 Don‘t repeat yourself
1. 公共模板: 使用EJS替代html ; 创建导航(公共模板); 解决外部样式不可用问题
2.
var express = require('express');
var app = express();
// 配置试图引擎
app.set('view engine', 'ejs');
// 让服务器识别外部样式表
app.use('/assets', express.static('assets'));
------------------------------------------------------------------------------------------------------------------------------------------------------------
第18节: 实战操作 ToDoApp
npm init -- >