在前端开发中,我们常常需要向后端发送 HTTP 请求。这时,我们需要将参数封装成一个对象或字符串,并作为请求的一部分发送到服务器。如果有很多参数需要传递,手动拼接 URL 或表单数据十分麻烦。npm 包 params 可以帮助我们轻松地将参数转换为 URL 查询字符串或表单数据。
安装
在开始使用 params 之前,我们需要先安装它。可以使用 npm 或 yarn 进行安装:
npm install params
或
yarn add params
安装完成后,我们就可以在项目中引入它了。
const params = require('params');
或者使用 ES6 模块语法:
import params from 'params';
API
params 的主要 API 如下:
params.stringify(data, [options])
将对象序列化为 URL 查询字符串。其中,data
是待序列化的对象,options
是可选的序列化选项。常用的选项有:
encode
是否对参数进行 URL 编码,默认值为true
。arrayFormat
数组序列化方式,可取值为'brackets'
、'indices'
或'repeat'
,默认为'indices'
。indices
当arrayFormat
为'indices'
时,表示数组的索引是否包含在生成的键中。默认值为true
。
示例代码:
-- -------------------- ---- ------- ----- ---- - - ----- --------- ----- ---------- ---------- ----- - -------- ------------ -------- ----------- - -- ----- ----------- - ---------------------- - ------------ ----------- -------- ----- --- ------------------------- -- ---------------------------------------------------------------------------------------
params.parse(str, [options])
将 URL 查询字符串解析为对象。其中,str
是待解析的字符串,options
是可选的解析选项。常用的选项有:
decode
是否对字符串进行 URL 解码,默认值为true
。arrayFormat
数组序列化方式,可取值为'brackets'
、'indices'
或'repeat'
,默认为'indices'
。parseArrays
是否将数组元素解析为数组格式而非字符串格式,默认值为false
。
示例代码:
-- -------------------- ---- ------- ----- --- - ------------------------------------------------------------------------------------------ ----- ---- - ----------------- - ------------ ----------- ------------ ---- --- ------------------ -- - -- ----- --------- -- ----- ---------- ---------- -- ----- - -- -------- ------------ -- -------- ----------- -- - -- -
params.encode(str)
对字符串进行 URL 编码。
示例代码:
const str = 'a+b+c'; const encodedStr = params.encode(str); console.log(encodedStr); // a%2Bb%2Bc
params.decode(str)
对字符串进行 URL 解码。
示例代码:
const str = 'a%2Bb%2Bc'; const decodedStr = params.decode(str); console.log(decodedStr); // a+b+c
应用示例
假设我们有一个搜索表单,其中包含两个输入框:关键字和分类。我们需要将用户输入的内容转换为查询字符串,并在发送 HTTP 请求时作为参数传递给后端。
HTML 代码如下:
-- -------------------- ---- ------- ------ ------ ----------- -------------- --------------------- ------- ---------------- ------- ---------------------- ------- ---------------------- ------- ----- - ----------------------------------------------------------- -------- ----------------------------------------------------------------------------------