前端开发小技巧分享

使用 URL 简化 url 操作

获取 url 的相关信息

直接获取 url 的相关信息,可以使用 URL 接口来获取

为 url 去除某个/某些参数

比如给链接删除一个 channel 参数

js 复制代码
const removeUrlParam = (url, param) => {
  const urlObj = new URL(url);
  urlObj.searchParams.delete(param);
  return urlObj.toString();
};
removeUrlParam('https://juejin.cn/hot?channel=alibase&category=javascript', 'channel')
// 'https://juejin.cn/hot?category=javascript'

可以扩展一下使得它可以批量删除 url 中的参数,比如给链接中批量删除 channel 和 category 参数,传入一个数组即可

js 复制代码
const removeUrlParams = (url, params) => {
  const urlObj = new URL(url);
  const paramsToDelete = Array.isArray(params) ? params : [params];

  paramsToDelete.forEach(param => {
    urlObj.searchParams.delete(param);
  });

  return urlObj.toString();
};
removeUrlParams('https://juejin.cn/hot?channel=alibase&category=javascript', ['channel', 'category']);
// 'https://juejin.cn/hot'

为 url 添加某些参数

比如给链接中添加 channel 和 category 参数

js 复制代码
const addUrlParams = (url, params) => {
  const urlObj = new URL(url);
  Object.entries(params).forEach(([key, value]) => {
    urlObj.searchParams.set(key, value);
  });
  return urlObj.toString();
};
addUrlParams('https://juejin.cn/hot', { channel: 'alibase', category: 'javascript' });
// 'https://juejin.cn/hot/articles?channel=alibase&category=javascript'

获取url的某个参数

比如获取链接中的 channel 参数

js 复制代码
const getUrlParam = (url, key) => {
  return new URLSearchParams(new URL(url).search).get(key)
}
getUrlParam('https://juejin.cn/hot?channel=alibase&category=javascript', 'channel')
// alibase

页面返回回到顶部小技巧

不知道你有没有遇到过一个场景:在页面跳转之后操作页面返回,页面还会停留在原来滚动到的位置,即使刷新页面,依旧不会回到顶部。

我们在遇到这个问题的时候,很可能会尝试在页面每次加载的时候,去使用 js 去手动操作回到顶部。

但是,我想介绍一种更为优雅的处理方式:

我们可以使用 history 的滚动恢复属性:scrollRestoration

它有两个可选项:auto 和 manual

MDN文档developer.mozilla.org/zh-CN/docs/...

  1. manual (不记住滚动位置)
js 复制代码
window.history.scrollRestoration = "manual"

如下图,我们将 history 的 scrollRestoration 属性设置为 manual。当我们将A页面滑动到底部,点击跳转到B页面,返回之后,页面是可以重新回到顶部的。

  1. auto(记住上一次滚动位置,一般浏览器默认是 auto)
js 复制代码
window.history.scrollRestoration = "auto"

如下图,我们将 history 的 scrollRestoration 属性设置为 auto。当我们将A页面滑动到底部,点击跳转到B页面,返回之后,页面依然停留在跳转前的位置。

如上所述,你可以通过设置 history 的滚动恢复属性 scrollRestoration 去设置浏览器是否记住当前的滚动位置。

字符串转化为数字

js 复制代码
const numText = '996'
const num = +numText // 996

数字取整

~~可以代替parseInt(),并且~~的效率会更高,btw 个人还是觉得 parseInt 可读性强一点。

js 复制代码
~~3.14159 // 3

复制到剪切板

使用 navigator.clipboard 功能来实现

js 复制代码
const toClipboard = (text)=>{
  navigator.clipboard.writeText(text);
}

css 实现字母大小写

css 复制代码
text-transform: uppercase; // 大写
css 复制代码
text-transform: lowercase; // 小写

比如我们来改一下掘金的首页,直接改 body 的这个 text-transform 属性

GIT

将任意分支的某个 commit 转移到当前分支

shell 复制代码
git cherry-pick commitID

将当前要提交的代码和上一份提交合并为一个提交

shell 复制代码
git commit --amend --no-edit

将当前要提交的代码和上一份提交合并为一个提交,并且修改提交信息

shell 复制代码
git commit --amend -m 'feat:***'

将本地分支重置为远程分支

shell 复制代码
git reset --hard origin/branch

本地有提交,拉取远程代码时建议使用(这样不会 多出一个 Merge 提交)

shell 复制代码
git pull --rebase

后记

本文到此结束,感谢观看,未完待续,后续还会持续分享,欢迎点赞关注。

相关推荐
隐含5 分钟前
webpack打包,把png,jpg等文件按照在src目录结构下的存储方式打包出来。解决同一命名的图片资源在打包之后,重复命名的图片就剩下一个图片了。
前端·webpack·node.js
lightYouUp16 分钟前
windows系统中下载好node无法使用npm
前端·npm·node.js
Dontla17 分钟前
npm cross-env工具包介绍(跨平台环境变量设置工具)
前端·npm·node.js
小妖66620 分钟前
vue2 切换主题色以及单页面好使方法
前端·vue.js·elementui
胡桃夹夹子25 分钟前
【前端优化】vue2 webpack4项目升级webpack5,大大提升运行速度
前端·javascript·vue.js·webpack·性能优化
Stringzhua30 分钟前
JavaScript【7】BOM模型
开发语言·前端·javascript
DT——38 分钟前
ECMAScript 2018(ES2018):异步编程与正则表达式的深度进化
开发语言·javascript·ecmascript
阿幸软件杂货间1 小时前
谷歌浏览器(Google Chrome)136.0.7103.93便携增强版|Win中文|安装教程
前端·chrome
双叶8361 小时前
(C语言)超市管理系统 (正式版)(指针)(数据结构)(清屏操作)(文件读写)(网页版预告)(html)(js)(json)
c语言·javascript·数据结构·html·json
繁依Fanyi1 小时前
Animaster:一次由 CodeBuddy 主导的 CSS 动画编辑器诞生记
android·前端·css·编辑器·codebuddy首席试玩官