nodejs小结

node 模块化

闭包+自执行函数实现模块化
var 模块名 = (function(){
	....
	return {
		变量1,
		变量2
	}
})(引入其他的模块名...)
ES6模块化
export 变量的声明赋值
import {变量名} from “模块路径”
默认导出

一个模块只能有一个默认导出,对于默认导出,导入的名称可以和导出的名称可以不一样。

commonJS模块化
//导出
module.exports={导出的变量}
exports.属性名 = value
//导入
let 变量名 = require(“模块路径”);
module.exports 和 exports的区别
1.exports可以多次导出,但是module.exports只能导出一次,多次导出最后一次生效。
2.exports和module.exports本质是相等的。exports是一个引用,指向的是module.exports
3.如果在同一个文件中使用两种导出,给exports添加的属性和方法,也会添加在module.exports上,但是添加在module.exports上的属性和方法,不会添加在exports上。
路径模块

为什么要使用路径模块?

因为不同操作系统下,分隔符是不一样。使用路径模块的path.join()会自动使用当前系统的分隔符进行拼接路径。

path.join 路径拼接

path.extname(文件路径) 获取文件的后缀名

__dirname 获取当前文件的绝对路径

node搭建服务器
// 引入http模块
const http = require("http");

// 调用http createServer方法创建服务
// 这个方法需要一个回调函数,回调函数中有两个形参 回调函数是在接收到请求时执行
// node 是依靠事件驱动。
// request 请求信息对象
// response 响应信息对象
http.createServer(function(req,res){
  // 如果有请求进来,需要给它响应。 
  // 设置请求头,请求头中指定编码格式
  res.setHeader("content-type","text/platin;charset=utf8")
  res.end("你好,东湖");
  // 需要添加端口监听
}).listen(3000);//不推荐更改,因为你不知道每个应用的端口。如果两个程序的端口冲突,则软件运行会出错。
console.log("服务器已经启动");
get 和 post 的区别
/*
* get 和 post 的区别
 * 
 *  1.语义上的区别:
 *    get 获取 从服务器端获取一些数据时使用。
 *    post 发送  向服务器端发送一些数据。
 *  2.参数
 *    get:参数会以键值对的形式拼接到地址栏中
 *    post:参数会在请求体中,发送到服务端。
 * 
 *    参数的大小:
 *      get:4kb左右 会收浏览器URL长度的限制
 *      post:大小不受浏览器限制,但是可能会被服务器端限制。
 * 
 *  3.安全性:
 *    post的安全性更高。
 * 
 *  4.缓存
 *     get:请求会被浏览器缓存
 *     post:请求不会被浏览器缓存
 */
node获取get参数

通过req.url获取请求路径,使用?进行分隔得到一个数组,数组第二个元素就是get参数拼接的字符串。 引入querystring模块,使用parse方法,将字符串解析为对象。

node获取post参数

通过事件监听的方式,监听data事件,也就是只要数据传入就会触发,在事件中使用字符串拼接的方式获取post请求的参数,再监听end事件,数据传输完毕时触发。在这个事件中对获取到的参数字符串进行解析(引入querystring模块,使用parse方法)

package.json的作用

定义了这个项目需要哪些模块,以及该项目的配置信息(项目名,作者,版本,许可证等)

如何创建package.json

npm init 需要填写配置信息。

npm init -y 快速生成

模块加载机制
/**
 * 模块加载机制
 *    1.模块名有路径,并且有后缀
 *        通过路径,引入相关的模块。
 *    2.当模块有路径,但是没有后缀的时候
 *        2.1 会先找路径下同名的js文件。
 *        2.2 再找路径下同名的文件夹,找文件夹下的index.js
 *        2.3 如果文件夹下有package.json 会找文件中的main字段 入口文件。
 *        2.4 如果找不到,就报错。
 *    3.模块没有路径也没有后缀。
 *        3.1 node会判断它是否为内置模块,是内置就加载
 *        3.2 不为内置,则去第三方模块中查找,去node_modules中查找。
 *        
 */
promise主要是为了解决什么问题

回调地狱:在处理异步函数的过程中,回调函数嵌套回调函数,多次嵌套后,造成回调地狱,代码十分难懂,复杂。

三种状态

pending:正在进行中

fulfilled 操作成功

rejected 操作失败

两个过程

pending -->rejected

pending -->fulfilled

async函数

使用:添加在普通函数定义前面,让其成为一个异步函数。或者成为async函数。

1.async函数返回的是一个Promise对象。

2.async函数内部return的值,就是then函数中回调函数的参数。

3.async函数内部如果有错误,会执行catch函数,catch函数中的回调函数的参数就是抛出的错误信息。

await关键字

await关键字只能在async函数中使用。

1.await命令后面一般是一个Promise对象。

2.await命令修饰Promise对象时,是等待该异步函数执行的结果。

执行顺序

1.先同步后异步

2.异步操作:定时器,事件绑定,回调函数。

3.promise的构造函数是同步执行。

在数据库中添加记录(insert)
insert into 表名(字段1,字段2...) values (值1,值2);
insert into 表名 values(值1,值2);
在数据库中删除记录(delete)
delete from 表名 [where 条件判断]
在数据库中修改数据(update)
update 表名 set 字段名=新值 [where 条件判断] 
在数据库中查找数据(select)
select *[字段名1...] from 表名 [where 条件判断]
排序

select * from 表名 where 条件判断 order by 字段

多表查询
#左连接
 select * from student s left join classinfo c on s.classId = c.id;
#右连接
select * from student s right join classinfo c on s.classId = c.id;
express实现路由
//1.引入express模块
const express = require("express");
//2.创建实例
let app = express();
app.请求方式("/请求路径",回调函数)
//3.监听端口
app.listen(3000);
模块化路由
//在路由文件中
var 路由名称 = express.Router();
module.exports = 路由名称;
//在app.js文件中
const 路由名称 = require("路由的路径");
//加载路由
app.use("路径",路由名称)
静态资源访问
app.use(express.static(path.join(__dirname,"public")))
原生Ajax使用步骤
let xhr = new XMLHttpRequest();
xhr.open("请求方式""请求路径")
xhr.send("post参数");
xhr.onreadystatechange = function () {
    xhr.readystate==4 && xhr.status==200 
}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值