Isomorphic Urlencode
核心的出发点为
- 对于浏览器中版本使用纯粹的前端代码实现GBK编码
- 保证能够在Node与Browser环境下实现无缝对切
Usage
Node版本使用了 node-urlencode,基本的接口风格类似于它,不过考虑到浏览器版本是异步返回,因此统一使用了Promise作为异步返回对象:
use npm to install:
npm install --save isomorphic-urlencode
如果你是在浏览器环境中使用,请在HTML文件头部添加:
if (parent._urlEncode_iframe_callback) {
parent._urlEncode_iframe_callback(location.search.split('=')[1]);
//直接关闭当前子窗口
window.close();
}
注意,上面一段代码是将自身作为iframe的加载地址,因此务必放在HTML文件首部。然后在JS代码中使用:
var urlencode = require("isomorphic-urlencode");
urlencode("王下邀月熊").then(function (data) {
console.log(data);
//测试解码
urlencode.decode(data).then(function (data) {
console.log(data);
})
});
urlencode("王下邀月熊", "gbk").then(function (data) {
console.log(data);
//测试解码
urlencode.decode(data, "gbk").then(function (data) {
console.log(data);
})
});
浏览器版本主要基于iframe与form实现,详细原理参考这篇博客
Test
使用node node-urlencode.test.js
来测试Node环境下转码。
使用webpack demo/demo.js demo/demo.dist.js
,然后在浏览器中打开demo.html
,在Console中可以查看运行结果