跳到主要内容

前端面试题

· 阅读需 1 分钟
1adybug
子虚伊人
  1. JavaScript 中有哪些数据类型

    stringnumberbooleanbigIntnullundefinedsymbolobject

  2. 谈一谈 requestAnimationFrame

  3. 说说数组在最近几年新增了哪些方法

  4. 如何在 canvas 中画一条直线

  5. 如何禁止用户选中文字

  6. vue 2 和 vue 3 分别是如何对数组实现响应式的

  7. vue 3 中 watch 函数是如何自动收集依赖的

  8. TypeScript 中有哪些自带的泛型,分别有什么作用

  9. 谈一谈 TypeScript 中的 extends 关键字

  10. TypeScript 中如何指定函数中的 this 的类型

有用的网站

· 阅读需 1 分钟
1adybug
子虚伊人
  • Visx 是一个基于 d3 的低阶 react 可视化原子库,主要是各类图表
  • CSS Generators 各种类型的 CSS 效果,比如绶带等,纯 CSS 实现
  • HTMLrev 各种类型的网站模版,免费可商用
  • tsParticles 各种粒子特效的网站

坐标转换

· 阅读需 8 分钟
1adybug
子虚伊人
坐标系名称产品说明
WGS84大地坐标系谷歌地图(国外)目前广泛使用的 GPS 全球卫星定位系统使用的坐标系
GCJ02火星坐标系高德地图、腾讯地图、谷歌地图(国内)中国国家测绘局制定的地理坐标系统,是由 WGS84 加密后得到的坐标系
BD09百度坐标系百度地图在 GCJ02 坐标系基础上再次加密。其中 BD09LL 表示百度经纬度坐标,BD09MC 表示百度墨卡托米制坐标

在 Express 中使用 https 证书

· 阅读需 1 分钟
1adybug
子虚伊人
import { readFileSync } from "fs"
import https from "https"

import express from "express"

const app = express()

app.get("/", async (req, res) => {
res.send("Hello, World!")
})

https
.createServer(
{
key: readFileSync("../root/.acme.sh/a.deep-sea.dynv6.net_ecc/a.deep-sea.dynv6.net.key"),
cert: readFileSync("../root/.acme.sh/a.deep-sea.dynv6.net_ecc/fullchain.cer"),
},
app,
)
.listen(8080)

ReadAbleStream 转换为 ReadStream

· 阅读需 1 分钟
1adybug
子虚伊人
import { Readable } from "stream"

const reader = readAbleStream.getReader()

const readStream = new Readable({
read() {
reader.read().then(({ done, value }) => {
if (done) readStream.push(null)
else readStream.push(value)
})
},
})

async function* nodeStreamToIterator(stream: ReadStream): AsyncGenerator<Buffer, void, never> {
for await (const chunk of stream) yield chunk
}

function iteratorToStream(iterator: AsyncGenerator<Buffer, void, never>): ReadableStream {
return new ReadableStream({
async pull(controller) {
const { value, done } = await iterator.next()

if (done) controller.close()
else controller.enqueue(value)
},
})
}
提示

2024 年 3 月 29 日更新

Node.js 中其实自带了转换的功能

import { Readable } from "stream"

async function main() {
const response = await fetch("http://example.com")
const readable = Readable.fromWeb(response.body as any)
}

main()