- node 开发 中你用过哪些常用的node模块,分别是哪些?
var httpModule=require(‘http’);
“http”:HTTP是Node.js提供的原生模块,该模块中有createServer、request和get等多个方法和属性
文件处理
File System模块
文件IO是由标准POSIX函数封装而成的,需要使用require(‘fs’)访问这个模块。所有方法都提供了同步和异步2种方式
fs.rename(path1,path2,[callback])异步调用函数对应fs.renameSync(path1,path2)同步调用函数,作用功能都是相同的 ,但是接口是一个同步接口,因此调用方式有所区别。
路由处理
根据不同客户端的请求资源路径,来分配服务器处理逻辑。
URL模块作用:处理客户端请求过来的URL 代码步骤:导入 URL 核心模块 导入 HTTP 核心模块 监听客户端的请求(在这中间处理客户端请求过来的URL) 处理客户端的请求 开启服务器
特定规则:
可以根据用户请求的url,依据特定的规则得到执行函数。
GET和POST
Node.js中HTTP客户端发送的GET请求参数都存储在request对象中的url属性中。
Query Strings模块
作用:处理客户端通过get/post请求传递过来的参数
使用关键点:
需要导入 ‘querystring’ 这个核心模块
get请求时 querystring 一般是配合 url 核心模块一起使用的
get/post请求最终都需要调用 querystring.parse方法,将请求传递过来的键值对字符串转成js对象,方便操作。
注意:
get/post的请求方式是不一样的,客户端传递过来时,参数放在的地方是不一样的,所以服务器端处理方式也不太一样。
File System模块
前提:以后的所有静态资源(html、css、js、图片等)都是放在服务端的,如果浏览器需要这些html、css、js、图片等资源,则需要先将其读取到node.exe的内容中,然后再返回给浏览器。
作用:在服务端来操作文件,可能是需要将浏览器上传的图片保存到服务器,也可能是需要将服务器的资源读取之后返回给浏览器。
代码步骤:
导入 fs 核心模块
使用相应的方法来写入文件、读取文件等操作
注意点:目录 fs它是不会自动帮我们创建的需要我们自己手工创建文件如果不存在,调用 writeFile 与 appendFile 方法会自动帮我们创建。
Path模块
作用:操作文件的路径,为文件操作服务。
常用的几个函数:path.join(第一个路径,第二个路径) : 拼接路径
Global模块
作用:全局共享的,不需要导入模块即可以使用
常用的属性:
__dirname : 文件所在的文件夹路径
__filename : 文件所在的路径
require() : 导入需要的模块
module : 自定义模块时用到
exports : 自定义模块时用到
2. node 开发中 如何实现 模块化开发 (什么是模块化开发 怎么实现模块化开发) require exports defined
模块定义 define
模块暴露 exports
模块引入 require
模块化就是讲js文件按照功能分离,根据需求引入不同的文件中。源于服务器端。.buffer string css js from json
模块化开发就是把复杂的业务逻辑分解成细小的单元模块,功能模块,能实现代码的复用,代码之间的组织关系非常明了,依赖关系非常清晰。
实现模块化开发:commonJs是nodeJs+webpack实现模块开发的规范
-
node 开发 返回的数据的文档类型格式有哪些 5条 (content-type)
buffer string css js from json -
npm 安装插件 package 如何 安装开发依赖 项目依赖 全局依赖 underscore
–global -g 全局依赖
–save-dev -D 开发依赖 devDependencies 辅助开发 只在开发阶段需要,上线之后不需要 gulp webpack
语法检查 babel css loader less sass
–save -S 项目依赖 dependencies 项目始终需要 项目运行需要的模块
path url querystring crypto加密模块 cookie-parser session-cookie mutler
yarn add
点击并拖拽以移动
5. node 文件读取 这个 模块 读文件 写文件 创建文件 删除文件 怎么实现
fs模块 Node 文件系统模块 file system
// async 异步 一定有callback
// sync 同步
得到文件与目录的信息:stat
fs.stat("./event.js",(err,stats)=>{})
创建一个目录:mkdir
fs.mkdir(“logs”,(err)=>{})
创建文件并写入内容:writeFile, 追加内容appendFile
fs.writeFile("./logs/hello.log",“hello world wuhan1809”,‘utf8’,(err)=>{})
fs.appendFile("./logs/demo.txt",“hello world node vue react\n”,‘utf8’,(err)=>{})
读取文件的内容:readFile
fs.readFile(“logs/hello.log”,“utf-8”,(err,data)=>{})
列出目录的东西:readdir
fs.readdir("…/day1",“utf8”,(err,files)=>{})
files是一个数组
重命名目录或文件:rename 旧,新
fs.rename(“logs/demo.txt”,“logs/demo.log”,(err)=>{})
删除目录与文件:rmdir,unlink // 删除 目录之前 要把当前目录所有的文件删除
var files = fs.readdirSync(“logs”);
files.forEach((item,index)=>{
console.log(item);
fs.unlink(`logs/${item}`,err=>{
if(err) throw err;
console.log('删除文件成功 ---'+item);
})
})
// 删除目录
fs.rmdir(“logs”,(err)=>{
if(err) throw err;
console.log('删除目录成功 ---');
})
点击并拖拽以移动
6. mongodb 和 mysql 数据库的区别
- 分别写出mongodb 和 mysql 数据库的增删改查 数据表 为 user
db.user.find({})
db.user.remove({})
db.user.remove({})
db.user.insert({})
select * from user
delete from user
alter table user set … where …
insert into user values()
点击并拖拽以移动
8. node 什么是 socket ,它有什么作用 ?
socket是客户端与服务端的通信。作用:实现网络通信
- 什么是长连接 , 你知道的有哪些 实现 长连接的 方式 sse socket
什么是长连接、短连接?
在HTTP/1.0中默认使用短连接。也就是说,客户端和服务器每进行一次HTTP操作,就建立一次连接,任务结束就中断连接。当客户端浏览器访问的某个HTML或其他类型的Web页中包含有其他的Web资源(如JavaScript文件、图像文件、CSS文件等),每遇到这样一个Web资源,浏览器就会重新建立一个HTTP会话。
而从HTTP/1.1起,默认使用长连接,用以保持连接特性。使用长连接的HTTP协议,会在响应头加入这行代码:Connection:keep-alive
在使用长连接的情况下,当一个网页打开完成后,客户端和服务器之间用于传输HTTP数据的TCP连接不会关闭,客户端再次访问这个服务器时,会继续使用这一条已经建立的连接。Keep-Alive不会永久保持连接,它有一个保持时间,可以在不同的服务器软件(如Apache)中设定这个时间。实现长连接需要客户端和服务端都支持长连接。
HTTP协议的长连接和短连接,实质上是TCP协议的长连接和短连接。
长连接实现方式为 see socket
Connection:keep-alive
长连接就是保持一个一定时间的连接状态,参数可以在服务器配置 避免客户端多次发送请求给服务器 减少开销 提升性能
- 说一下加密方式有哪些 谈一下基于node 加密模块
常用的加密方式有
md5
sha1
base64
Hmac
AES
Diffie-Hellman等,
基于node的加密模块是crypto模块 ,详细参考https://blog.csdn.net/qq_42549337/article/details/80814038 3DES
-
node + express ejs 后端模板引擎 有哪些特点
缓存功能,能够缓存已经解析好的html模版;
可以使用express视图系统;
可以自定义标签,
比如 ‘<%’ 可以使用 ‘{{’ 替代, ‘%>’ 用 ‘}}’ 代替;
编译和渲染速度快;
支持浏览器端和服务器端;
自定义标记分隔符;
模版标签很简单。 编译速度快。完全支持express系统。 -
express req.query req.body req.params 分别是什么意思?
express. req.query. ?拼接的参数——查询参数。 req.body。 提交到后台的参数 Req.params. 冒号拼接的参数。 也是路由参数
Url.parse.search. 有问号
Url.parse.query. 无问号
了解 AMD2和 CMD 吗? 使用过 requireJS 和 seaJS 吗?
AMD requireJS 依赖前置
CMD seaJS 依赖
AMD 是提前执行,CMD 是延迟执行
没有commonJS 之前使用 AMD2 和 CMD实现模块化