1、querystring模块中字符串转对象,或对象转字符串的方法
在Node.js中,可以使用querystring
模块来进行URL查询字符串与对象之间的相互转换。
querystring.parse(str)
:将一个查询字符串转换为一个对象,每个键值对都是对象的一个属性。
querystring.stringify(obj)
:将一个对象转换为一个查询字符串,每个键值对都是查询字符串的一个部分。
const querystring = require('querystring');
// 字符串转对象
const str = 'foo=bar&abc=xyz&abc=123';
const obj = querystring.parse(str);
console.log(obj); // { foo: 'bar', abc: [ 'xyz', '123' ] }
// 对象转字符串
const newObj = { foo: 'bar', abc: ['xyz', '123'] };
const newStr = querystring.stringify(newObj);
console.log(newStr); // 'foo=bar&abc=xyz&abc=123'
querystring.parse()
是querystring.decode()
的别名
querystring.stringify()
是querystring.encode()
的别名
2、请用代码的方式获取post请求的参数
在 Node.js 中获取 POST 请求参数可以使用 http
模块,结合监听 data
和 end
事件来处理。
const http = require('http');
// 创建 HTTP 服务器
http.createServer((req, res) => {
let body = ''; // 用于存储请求体
// 监听 data 事件,用于接收 POST 请求的请求体
req.on('data', (chunk) => {
body += chunk.toString(); // 拼接请求体数据
});
// 监听 end 事件,用于处理 POST 请求的请求体
req.on('end', () => {
// 解析请求参数
const postData = JSON.parse(body);
console.log(postData); // 输出解析后的请求参数
// 返回响应
res.writeHead(200, { 'Content-Type': 'text/plain' });
res.end('Hello World\n');
});
}).listen(3000); // 监听端口 3000
3、简单说一下你所了解的设计模式有哪些?分别是什么含义
- 工厂模式(Factory Pattern):定义一个用于创建对象的接口,让子类决定实例化哪个类。这种模式使得一个类的实例化延迟到其子类。
- 单例模式(Singleton Pattern):保证一个类仅有一个实例,并提供一个访问它的全局访问点。
- 观察者模式(Observer Pattern):定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。
- 组合模式(Composite Pattern):是一种结构型设计模式,它通过将对象组合成树形结构,使得单个对象和组合对象可以被一致对待。
4、link和@import的区别
- 加载方式:
<link>
标签是HTML标签,它在页面加载时同时加载并行加载,而@import
是CSS提供的规则,它需要在页面渲染完后才开始加载。 - 浏览器兼容性:
<link>
标签被所有浏览器支持,而@import
在IE5以下的浏览器不支持。 - DOM访问:
<link>
标签创建的外部CSS文件可以通过JavaScript访问DOM,而@import
引入的CSS无法通过JavaScript访问DOM。 - 权重:
<link>
标签引入的样式表权重高于@import
引入的样式表。 - 使用方式:
<link>
标签可以用于引入其他资源(如JS、icon等),而@import
只能引入CSS资源。