-
PHP是一个做后端的语言,让你的页面可以让全世界的人看到。
-
nodejs 和php一样也是一个做后端的语言,同样也能让全世界人看到你的页面
-
node全称叫 node.js 如 jquery.js vue.js angular.js react.js.
-
javascript 这个语言是前端的核心内容, node使用的也是javascript的语法
-
node适合全栈开发
计算机 是 1946年发明的
nodejs 是 2009年发明
C 是 1972年发明的
PHP 是 1996年发明的
/*************************************************************************/
-
nodejs具有一定的时代性。
6.1 nodejs使用js语法容易实现全栈
6.2 nodejs通过npm管理,具有完善的生态
6.3 nodejs最大的特点是非阻塞I/O -
复习一下 JS — javascript
let和var : 都是声明变量。 let不具备变量提升,let块级作用域。
const: 声明常量的关键字。jquery的ajax:
$.ajax({
url: 表示请求的地址
type: 请求方式
dataType: 返回的数据类型
data: 发送的数据
四个回调:
success: 成功调用
error: 错误调用
complete: 完成调用,不管成功还是失败
beforeSend: 发送前调用 -
块级作用域:
for(var i=0;i<3;i++){
setTimeout(function(){
console.log(i)
})
} 打印结果 3 3 3
原因: let具有块级作用域
9 ?node -v 在黑窗口中输入,是查看node的版本
npm -v 查看npm的版本 【在安装node的时候会自动安装 npm】
10 ? node 如何使用:
10.1 创建js文件。
10.2 进入js文件所在的目录:打开黑窗口, 输入cd 空格 然后把目录直接拖入到黑窗口,点击回车
10.3 可以通过dir 查看当前路径下的文件
★ 10.4 可以通过node 文件名称 运行相关js文件
【在其他盘符下,创建js文件,需要切换盘符 盘符名称: 点击回车。 默认是c盘符】
【如: d: 点击回车】
-
★ 在前端中 像alert document console 都是window这个全局对象的属性
★ 在后端(nodejs)中 像console 都是global这个全局对象的属性Q: 什么是全局对象
A: 拿过来就用的对像就是全局对像 -
总结一下:四个全局对象: console 时间系列 _ _dirname _ _filename
13 ★★★就是整个node分为3个部分:
一: 全局对象部分
二: 核心模块部分
三: 外部模块部分
14 介绍一下核心模块: 模块就是js文件
核心模块就是nodejs开发团队写的js文件
不是nodejs团队写的js文件就叫做外部模块
-
path核心模块: 是对路径的操作。我们掌握两个方法: parse 解析路径 join 合并路径
-
fs核心模块:表示file system 文件系统。 因此fs是对文件的操作。
可以认为: 在windows中一切都是文件【出来文件夹和快捷方式】
可以说: 对文件的操作就表示文件的增删该查重命名读写 -
★★★回调函数:
function foo(a){
a() //函数后壁那加上括号表示调用
}
foo(function(){
console.log(‘hello’)
})
用函数作为参数就是回调函数
回调函数作用: 干完一件事以后在代码最后执行
-
fs核心模块至关重要的14个方法:
- fs.writeFileSync 同步写文件 2个参数:1.文件名称 2. 写入内容
- fs.writeFile 异步写文件 3个参数:1.文件名称 2. 写入内容 3.回调函数
- fs.readFileSync 同步读文件 1个参数:1.文件名称 返回值是读到的内容
- fs.readFile 异步读文件 2个参数:1.文件名称 2.回调函数 回调函数中的第二个参数是读到的内容
- fs.appendFileSync 同步追加文件 2个参数: 1. 文件名称 2. 追加内容
- fs.appendFile 异步追加文件 3个参数: 1.文件名称 2.追加内容 3.回调函数
- fs.unlinkSync 同步删除文件 1个参数: 1.文件名称
- fs.unlink 异步删除文件 2个参数: 1. 文件名称 2. 回调函数
- fs.renameSync 同步重命名文件 2个参数: 1.源文件名称 2. 修改后的文件名称 【通过rename还可以移动文件】
10 fs.rename 异步重命名文件 3个参数: 1.源文件名称 2. 修改后的名称 3 回调函数 【通过rename还可以移动文件】
11 fs.mkdirSync 同步创建文件夹 1个参数: 文件夹名称
12 fs.mkdir 异步创建文件夹 2个参数: 1. 文件夹名称 2.回调函数
13 fs.rmdirSync 同步删除文件夹 1个参数: 1. 文件夹名称
14 fs.rmdir 异步删除文件夹 2个参数: 1. 文件夹名称 2.回调函数
-
【提高提】
function foo(a,b,c){
console.log(a© + b)
}foo(function(x){ return x*2 },5,8)
-
★★★★★★ 回调实现的 --> 异步 —> 非阻塞
21 核心模块 events 这个核心模块表示对事件的操作
1. 引用事件events后,一定要实例化: EventEmitter
2. 绑定事件的3种方法: addListener on once
3. 删除事件: removeAllListeners removeListener
4. 触发事件: emit
22 *核心模块–Stream 在这里的流就是字节流
流分为:毒瘤(读流) 和 血流(写流)
读流和写流可以通过fs模块创建
fs创建读流:
fs.createReadStream()
fs创建写流
fs.createWriteStream()
-
Buffer总结:
-
Buffer是全局对象,可以拿过啦直接用
-
创建Buffer的方法:
2.1 Buffer.alloc()
2.2 Buffer.from()
2.3 new Buffer()
3.buffer对象的方法:
3.1 length
3.2 toString
3.3 write -
-
http模块★★★
- http属于核心模块
【扩展】 只要你电脑上的程序需要上网,这个程序就会有一个端口号, ipconfig 看自己的ip
- http属于核心模块
26.以后提交数据时,只能用ajax!
27.新的核心模块: querystring 作用就是把 a=b&c=d 转化成 {a:b,c:d} 【path fs events http querystring】
1. parse 解析 a=b&c=d
28.其他核心模块:
os: os 是 1.operation 2.system 的缩写 表示操作系统。 因此通过os核心模块可以获得当前操作系统的一些信息
3.platform: 表示当前操作系统名称
cpus: 表示当前cpu的核数,这个方法返回的是一个数组,数组的长度表示cpu的核数
arch: 表示当前cpu的架构
4.process: 进程 运行时的程序就是一个进程
pid 得到当前nodejs进程的进程号
5.exit 退出当前进程
6.util: 提供nodejs一些附加功能的模块
7.inherit: 继承
isArray() isBoolean() isString() isObject() 判断当前对象是否是这些类型。
7.child_process:子进程 nodejs 是单线程,多进程【使用nodejs启动一个qq就是多进程】
7.1 如何通过nodejs的子进程启动其他程
★★★创建子进程的3个方法: 1. exec 2. fork 3.spawn
-
大家发现require 也是拿过来就能用所以require也是全局对象
require
module.exports 8. module模块 exports 导出,曝光 -
外部模块:
任何人都可以写的js文件,就是外部模块。我们如何使用别人写的外部模块
在安装nodejs的同时,会自动安装npm,npm就可以帮助我们使用外部模块npm = node package management nodejs 包(模块)管理工具
-
使用外部模块步骤:
- npm install 模块名称 ----- 安装模块
- 通过require(模块名称) ----- 引用模块
-
npm其他指令:
npm install 模块名称 -------------- 安装模块
npm ls --------------- 查看当前安装了那些模块
npm root --------------- 查看当前模块安装在哪里npm install -g 模块名称 ------------ 全局安装模块
npm ls -g ------------ 查看全局安装了那些模块
npm root -g ------------ 查看全局模块安装的路径 -
gulp --就是一个外部模块!
gulp 是自动化构建工具! — > 当前主要任务就是压缩!
gulpfile.js 是gulp的配置文件 ★★
default任务可以直接通过gulp运行 ★★
压缩js使用gulp-uglify
压缩html使用gulp-htmlmin
压缩css使用gulp-cssmin -
package.json 就是一个项目的户口本,记录一个项目相关的信息。用json的格式记录项目的相关信息
-
express 外部模块:其他他就是一个加强版的http
★在express中,设置静态路径的方法是 static
静态文件: 只要是html页面中 通过src或href 引用的就是静态文件
★用于解析post提交数据的外部模块: body-parser
-
核心内容 — 使用nodejs 做web项目的最基本的八个步骤。
第一步: express -e 项目名称 || 创建项目总体框架
第二步: cd 项目名称 || 进入项目目录★★
第三步: npm install || ★★★ 安装package.json中依赖项(依赖的外部模块)
第四步: 打开views中的index.ejs文件,删除原有代码,写上自己的html页面
第五步: 根《请求响应图》 在 routes中的index.js文件中,写请求—响应
第六步: 打开数据库环境,在黑窗口中安装 npm install mysql --save ||
第七步: 在routes中的index.js文件中,写上链接数据库的代码@
第八步: 在黑窗口中输入 npm start || 运行项目
-
使用express展示页面:
- 把我要展示的html页面放到项目的views中文件夹中
- 把.html后缀改成 .ejs
- 在index.js中输入写响应时,通过res.render('页面名称‘) 展示页面
-
问: 为什么我们的页面要用ejs作为后缀问: 为什么我们的页面要用ejs作为后缀
答: 因为ejs可以接收后端发送的数据 【ejs模板引擎】
问: 如何接收数据?
答: 通过<% = %> 接收数据!! -
★★★ 对于res请求对象!!!就两个方法
res.render() 展示页面!!!!
res.send() 发送数据!!!!【重要】 如果ajax请求: 就要用res.send() 这样才是把数据放回到 ajax的data中
【重要】 如果location.href 或 a标签中的href 就要用render() 展示页面 -
promise
一个回调套一个回调的形势:回调地狱(callback hell)
promise 的出现就为了解决回调地狱 -
koa -----> 是升级版的express,只不过koa引入了使用promise 解决回调地狱的方式
npm install express-generator -g ===》 express -e aff
npm install koa-generator -g ==> koa 项目名称