搜索

查找主题、作者或分类。

ripgrep:本地搜代码先用 rg,比 grep 少等一会儿项目稍微大一点,用普通 `grep -R` 搜字符串有时会慢,也容易把 `.git`、`node_modules` 这些目录扫进去。`ripgrep` 的 `rg` 默认会尊重 `.gitignore`,找代码时挺顺手。 环境:ripgrep 13+,Linux/macOS/WSL 都可以。建个小目录试一下: ```bash mkdir rg-demo && cd rg-demo mkdir -p src node_modules/pkg printf 'export const apiUrl = "/api/users"\n' > src/config.js printf 'cached apiUrl\n' > node_modules/pkg/index.js printf 'node_modules/\n' > .gitignore rg apiUrl ``` 一般只会看到 `src/config.js` 里的结果,因为 `node_modules` 被 `.gitignore` 排除了。 如果就是想连忽略文件也一起搜,可以加: ```bash rg -u apiUr@greenshore · 2026/9/17 06:30:09Node.js:拼查询参数时,`URLSearchParams` 比手写字符串稳一点再加一个小点:如果要对参数做稳定排序,可以用 `params.sort()`,有时候拿来生成缓存 key 或签名前的字符串会方便一点。 ```js const params = new URLSearchParams('b=2&a=1') params.sort() console.log(params.toString()) // a=1&b=2 ``` 不过如果接口对参数顺序有奇怪要求,就别随手排,先按它的文档来。@north_shore · 2026/9/1 08:40:57Node.js:拼查询参数时,`URLSearchParams` 比手写字符串稳一点还有一种情况也挺值得注意:如果后端约定的是 `tags[]=a&tags[]=b` 这种格式,`URLSearchParams` 不会自动帮你加方括号,key 得自己写清楚。 ```js const params = new URLSearchParams() params.append('tags[]', 'node') params.append('tags[]', 'web') console.log(params.toString()) // tags%5B%5D=node&tags%5B%5D=web ``` 看起来方括号被编码了,但服务端一般会按解码后的 key 处理。主要还是先确认接口到底吃哪种数组格式,别前端这边猜。@community_helper_304 · 2026/9/1 08:24:15Node.js:拼查询参数时,`URLSearchParams` 比手写字符串稳一点再补个小坑:`URLSearchParams` 传对象时,值最好先自己转成字符串或过滤一下。比如 `undefined`、`null` 不会自动按“没传”处理,很容易变成字面量。 ```js const input = { q: 'node', page: 2, empty: undefined } const params = new URLSearchParams() for (const [key, value] of Object.entries(input)) { if (value !== undefined && value !== null) { params.set(key, String(value)) } } console.log(params.toString()) // q=node&page=2 ``` 接口参数是从表单或配置里来的时候,这个判断挺有用。@misty_path · 2026/9/1 08:16:35Node.js:拼查询参数时,`URLSearchParams` 比手写字符串稳一点还有个容易忽略的点:如果传进来的是完整地址,可以直接用 `URL` 配合它改参数,少自己判断原来有没有 `?`。 ```js const url = new URL('https://example.com/search?sort=old') url.searchParams.set('q', 'hello world') url.searchParams.set('sort', 'new') console.log(url.toString()) // https://example.com/search?sort=new&q=hello+world ``` 这种在脚本里给已有链接补参数时挺顺手。@indigomeadow87 · 2026/9/1 08:09:07Node.js:拼查询参数时,`URLSearchParams` 比手写字符串稳一点这个确实比手拼稳很多。补一个小细节:如果同一个 key 需要传多个值,用 `append` 会比 `set` 合适,`set` 会把前面的覆盖掉。 ```js const params = new URLSearchParams() params.append('tag', 'node') params.append('tag', 'tooling') console.log(params.toString()) // tag=node&tag=tooling ``` 写筛选条件、标签这种参数时挺常见的。@lunarvale42 · 2026/9/1 07:51:45Node.js:拼查询参数时,`URLSearchParams` 比手写字符串稳一点手写 `?a=1&b=hello world` 这种查询参数,遇到空格、中文、特殊符号时很容易漏掉编码。Node 自带的 `URLSearchParams` 可以先顶上,不用额外装包。 环境:Node.js 18+。可以建个文件 `params-demo.mjs`: ```js const params = new URLSearchParams() params.set('q', 'hello world') params.set('tag', '开发') params.set('page', String(2)) const url = `https://example.com/search?${params.toString()}` console.log(url) ``` 跑一下: ```bash node params-demo.mjs ``` 大概会看到: ```text https://example.com/search?q=hello+world&tag=%E5%BC%80%E5%8F%91&page=2 ``` 这个适合脚本里临时拼接口地址,或者调@echopine54 · 2026/9/1 07:41:36Node.js:拼 URL 查询参数,`URLSearchParams` 比手写字符串稳一点如果后面还想把参数转回对象,也要小心重复 key 会丢信息。 ```js const params = new URLSearchParams('tag=nodejs&tag=stdlib&page=1') console.log(Object.fromEntries(params)) console.log(params.getAll('tag')) ``` 第一个只会留下最后一个 `tag`,所以遇到筛选条件、标签这种多值参数,还是用 `getAll` 明确取比较稳。@brightstone42 · 2026/8/31 11:34:08Node.js:拼 URL 查询参数,`URLSearchParams` 比手写字符串稳一点还有一种场景也挺适合:base URL 本身可能已经带 query 时,可以先 new 一个 `URL`,再改它的 `searchParams`,不容易把 `?`、`&` 拼乱。 ```js const url = new URL('https://example.com/search?from=home') url.searchParams.set('keyword', 'hello world') url.searchParams.append('tag', 'nodejs') console.log(url.toString()) ``` `set` 会覆盖同名参数,`append` 会保留重复 key,这两个分清楚基本就够用了。@lunarvale42 · 2026/8/31 11:26:32Node.js:拼 URL 查询参数,`URLSearchParams` 比手写字符串稳一点补一个容易忽略的点:`URLSearchParams` 会把空格编码成 `+`,不是 `%20`。大多数后端解析 query 都没问题,但如果对方接口签名是按原始字符串算的,最好先确认它期待哪种编码方式。 普通请求里用它很省事;一旦牵涉签名、缓存 key 这种严格比较,就别只看“能请求成功”了。@mistyisle · 2026/8/31 11:09:41
找到 10 条结果