对el-table-column的简单封装
前言最近在写一个练手项目,接触到了一个问题,就是el-table中的项太多了,我写了一堆el-table-column,导致代码太长了,看起来特别费劲,后来发现了一个让人眼前一亮的方法,瞬间挽救了我的眼睛。
下面就来分享一下!
进入正题上面就是table中的全部项,去除第一个复选框,最后一个操作的插槽,一共七项,也就是说el-table-column一共要写9对。这简直不能忍!
这个图只作举一个例子用,跟上面不产生对应关系。
其中就有5个el-form-item,就这么一大堆。
所以,我当时就想,可不可以用v-for去渲染el-table-column这个标签呢?保留复选框和最后的操作插槽,我们只需要渲染中间的那几项就行。
经过我的实验,确实是可以实现的。
这么写之后就开始质疑之前的我为什么没有这个想法? 要不就能少写一堆💩啦实现代码如下(标签部分):
12345678<el-table-column v-for="item in columns" :key="item.prop" ...
JavaScript | 让数组扁平化的三个方法
什么是扁平化定义: 数组的扁平化,就是将一个嵌套多层的数组 (嵌套有多少层都行)转换为只有一层的数组。
举个例子如下:
12var arr = [1, [2, [3, 4]]];console.log(flatten(arr)) // [1, 2, 3, 4]
其中,faltten函数的作用,就是让数组扁平化。
所以,我们已经知道这个函数起的是什么作用了,下面我们去试着写一个出来!
造轮子的每一天~
递归首先,我们循环这个数组,将不为数组的元素推入result中,如果元素还是数组,那么就使用递归来解决。
123456789101112131415161718// 递归var arr = [1, [2, [3, 4]]];function flatten(arr) { var result = []; for (var i = 0, len = arr.length; i < len; i++) { if (Array.isArray(arr[i])) { result = result.conca ...
恭喜你,Node后端学习经验值+1
前言这次整理了一些写node中遇到的知识点呀,查缺补漏,才能让自己成长的更稳哦!
最近有在参加蓝桥杯web方向的模拟赛哦,来抓一波也在参加的小伙伴~
感想遇到很多都是模块化的写法,之前自己写的时候确实这方面不是很注重,因为自己写自己看,当然怎么舒服怎么来了,它提醒我要**优雅一点**,但是确实,这么写之后香的一批
一些工具知识Koa初始化
1.1 全局安装脚手架工具
123cnpm install -g koa-generator # or yarn global add koa-generator
1.2 进入到项目文件夹目录,执行生成命令
12# koa2+项目名koa2 manager-server
1.3 安装依赖
12345npm install # orcnpm install# oryarn
使用pm2部署Koa项目并实现启动、关闭、自动重启1. 全局安装
1npm install -g pm2
2. 启动项目
进入项目目录,然后使用pm2启动项目。这里要特别注意:启动单文件时用(app.js是项目文件名)
1pm2 start app.js ...
Vue3旅途中的一些小知识
前言最近在学习Vue3跟用node koa写后端,此篇文章是记录一些平时学习中的小知识点,未经整理,以后或许会整理一下。
很乱,但有很多都是当时最直接的想法
整理后也会在此挂上新链接的
还会一直更新
路由跳转的三种方式router-link1<router-link to"/login">去登陆</router-link>
传统跳转(options API)12345678910111213<template> <el-button @click="goLogin">去登陆</el-button></template><script> export default{ name:'home', methods:{ goLogin(){ this.$router.push('/login') } ...
一张图让我重学了函数表达式和函数声明
前言今天下午,在我们微信群里,学弟突然发出来这样一个图:
我点开一看,这不是函数声明跟函数表达式的知识点吗?前一阵子还看过相关文章。
看了几眼,我说到:第一个输出应该是最后的函数声明
然后呢? 没有然后了,真的,犹豫代表着此时的我不会。
看来卷的还不够!
先贴上答案,如果你跟我一样犹豫不决,不知道结果,那么跟我一起再次学习一遍吧。
开始复习首先,确定问题:函数表达式和函数声明的区别,以及困扰住我们的优先问题
函数声明和函数表达式的区别函数声明首先我们要知道,当函数声明与变量命名冲突的时候,要保持着函数声明优先的原则
12345fn();function fn () { console.log(‘fn’);}var fn = 2;
例如这样,不会报错,会输出fn。
如果你不知道为什么调用函数可以在函数声明之前,看这里
是因为javascript代码是一段一段预载的,在一段代码预载完成后,会把函数声明提前到代码段的前面执行,以便在代码段的任何地方调用,所以前面的代码无错
那么,多个同名的函数声明,会如何呢?我们接着来看一下
1234567fn(); ...
简单的了解一下递归
前言在编程中,递归大家肯定都不陌生了吧,今天我们来总结总结有关于递归的东西。
什么?! 你陌生, 去刷题去,完后你就熟了。
递归的定义程序调用自身的编程技巧称为递归
递归长什么样子提到举例子我们肯定第一个想到的就是阶乘。
n! = n * (n-1) * (n-2) * …* 1(n>0)
5! = 5 * 4 * 3 * 2 * 1
阶乘是我们从小学数学就接触的东西,没想到它现在还陪伴着我们🙄
用代码实现一下:
123456function recursion(n) { if (n == 1) return n return n * recursion(n - 1)}console.log(recursion(5)) // 5 * 4 * 3 * 2 * 1 = 120
再举一个例子吧,也是我们初高中课本上的,著名的河内塔问题:
这个问题也是用递归来解决的:
12345678910111213function hanoi( n, p1, p2, p3){ if(1 == n) console.log(' ...
关于promise的使用方法
前言好几天前就想写一个promise的笔记了,但是一直以来就仅仅知道它是用来解决回调地狱问题的,没有一个详细的了解,所以在这几天学习的时候,针对它名下的几个方法,做了一个简要的使用介绍。
promise:这就是我的说明书!
我:可能说的不是太全,多包涵~
先来了解一下它什么是promise?它是一个类?一个对象?一个数组?
我们先打印它来看一看吧:
1console.dir(Promise);
打印完了,我们来正式认识一下它。
promise是一个构造函数,是ES6提出的异步编程解决方案,用来解决回调地狱这种问题,从打印可以看出,它有reject、all、resolve等方法,它的原型上有catch、then等方法。
还有一种说法来自于网络:promise,意为承诺,承诺过一段时间给你结果。promise有三种状态,分别为pending(等待),fulfiled(成功),rejected(失败),状态一旦经过改变,就不会在变。
12345678910111213141516// fn1执行,如果a>10 执行fn2 ,如果a == 11,执行fn3function ...
用那么久this了,来详细了解一下
前言this想必大家都很不陌生了,在例如Vue.js中,各种this,唰唰唰的写,但是有没有遇到this指向出错的问题呢?
我有,我猜应该也会有人跟我一样。
所以,我总结了一些this的基础概念和基本使用在这里,供大家参考。
this出现在哪里全局上下文中的this
console.log(this)来打印出来全局执行上下文中的 this,最终输出的是 window 对象。
所以可以得出这样一个结论:全局执行上下文中的 this 是指向 window 对象的。这也是 this 和作用域链的唯一交点,作用域链的最底端包含了 window 对象,全局执行上下文中的 this 也是指向 window 对象
函数上下文中的this
在全局环境中调用一个函数,函数内部的 this 指向的是全局变量 window。
通过一个对象来调用其内部的一个方法,该方法的执行上下文中的 this 指向对象本身
123456789101112function foo(){ console.log(this)};foo(); // windowlet a = { b:0, fn: ...
网络安全 | XSS基础知识
前言今天又到了我最喜欢的东西,一些网络安全有关的东西。
小时候就特别喜欢黑客,觉得特帅~
大学报计算机相关专业可能也是这方面的原因,但是阴差阳错,没有走网络安全的方向。
今天来说一说,XSS攻击的事情,我有幸,曾经用php搭建的博客(typecho),被我同学挂了脚本,xss了一下,完后,什么什么的,啊,你们懂得。
从那以后,我就知道,网络安全,是不可避免的,是一定要考虑到的,是一定要去了解的东西。
身处网络时代,谁又能置身事外!
什么是xss攻击?XSS又叫CSS(Cross Site Script),跨站脚本攻击:指恶意攻击者往Web页面里插入恶意Script代码,当用户浏览该页之时,嵌入其中Web里面的Script代码会被执行,从而达到恶意攻击用户的目的。
那么,当当前的网页弹出1的时候,我们就知道,这个网页是可以执行js脚本的了,那么我们是不是就可以通过document去盗取一些信息,来帮助我们更进一步的去潜入进去呢?例如盗取一下cookie等。
先来看一下XSS有几种吧:
持久型:一些可以提交的地方,文章评论,个人信息填写等,如果没有加过滤的话,嵌入的脚本 ...
JavaScript的继承,原型和原型链
前言想必,学过 java 和 C++ 的小伙伴们,对于继承这个词应该不陌生,最近我也是一直在巩固JavaScript的知识,今天就来一起学习一下JavaScript里的继承吧。
继承是什么?首先我们要明确继承的概念:
继承就是一个对象可以访问另外一个对象中的属性和方法
B继承了A,所以B也有A具有的color属性,这个是不是我们接触CSS的时候,会有样式继承这个东西,可以这么理解一下下~
继承的目的?继承的目的我觉得殊途同归,都是实现了父类的设计,并且进行代码复用。
继承的方式java、c++等:java是通过class类,C++是通过:
而我们的JavaScript,是通过原型链 ,ES2015/ES6 中引入了 class 关键字,但那只是语法糖,JavaScript 的继承依然和基于类的继承没有一点关系。
原型与原型链JavaScript 只有一种结构:对象。
JavaScript 的每个对象都包含了一个隐藏属性__proto__,我们就把该隐藏属性 proto 称之为该对象的原型 (prototype),proto 指向了内存中的另外一个对象,我们就把 proto 指向 ...