每日JS面试分享(3)

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 模块,结合监听 dataend 事件来处理。

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、简单说一下你所了解的设计模式有哪些?分别是什么含义

  1. 工厂模式(Factory Pattern):定义一个用于创建对象的接口,让子类决定实例化哪个类。这种模式使得一个类的实例化延迟到其子类。
  2. 单例模式(Singleton Pattern):保证一个类仅有一个实例,并提供一个访问它的全局访问点。
  3. 观察者模式(Observer Pattern):定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。
  4. 组合模式(Composite Pattern):是一种结构型设计模式,它通过将对象组合成树形结构,使得单个对象和组合对象可以被一致对待。

4、link和@import的区别

  1. 加载方式:<link>标签是HTML标签,它在页面加载时同时加载并行加载,而@import是CSS提供的规则,它需要在页面渲染完后才开始加载。
  2. 浏览器兼容性:<link>标签被所有浏览器支持,而@import在IE5以下的浏览器不支持。
  3. DOM访问:<link>标签创建的外部CSS文件可以通过JavaScript访问DOM,而@import引入的CSS无法通过JavaScript访问DOM。
  4. 权重:<link>标签引入的样式表权重高于@import引入的样式表。
  5. 使用方式:<link>标签可以用于引入其他资源(如JS、icon等),而@import只能引入CSS资源。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值