WEB前端2020年更新实用代码段(持续更新)(一)

简介: 有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。

1、使用解构获取json数据


let jsonData = {
id: 1,
status: "OK",
data: ['a', 'b']
};
let { id, status, data: number } = jsonData;
console.log(id, status, number ); // 1,“OK”,[a, b]


2、使用扩展字符串合并数组


let a1 = [1,2];
let a2 = [3,4];
console.log([...a1,...a2]) // [1,2,3,4]


3、使用Set实现数组去重


let arr = [1,2,2,3];
console.log([... new Set(arr)]) // [1,2,3]


4、使用apply改变this指向


let name = "maomin";
let obj = {
  name:'xqm',
  say:function(year,place){
    console.log(this.name+' is '+year+' born from '+place);
  }
};
let say = obj.say;
setTimeout(function(){
  say.apply(obj,['1996','China']);
},0)


5、使用解构快速交换变量值


let a = 10;
let b = 20;
[a,b] = [b,a];


6、使用解构实现多变量赋值


let [a,b,c]=[1,2,3];


7、找到数组中的最大值


console.log(Math.max(...[14, 3, 77, 30])); //77


8、实现数组内值遍历计算


const list = [1,2,3,4,5];
  const newList = list.map(item=>console.log(item*item)) // 1 4 9 16 25


9、模板字符串


let x = '我是x';
let y = '我是y';
console.log(`${x} + ${y}`) // 我是x + 我是y


10、实现防抖函数


原理: 在事件被触发n秒后再执行回调,如果在这n秒内又被触发,则重新计时。适用场景:


  1. 按钮提交场景:防止多次提交按钮,只执行最后提交的一次;
  2. 服务端验证场景:表单验证需要服务端配合,只执行一段连续的输入事件的最后一次;
  3. 搜索联想词场景;


代码:


// 防抖
const debounce = (fn,delay)=>{
let timer = null;
return (...args)=>{
  clearTimeout(timer);
  timer = setTimeout(()=>{
  fn.apply(this,args)
},delay)
}
}


实例:


<body>
    <input type="text" class="int" onkeydown="down()">
</body>
<script>
    function down() {
        debounce(() => {
            console.log('1')
        }, 2000)()
    }
    const debounce = (fn, delay) => {
        let timer = null;
        return (...args) => {
            clearTimeout(timer);
            timer = setTimeout(() => {
                fn.apply(this, args)
            }, delay)
        }
    }
</script>


11、实现节流函数


原理: 规定在一单位时间内。只能触发一次函数。如果这个单位时间内触发多次函数,只有一次生效。适用场景:


  1. 拖拽场景:固定时间只执行一次,防止超高频次触发位置变动;
  2. 缩放场景:监控浏览器resize;
  3. 动画场景:避免短时间内多次触发动画引起的性能问题。


代码:


// 节流函数
    const throttle = (fn, delay = 500) => {
        let flag = true;
        return (...args) => {
            if (!flag) return;
            flag = false;
            setTimeout(() => {
                fn.apply(this, args)
            }, delay);
        }
    }


实例:


// 节流函数
    const throttle = (fn, delay = 500) => {
        let flag = true;
        return (...args) => {
            if (!flag) return;
            flag = false;
            setTimeout(() => {
                fn.apply(this, args)
            }, delay);
        }
    }
    // 浏览器窗口缩放
    window.onresize=function(){
        throttle(()=>{
            console.log(1)
        })()
    }


12、解析URL params为对象


// let url = document.location.toString();
let url = 'https://www.maomin.club/?user=maomin&nn=1111';
function GetUrlParam(url){
&emsp;&emsp;let arrObj = url.split("?");
&emsp;&emsp;let params = Object.create(null)
&emsp;&emsp;if (arrObj.length > 1){
&emsp;&emsp;&emsp;&emsp;arrObj = arrObj[1].split("&");
&emsp;&emsp;&emsp;&emsp;arrObj.forEach(item=>{
&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;item = item.split("=");
&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;params[item[0]] = item[1]
&emsp;&emsp;&emsp;&emsp;})
&emsp;&emsp;}
&emsp;&emsp;return params;
}
console.log(GetUrlParam(url)) // {user: "maomin", nn: "1111"}


13、Vue常用修饰符


修饰符可以同时使用多个,但是可能会因为顺序而有所不同。 用v-on:click.prevent.self会阻止所有的点击,而 v-on:click.self.prevent只会阻止对元素自身的点击。也就是从左往右判断


(1)、表单修饰符


1、.lazy


<div>
   <input type="text" v-model.lazy="value">
   <p>{{value}}</p>
</div>


只有当我们光标离开输入框的时候,它才会更新视图,相当于在onchange事件触发更新。


2、.trim

<input type="text" v-model.trim="value">


过滤一下一些输入完密码不小心多敲了一下空格的兄弟输入的内容。需要注意的是,它只能过滤首尾的空格!首尾,中间的是不会过滤的。


3、.number


<input type="text" v-model.number="value">


如果你先输入数字,那它就会限制你输入的只能是数字。 如果你先输入字符串,那它就相当于没有加.number。


(2)、事件修饰符:


4、.stop


<!-- 只打印1 -->
<div @click="shout(2)">
  <button @click.stop="shout(1)">ok</button>
</div>


由于事件冒泡的机制,我们给元素绑定点击事件的时候,也会触发父级的点击事件。 一键阻止事件冒泡,简直方便得不行。相当于调用了event.stopPropagation()方法。


5、.prevent


<!-- 提交事件不再重载页面 -->
<form v-on:submit.prevent="onSubmit"></form>


用于阻止事件的默认行为,例如,当点击提交按钮时阻止对表单的提交。相当于调用了event.preventDefault()方法。


6、.self


<div class="blue" @click.self="shout(2)">
  <button @click="shout(1)">ok</button>
</div>


只当事件是从事件绑定的元素本身触发时才触发回调。


7、.once


<!-- 只能shout一次 -->
<button @click.once="shout(1)">ok</button>


绑定了事件以后只能触发一次,第二次就不会触发。


8、.capture


<!-- 打印顺序 1 2 4 3 -->
<div @click.capture="shout(1)">
      obj1
      <div @click.capture="shout(2)">
        obj2
        <div @click="shout(3)">
          obj3
          <div @click="shout(4)">
            obj4
          </div>
        </div>
      </div>
    </div>


1和2为事件捕获,从外向内,4和3为事件冒泡,从内向外。 事件触发从包含这个元素的顶层开始往下触发,也就是事件捕获。



相关文章
|
2月前
|
前端开发 JavaScript 安全
前端性能调优:HTTP/2与HTTPS在Web加速中的应用
【10月更文挑战第27天】本文介绍了HTTP/2和HTTPS在前端性能调优中的应用。通过多路复用、服务器推送和头部压缩等特性,HTTP/2显著提升了Web性能。同时,HTTPS确保了数据传输的安全性。文章提供了示例代码,展示了如何使用Node.js创建一个HTTP/2服务器。
69 3
|
2月前
|
前端开发 JavaScript
探索现代Web应用的微前端架构
【10月更文挑战第40天】在数字时代的浪潮中,Web应用的发展日益复杂多变。微前端架构作为一种新兴的设计理念,正逐步改变着传统的单一前端开发模式。本文将深入探讨微前端的核心概念、实现原理及其在实际项目中的应用,同时通过一个简单的代码示例,揭示如何将一个庞大的前端工程拆分成小而美的模块,进而提升项目的可维护性、可扩展性和开发效率。
|
2月前
|
前端开发 JavaScript 搜索推荐
HTML与CSS在Web组件化中的核心作用及前端技术趋势
本文探讨了HTML与CSS在Web组件化中的核心作用及前端技术趋势。从结构定义、语义化到样式封装与布局控制,两者不仅提升了代码复用率和可维护性,还通过响应式设计、动态样式等技术增强了用户体验。面对兼容性、代码复杂度等挑战,文章提出了相应的解决策略,强调了持续创新的重要性,旨在构建高效、灵活的Web应用。
45 6
|
2月前
|
消息中间件 前端开发 JavaScript
探索微前端架构:构建现代Web应用的新策略
本文探讨了微前端架构的概念、优势及实施策略,旨在解决传统单体应用难以快速迭代和团队协作的问题。微前端允许不同团队独立开发、部署应用的各部分,提升灵活性与可维护性。文中还讨论了技术栈灵活性、独立部署、团队自治等优势,并提出了定义清晰接口、使用Web组件、状态管理和样式隔离等实施策略。
|
2月前
|
监控 前端开发 JavaScript
探索微前端架构:构建可扩展的现代Web应用
【10月更文挑战第29天】本文探讨了微前端架构的核心概念、优势及实施策略,通过将大型前端应用拆分为多个独立的微应用,提高开发效率、增强可维护性,并支持灵活的技术选型。实际案例包括Spotify和Zalando的成功应用。
|
2月前
|
前端开发 安全 应用服务中间件
前端性能调优:HTTP/2与HTTPS在Web加速中的应用
【10月更文挑战第26天】随着互联网的快速发展,前端性能调优成为开发者的重要任务。本文探讨了HTTP/2与HTTPS在前端性能优化中的应用,介绍了二进制分帧、多路复用和服务器推送等特性,并通过Nginx配置示例展示了如何启用HTTP/2和HTTPS,以提升Web应用的性能和安全性。
42 3
|
2月前
|
前端开发 JavaScript API
前端框架新探索:Svelte在构建高性能Web应用中的优势
【10月更文挑战第26天】近年来,前端技术飞速发展,Svelte凭借独特的编译时优化和简洁的API设计,成为构建高性能Web应用的优选。本文介绍Svelte的特点和优势,包括编译而非虚拟DOM、组件化开发、状态管理及响应式更新机制,并通过示例代码展示其使用方法。
67 2
|
3月前
|
人工智能 前端开发
2024 川渝 Web 前端开发技术交流会「互联」:等你来报名!
2024 川渝 Web 前端开发技术交流会「互联」:等你来报名!
2024 川渝 Web 前端开发技术交流会「互联」:等你来报名!
|
3月前
|
存储 前端开发 JavaScript
从 Web 2.0 到 Web 3.0:前端开发的历史与未来
【10月更文挑战第4天】本文探讨了从 Web 2.0 到 Web 3.0 的前端开发演变过程。Web 2.0 时代,前端开发者从静态网页设计走向复杂交互,技术框架如 jQuery、React 和 Vue 带来了巨大的变革。而 Web 3.0 以区块链技术为核心,带来了去中心化的互联网体验,前端开发者面临与区块链交互、去中心化身份验证、分布式存储等新挑战。文章总结了 Web 2.0 和 Web 3.0 的核心区别,并为开发者提供了如何应对新技术的建议,帮助他们在新时代中掌握技能、设计更安全的用户体验。
77 0
从 Web 2.0 到 Web 3.0:前端开发的历史与未来
|
2月前
|
监控 前端开发 JavaScript
前端技术探索:构建高效、可维护的Web应用
【10月更文挑战第23天】前端技术探索:构建高效、可维护的Web应用
57 0