资讯专栏INFORMATION COLUMN

前端常用的小函数(1)---解析url

godlong_X / 2312人阅读

摘要:写作目的知识总结,结交一些前端的小伙伴。需求请求某些后端的接口,需要前端提供一些特定的请求参数。注意事项解析的是否为普通的有时候也会解析带的。

写作背景

</>复制代码

  1. 算上实习时间,已经学习前端两年了。知识结构很乱,需要有一个网络化的总结。

写作目的

</>复制代码

  1. 知识总结,结交一些前端的小伙伴。

需求

</>复制代码

  1. 请求某些后端的接口,需要前端提供一些特定的请求参数。

注意事项

</>复制代码

  1. 1.解析的是否为普通的url (有时候也会解析带hash的url)。
    2.url 中是否有空格等字符串

知识罗列

</>复制代码

  1. 1.数组的扁平化处理
    2.正则匹配
    3.模板字符串拼接

</>复制代码

  1. $(function() {
  2. const $input = $(".input");
  3. const $queriesContainer = $(".queries-container");
  4. const testUrl = "url";
  5. const trimUrl = str => str.replace(/s+/g, "");
  6. const getUrlQueries = u => {
  7. // 去除url 中的空格
  8. const url = trimUrl(u);
  9. if (!(url && url.includes("?"))) return "";
  10. const startPoint = url.indexOf("?") + 1;
  11. // 注意React使用hash router
  12. const endPoint = url.indexOf("#") > -1 ? url.indexOf("#") : url.length + 1;
  13. const urlSegment = url.slice(startPoint, endPoint);
  14. return urlSegment.split("&").reduce((result, item) => {
  15. const tmp = item.split("=");
  16. result[tmp[0]] = tmp[1];
  17. return result;
  18. }, {});
  19. };
  20. const renderUrlQueries = queries =>
  21. Object.entries(queries).reduce((result, item, currentIndex) => {
  22. result += `
  23. ${currentIndex +
  24. 1}.  ${
  25. item[0]
  26. } : ${item[1]}
  27. `;
  28. return result;
  29. }, "");
  30. const getRender = () => {
  31. const url = $input.val();
  32. const queries = getUrlQueries(url);
  33. $queriesContainer.html(renderUrlQueries(queries));
  34. };
  35. const init = () => {
  36. $input.val(testUrl);
  37. getRender();
  38. };
  39. init();
  40. $input.on("input", () => getRender());
  41. });

在线demo
不足

</>复制代码

  1. 1.场景考虑的不够充分。
    2.没有完全使用ES6(indexOf->includes).

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/52838.html

相关文章

  • 前端常用的小函数(1)---解析url

    摘要:写作目的知识总结,结交一些前端的小伙伴。需求请求某些后端的接口,需要前端提供一些特定的请求参数。注意事项解析的是否为普通的有时候也会解析带的。 写作背景 算上实习时间,已经学习前端两年了。知识结构很乱,需要有一个网络化的总结。 写作目的 知识总结,结交一些前端的小伙伴。 需求: 请求某些后端的接口,需要前端提供一些特定的请求参数。 注意事项: 1.解析的是否为普通的url (有时候也会...

    shevy 评论0 收藏0
  • 微信小程序快速开发:从注册账号到小程序上架

    摘要:写在前面自从微信小程序功能发布后,我就一直关注着小程序的动向,然而限于学业繁忙,总是没有太多的时间去学习。准备工作注册微信小程序账号点击传送门立马注册微信小程序账号。微信官方一般会在日之内完成审核,我新注册的小程序审核用了两天时间。 写在前面 自从微信小程序功能发布后,我就一直关注着小程序的动向,然而限于学业繁忙,总是没有太多的时间去学习。大二逐渐学习了Vuejs,被其简洁的设计所吸引...

    CHENGKANG 评论0 收藏0
  • 前端最实用书签(持续更新)

    摘要:前言一直混迹社区突然发现自己收藏了不少好文但是管理起来有点混乱所以将前端主流技术做了一个书签整理不求最多最全但求最实用。 前言 一直混迹社区,突然发现自己收藏了不少好文但是管理起来有点混乱; 所以将前端主流技术做了一个书签整理,不求最多最全,但求最实用。 书签源码 书签导入浏览器效果截图showImg(https://segmentfault.com/img/bVbg41b?w=107...

    sshe 评论0 收藏0
  • 如果你在2018面试前端,那这篇文章最好看一看!

    摘要:优点是继承了父类的模板,又继承了父类的原型对象,缺点就是父类实例传参,不是子类实例化传参,不符合常规语言的写法使用的方式继承了父类的模板,不继承了父类的原型对象。优点是方便了子类实例传参,缺点就是不继承了父类的原型对 github版本戳,求star,follow 前端目录 HTML相关 CSS相关 JAVASCRIPT相关 DOM相关 HTTP相关 VUE相关 算法相关 网络安全相关...

    Guakin_Huang 评论0 收藏0

发表评论

0条评论

godlong_X

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<