前端
前端骚白
在前端的道路上自由奔波
展开
-
个人开发的Ui框架 Em-ui
参考了element和antd 结合它两的优点有兴趣的小伙伴可以点点星星谢谢了码云地址:https://gitee.com/mengjunl/em-ui原创 2021-12-12 21:30:19 · 842 阅读 · 0 评论 -
外观模式(设计模式)
外观模式: 核心思想找一个中间人去帮你完成一系列事情比如买车 你需要找销售,签合同,选择车型,你闲太麻烦了,这时候找一个中间人帮你去完成function sale () { return '我是销售'}function contract () { return '我是合同'}function model () { return '我是车型'}function intermediator () { return { a1: sale() a2: sale() a3原创 2021-11-09 14:34:56 · 149 阅读 · 0 评论 -
单例模式(设计模式)
很多博客说单例模式每次实例化或者调用都是指向同一个内存地址(函数)1.那单例模式 在项目中又有何作用呢?1.缓存作用(单例又分 懒汉单例或者饿汉单例)下面是我在项目的实际使用, 缓存token与自动续约tokenvar Singleton = function (token) { this.token = token; this.instance = null this.timeTolen = null};Singleton.prototype.getToken = fu原创 2021-11-09 11:04:54 · 130 阅读 · 0 评论 -
Fisher-Yates 随机算法
let array = [1, 2, 3, 4, 5]function shuffle(array) { for(let i = array.length -1; i > 0; i--) { let rowIndex = Math.floor(Math.random() * (i + 1)); swap(array, i, rowIndex); } } function swap(array, i, r原创 2021-06-04 10:32:03 · 129 阅读 · 0 评论 -
柯里化函数
柯里化函数Currying是把接受多个参数的函数变换成接受一个单一参数(最初函数的第一个参数)的函数,并且返回接受余下的参数而且返回结果的新函数的技术(属于闭包一个分支吧)// 普通函数function fn(a, b) { return a + b}// 柯里化function currying(a) { return function (b) { return a + b }}fn(1, 1) // 2currying(1)(2) // 3// 下原创 2021-05-07 08:13:03 · 86 阅读 · 0 评论 -
解决URL参数过长,不清晰
class Parsing { constructor(url) { this.url = url this.parameter = [] } // 添加参数 append(...args) { if(args.length <= 1) { for (let iterator in args[0]) {原创 2021-04-26 14:10:04 · 1641 阅读 · 0 评论 -
子树找父亲,常用于 element 层级 下拉多选回显
// treeArr 需要查找得树// value 查找的idfunction getCascadeIdArr(treeArr,value){ let arr = [] for(let treeData of treeArr){ if(getCascadeValue(treeData,value,arr)){ arr.unshift(treeData.id) return arr }else if(tree.原创 2021-01-22 16:39:10 · 161 阅读 · 0 评论 -
git 拉取多分支代码
git initgit remote add origin git@github.com:XXXX/xxxxxx.git (远程的地址)git fetch origin zhou (远程分支的名称)git checkout zhou----------------------------------------------------多分支也是一样的,再次执行git fetch origin test(远程分支的名称)git checkout test(远程分支的名称)...原创 2020-12-29 13:27:38 · 1981 阅读 · 0 评论 -
React实现动态修改页面样式
此项目有两个文件 tsx文件与css文件1.test.tsx 文件import React from 'react';import './test.css'import ReactDOM from "react-dom";// 标记唯一性let NameData:any = null/* 标题 */// 编辑栏class ModifyData extends React.Component<any, any> { constructor(props: any)原创 2020-11-11 16:51:39 · 1901 阅读 · 0 评论 -
导出excel
import axios from 'axios'function Excels(data, filename) { const link = document.createElement('a') let blob = new Blob([data], {type: 'application/vnd.ms-excel;charset=utf-8'}) let objectUrl = URL.createObjectURL(blob) link.href = objectUrl l原创 2020-10-28 16:46:19 · 845 阅读 · 0 评论 -
Vue封装弹窗
1.创建 EXDialog.vue 文件<template> <transition name="fade"> <div :style="style" class="ex-dialog__wrapper" v-show="visible"> <div> <div> <div class="ex-height-info"><span>{{ title }}</原创 2020-10-28 11:39:49 · 347 阅读 · 0 评论 -
element 动态表头背景色
给表头添加一个 :header-cell-style="getRowClass" // getRowClass 方法名<el-table :data="dataTable" :header-cell-style="getRowClass" border style="width: 100%"> <el-table-column align="center" v-for="(item, index) in datalistsss" :label="item.topName"原创 2020-08-31 11:26:16 · 694 阅读 · 0 评论 -
Vue组件懒加载
方案一(同步)使用 constconst login = ()=>import("./login");方案二(异步)components:{ "login":resolve=>(['./login'],resolve)},注意:1 两个异步加载的页面中分别同步与异步加载同一个组件时会造成资源重用2 在异步加载页面中载嵌入异步加载的组件时对页面会有渲染延时影响 ==== 解决方案 因为在首次加载组件的时候会有加载时间, 出现页面滞后, 所以需要合理的进行页面结构设计,原创 2020-08-24 10:16:16 · 477 阅读 · 0 评论 -
Vue 路由守卫的使用
路由守卫一般用于 校验用户是否登入请看下列代码 /orderDetailMap 表示我需要保护的路由 添加了一个 meta 作为标识符原创 2020-06-18 22:05:17 · 252 阅读 · 0 评论 -
event loop 事件循环(宏任务,微任务)
// js 刚开始加载 算 宏任务console.log('holl')// 宏任务 这个setTimeout 是最后执行的 因为js文件一开始加载就是宏任务,里面再遇到宏任务的情况 不会执行 扔到下一次循环再执行setTimeout(()=> { console.log('endholl')},0)// Promise 微任务 ---- 微任务可以认为跟屁虫 永远跟在当前宏任务的后面Promise.resolve().then(() => { console.log(原创 2020-06-17 18:16:25 · 152 阅读 · 0 评论 -
谈谈学习算法的优势
在公司里面往往也就是几个技术,如果你还停留在调用Api的阶段,你如何能超越别人呢?Api谁不会调用呀,百度一搜全是答案对吧,你学再多的技术,比如说Python,前端,Go,Java,你对他们底层不了解,又有什么用了,还是停留在Api的阶段,只会调用而不会造轮子。这是体验出算法的优势了,你能造出轮子给公司其他同事调用,你就比他们突出,升职的机会超他们一倍,运气好直接升级到领导位,就告别苦逼的码农生活了。(祝你们好运)...原创 2020-05-10 22:14:38 · 572 阅读 · 0 评论 -
ng 怎么切换成cnpm 安装模块
ng config cli.packageManager cnpm原创 2020-05-06 14:46:45 · 478 阅读 · 0 评论 -
mpvue 怎么使用less语法
安装less编译环境cnpm install less --savecnpm install less-loader@4.1.0 --save配置,在webpack.base.conf.js 的 rules 节点下新增:{ test: /\.less$/, loader: "style-loader!css-loader!less-loader" }如图所示...原创 2020-05-04 18:42:12 · 1070 阅读 · 0 评论 -
什么是链表
链表的优点链表中的元素在内存中不必是连续的内存空间链表的每个元素由一个存储元素本身的节点和一个指向下一个元素的引用组成链表不在创建的时候确认大小,并且大小可以无限延申下去链表在插入和删除的时候,时间复杂度可以达到O(1).相对数组效率高很多(为什么链表会比数组效率高很多,前面博客说了,不懂可以去看看)链表的缺点链表访问某个元素的时候必须从头查找,不能像数组一样指定某个下表就可以找...原创 2020-05-03 11:08:37 · 245 阅读 · 0 评论 -
JS如何实现队列以及队列常用算法(面试题)
什么是队列上篇文章以及讲,这里就不多说了,不知道的朋友可以去看一下我上篇发布的文章 // 队列一般用链表来存储数据 function Queue() { this.items = [] Queue.prototype.enqueue = function (element) { this.items.push(element) }...原创 2020-05-01 15:44:36 · 463 阅读 · 0 评论 -
JS栈结构实现 中缀表达式转后缀表达式
function Stack() { let items = [] this.push = function (element) { items.push(element) } this.pop = function () { return items.pop() } this.peek = function () {...原创 2020-04-30 21:30:04 · 697 阅读 · 1 评论 -
element-ui tree 实现单选并且只能选一个
话不多说直接就是干// 选择会触发getname方法getname() { // 获取当节点的值 var getlist = this.$refs.tree.getCheckedNodes().concat(this.$refs.tree.getHalfCheckedNodes()); // 循环遍历当前节点的值 for (var i in g...原创 2020-03-11 10:55:03 · 12351 阅读 · 12 评论 -
element-ui tree获取父节点id
后端有时候需要父节点的id 最常用的方法是:this.$refs.tree.getCheckedKeys().concat(this.$refs.tree.getHalfCheckedKeys()) ;原创 2020-03-11 09:06:07 · 722 阅读 · 0 评论 -
vue3 Axios解决跨域问题
我相信大家进来就是想知道怎么写的,我就不多BB什么了 直接上代码本文重点(axios.defaults.headers.post[‘Content-Type’] = ‘application/json’)这种错误就是跨域问题了第一步 安装 Axios : npm install axios -S第二步重点(axios.defaults.headers.post[‘Content-Ty...原创 2019-08-19 21:43:12 · 6861 阅读 · 6 评论 -
Vue 实现多选
vue 多选 按钮先看一下效果吧 内容比较机密 所以打了一下马 ‘不好意思’HTML代码jsCSS原创 2019-10-21 09:42:04 · 1193 阅读 · 0 评论 -
Vue3 element 菜单 动态加载导航带上伸缩功能
模拟后端数据const menu = [{ "menuId": 1, "menuName": "管理系统", "parentId": 0, "route": null, "type": 0, "icon": "el-icon-setting", "orderNum": 0, "children": [{ "menuId": 2, ...原创 2019-08-30 16:41:16 · 1405 阅读 · 3 评论