服务粉丝

我们一直在努力
当前位置:首页 > 财经 >

8 个实用的 NPM 技术

日期: 来源:web前端开发收集编辑:

英文 | https://javascript.plainenglish.io/8-useful-javascript-coding-techniques-that-you-should-use-d5d63f7c7037

翻译 | web前端开发(ID:web_qdkf)


这篇文章,跟大家分享8个NPM的技术,希望这些小技巧能够帮助到你,我们现在就开始吧。

1.复制内容到剪贴板

几乎所有的网站都有存在,因为它可以让用户更方便地使用功能。但令人难以置信的是,只需要 6 行有效代码就可以做到这一点。

const copyToClipboard = (content) => {  const textarea = document.createElement("textarea")
textarea.value = content document.body.appendChild(textarea) textarea.select() document.execCommand("Copy") textarea.remove()}

2.比较应用程序版本

我经常遇到这个要求。如果某个APP的版本大于x.y.z,则执行A逻辑,否则执行B逻辑。

其实就是比较app版本的问题。

const compareVersion = (version1, version2) => {  const arr1 = version1.split(".")  const arr2 = version2.split(".")  const len1 = arr1.length  const len2 = arr2.length  const minLength = Math.min(len1, len2)
for (let i = 0; i < minLength; i++) { let diff = parseInt(arr1[i], 10) - parseInt(arr2[i], 10) if (diff !== 0) return diff } return len1 < len2 ? -1 : len1 > len2 ? 1 : 0}
const v1 = '2.0.1'const v2 = '2.1.0'const v3 = '2.1.0'
console.log(compareVersion(v1, v2)) // -1 V1 is less than V2console.log(compareVersion(v2, v1)) // 1 V2 is greater than v1console.log(compareVersion(v2, v3)) // 0 V2 equals V3

3.使用URLSearchParams获取URL的搜索参数

那是前端开发人员经常做的事情,我们通常使用正则表达式来做,但现在我们有一个更简单的方法......

const getQueryByName = (name) => {  const query = new URLSearchParams(location.search)  return decodeURIComponent(query.get(name))}// url: https://medium.com/?name=fatfish&age=100const name = getQueryByName('name') // fatfishconst age = getQueryByName('age') // 100const gender = getQueryByName('gender') // null

4.平滑滚动到页面顶部

如何让页面平滑滚动到顶部?

Codepen地址:https://codepen.io/qianlong/pen/NWYpqZq

const scrollToTop = () => {  const c = document.documentElement.scrollTop || document.body.scrollTop
if (c > 0) { window.requestAnimationFrame(scrollToTop) window.scrollTo(0, c - c / 8) }}

5.获取当前页面的滚动距离

有时候不需要平滑滚动到顶部,只需要获取滚动条滚动到多远就可以了。

const getScrollPosition = (el = window) => ({  x: el.pageXOffset !== undefined ? el.pageXOffset : el.scrollLeft,  y: el.pageYOffset !== undefined ? el.pageYOffset : el.scrollTop,})
getScrollPosition() // { x: 0, y: 215 }

6.判断当前设备是Android还是iOS

function getOSType() {  let u = navigator.userAgent,    app = navigator.appVersion  let isAndroid = u.indexOf("Android") > -1 || u.indexOf("Linux") > -1  let isIOS = !!u.match(/\(i[^]+( U)? CPU.+Mac OS X/)
if (isIOS) { return 0 } else if (isAndroid) { return 1 } else { return 2 }}
getOSType() // 0

7.货币格式化

货币格式化的方式有很多种,比如这两种方式。

第一种方式:

const formatMoney = (money) => {  return money.replace(new RegExp(`(?!^)(?=(\\d{3})+${money.includes('.') ? '\\.' : '$'})`, 'g'), ',')  }
formatMoney('123456789') // '123,456,789'formatMoney('123456789.123') // '123,456,789.123'formatMoney('123') // '123'

第二种方式:

正则表达式让我们太头疼了,不是吗?

所以我们需要找到一种更简单的方法来格式化货币。

const formatMoney = (money) => {  return money.toLocaleString()}
formatMoney(123456789) // '123,456,789'formatMoney(123456789.123) // '123,456,789.123'formatMoney(123) // '123'

我喜欢这种方式,它简单易懂。

8.进入和退出全屏

如何将网页设置为全屏模式?我在 Codepen 中写了一个小例子,Codepen:https://codepen.io/qianlong/pen/wvmJdXb

你可以试试。

// Enter full screenfunction fullScreen() {  let el = document.documentElement  let rfs = el.requestFullScreen || el.webkitRequestFullScreen || el.mozRequestFullScreen || el.msRequestFullScreen  //typeof rfs != "undefined" && rfs  if (rfs) {    rfs.call(el)  } else if (typeof window.ActiveXObject !== "undefined") {    let wscript = new ActiveXObject("WScript.Shell")    if (wscript != null) {      wscript.SendKeys("{F11}")    }  }}// Exit full screenfunction exitScreen() {  let el = document  let cfs = el.cancelFullScreen || el.webkitCancelFullScreen || el.mozCancelFullScreen || el.exitFullScreen  //typeof cfs != "undefined" && cfs  if (cfs) {    cfs.call(el)  } else if (typeof window.ActiveXObject !== "undefined") {    let wscript = new ActiveXObject("WScript.Shell")    if (wscript != null) {      wscript.SendKeys("{F11}")    }  }}

最后总结

以上就是我今天跟你分享的全部内容,如果觉得有用的话,请点赞我,关注我,并将这篇文章分享给你的朋友,也许能够帮助到他。

最后,感谢你的阅读,编程愉快!

学习更多技能

请点击下方公众号

相关阅读

  • 安利3本最近准备看的高分好书!

  • 设为 星 标 永不失联~~生命的过程就是经历的过程。一本好书,所展开的世界是无穷无尽的。翻开书页,和不同时空的自己对话。那些关于时光的思考,帮你戒掉浮躁,静下心来,收获未来成
  • ETF基础知识篇(七)丨货币ETF

  • 01什么是货币ETF?货币ETF也称交易型货币市场基金,是一种既可在交易所二级市场买卖又可以在交易所场内申购赎回的货币市场基金。它可以用闲置证券保证金进行申购和赎回,还可以像
  • 23考研押题卷电子版PDF大量更新(截至12.11)

  • ⚠️截止目前押题卷更新情况:⭕英语:⭕数学:⭕政治:⭕教育学311/333:⭕管综199:⭕经综396:⭕计算机408:⭕西综:后期押题卷,包括某四等,我们都会汇总在一个文件当中,获取方式看下方
  • 23考研押题卷电子版PDF大量更新(截至12.12)

  • ⚠️截止目前押题卷更新情况:⭕英语:⭕数学:⭕政治:⭕教育学311/333:⭕管综199:⭕经综396:⭕计算机408:⭕西综:后期押题卷,包括某四等,我们都会汇总在一个文件当中,获取方式看下方
  • 巴西央行宣布自3月起试水数字货币

  • 巴西中央银行行长罗伯托·坎波斯·内托当地时间27日表示,巴西央行将在3月施行数字货币试点项目,并于2024年底在国内推广。内托当日在首都巴西利亚一所高校发表演说时
  • OKR是枷锁还是装饰品?聊聊如何用OKR助力设计

  • 前段时间有些忙,许多时间和精力都花在了团队例行的年中总结与开启下半年的目标计划,因此也没在日常设计生活中擦出什么值得分享的观点与大家探讨。最近提交完OKR,回想起自己待
  • 想要稳稳的幸福?告诉你债基投资的正确方式!

  • 想要稳稳的幸福?让我来告诉你债基投资的正确方式!在买债基的路上,你是不是也有这些小困扰1. 上周赎回债基,这波操作做对了吗?2. 网红债基还能买吗?3. 3000+只债基,怎么挑到好的标的

热门文章

  • “复活”半年后 京东拍拍二手杀入公益事业

  • 京东拍拍二手“复活”半年后,杀入公益事业,试图让企业捐的赠品、家庭闲置品变成实实在在的“爱心”。 把“闲置品”变爱心 6月12日,“益心一益·守护梦想每一步”2018年四

最新文章

  • 8 个实用的 NPM 技术

  • 英文 | https://javascript.plainenglish.io/8-useful-javascript-coding-techniques-that-you-should-use-d5d63f7c7037翻译 | web前端开发(ID:web_qdkf)这篇文章,跟大家分享8
  • 【每日一练】108—一个登录页面的实现

  • 写在前面今天我们来写一个登录页面,这个在很多企业系统上都会用到,当然,一些网站上也用应用到,所以,它的应用场景还是很多的。现在,我们一起来看一下它的最终效果:以下是实现的源码
  • 一些顶级 JavaScript 技巧汇总

  • 英文 | https://medium.com/stackanatomy/top-javascript-shorthand-techniques-64920294f0c8JavaScript包含各种对典型编程思想有用的一些技巧,在实际开发中,我们通常希望减
  • 安利3本最近准备看的高分好书!

  • 设为 星 标 永不失联~~生命的过程就是经历的过程。一本好书,所展开的世界是无穷无尽的。翻开书页,和不同时空的自己对话。那些关于时光的思考,帮你戒掉浮躁,静下心来,收获未来成
  • 所有推荐过的书单合集,一次性打包带走!

  • 大家好,我是小K!众所周知,我是一个热爱读书、热爱分享的人,一路走来,从微博到公众号,整理了太多了资源,也分享了太多的资源,人送外号信息检索小能手,几乎没有什么资料是我找不到的,关