前端事件交互,有的时候会用到url作为参数,然而你会发现直接把url当个字符串来处理会发现有很多的局限性,比如说我想添加一个参数什么的,或者进行个解析比较麻烦。而且有的时候解析url有的时候因为特殊符号什么的也是个问题。于是有了JS的url的编码和解码。

想知道url的解码和解码是什么样的,我可以提供一个在线工具的地址,你随便粘贴一个网站尝试一下把这个url进行编码。看一下编码后会是什么样的:

在线url编码:

JS如何对url进行编码和解码?
我介绍两组JS的URL的编码和解码方法:
encodeURI和decodeURI:这个在堆URL进行解码的过程中,对其他一些在网址中有特殊含义的符号“; / ? : @ & = + $ , #,不会进行编码。很多在线编码工具其实就是用的这种方式,因为他对符号输出是每个字节前加一个%,而且你也能看到这些符号没有进行处理。

encodeURIComponent()和decodeURIComponent():这个我在做小程序的时候用的比较多,就是把带参数的url进行编码,他把特殊符号也进行处理。其实看自己需要,现在想一想当时用上一种也可以,两者区别就是对特殊符号的处理和不处理。

url的适用场景
特殊符号的问题使得你只把URL当做字符串有自己的局限性,页面的跳转有的时候需要url作为参数,从A页面到B页面,然后再返回的过程中,有的时候是需要在URL上添加参数作为返回的处理。比如支付后支付页面跳转到订单详情页,你要把参数传回去告诉详情页是否支付成功,状态变化什么的。你不可能什么都要发送个请求,有些不需要后台处理或者查询返回结果你自己就可以算出,提高交互。

同样URL作为参数,进行编码解码有的时候可以用这个做个工具类公共组件,可以对一些共通的进行解耦,比如说我们小程序对于地址列表查询以及地址列表的返回,N个页面N个参数不便于管理,可以之间传一个url编码后的作为参数,返回时直接添加地址参数拼接返回过去。