Skip to content

Latest commit

 

History

History
41 lines (30 loc) · 1.03 KB

File metadata and controls

41 lines (30 loc) · 1.03 KB

URL Parameters

Task: "Parse and build URL query strings."

Without Ponytail

npm install query-string
# 4.5 kB gzipped, 3.5M downloads/week
import qs from "query-string";

// Parse
const params = qs.parse(location.search);
// → { page: "2", sort: "name", tags: ["js", "css"] }

// Build
const url = qs.stringify({ page: 2, sort: "name", tags: ["js", "css"] });
// → "page=2&sort=name&tags=js&tags=css"

With Ponytail

// ponytail: URLSearchParams does this
const params = new URLSearchParams(location.search);

// Read
params.get("page");         // "2"
params.getAll("tags");      // ["js", "css"]

// Build
const out = new URLSearchParams({ page: 2, sort: "name" });
out.append("tags", "js");
out.append("tags", "css");
out.toString(); // "page=2&sort=name&tags=js&tags=css"

1 dependency → 0 dependencies. URLSearchParams is in every browser and in Node.js since v10. It handles encoding, repeated keys, and iteration. The package was a polyfill for an API that has shipped everywhere for years.