javascript
luck_lin
这个作者很懒,什么都没留下…
展开
-
利用泛型处理ts推断二级对象key类型为never
利用泛型处理ts推断二级对象key类型为never因为RootState的所有value类型为一个对象,但是这些对象没有共有key,所以never是唯一可能的参数。如上写法StateKey类型为never。原创 2023-01-18 15:51:20 · 453 阅读 · 0 评论 -
零耦合的前后端分离管理系统权限解决方案
前言首先声明本文章只是讲解一个简单而又能实现对权限管理不是太苛刻的管理系统的解决方案,同时如果与你搭配的后端人员技术很low的情况下该方案我想会更适合你,当然这对你的js基础会有点考验,后端只需要保存一个角色表,给每个账号对应一个或多个角色即可。思路1.根据权限动态渲染菜单后端只需要帮你保存角色及对应角色路由id(这个id就是在角色权限管理中由你自己传给后端保存的路由唯一值path或者name),可以在登录接口直接返回该用户的所有能访问的id,然后通过能访问的路由id去递归过滤你项目中定义好的路由数组原创 2021-12-09 20:07:07 · 1034 阅读 · 0 评论 -
uniapp/小程序生成内嵌动态二维码页面分享图并保存
uniapp/小程序生成内嵌动态二维码页面分享图并保存页面内容:页面vue代码:<template> <view class="imageContainner"> <view class="canvasWrap"> <canvas canvas-id="jobCanvas" class="jobCanvas"></canvas> </view> <u-button cla.原创 2021-05-14 16:33:02 · 916 阅读 · 0 评论 -
基于vue、less的vue商品筛选组件,支持多选/单选,默认选中、默认展开/收起、重置、区间范围值筛选
先看效果:组件代码:<template><dl class="filterItem"> <dt>{{label}}:</dt> <dd :class="{hasMore: hasMore}" ref="item"> <template v-if="firstItemText"> <div class="item" :class="{active: !value.原创 2020-06-03 18:09:08 · 1809 阅读 · 0 评论 -
自己写一个平铺的datePicker
最近公司项目有地方用到平铺的时间选择组件,并且只能选择当天之后的时间,还要能切换月份,寻思antd都是下拉弹出框的datepicker,没有想要的效果,于是就自己写了,分享给大家。先看效果(这个只是demo,样式无视):紫色的代表当天以后的时间,运用的时候可以在事件函数回调中再判断下是否所选时间大于当天时间;点击prev/next按钮切换月份,当12月时next后自动切为下一年,...原创 2019-11-25 23:21:02 · 296 阅读 · 0 评论 -
JavaScript对象扩展(Object.is(), assign(), 对象遍历keys, es6原型介绍)
对象创建新方法ES6允许直接写入变量和函数,作为对象的属性和方法。这样的书写更加简洁。 上面代码表明,ES6允许在对象之中,只写属性名,不写属性值。这时,属性值等于属性名所代表的变量。//例1: var foo = 'bar'; var baz1 = {foo}; console.log(baz1);// Object {foo: "bar"}; v转载 2018-04-17 16:45:13 · 219 阅读 · 0 评论 -
函数节流函数防抖的区别
一、概念解释函数节流和函数防抖,两者都是优化高频率执行js代码的一种手段。函数节流是指一定时间内js方法只跑一次。比如人的眨眼睛,就是一定时间内眨一次。这是函数节流最形象的解释。函数防抖是指频繁触发的情况下,只有足够的空闲时间,才执行代码一次。比如生活中的坐公交,就是一定时间内,如果有人陆续刷卡上车,司机就不会开车。只有别人没刷卡了,司机才开车。 二、函数节流函数节流应用的...原创 2018-04-17 08:39:38 · 562 阅读 · 0 评论 -
原生Js汉语拼音首字母匹配城市名
placeData.js:var cityData = ['北京|beijing|bj','上海|shanghai|sh', '重庆|chongqing|cq', '深圳|shenzhen|sz', '广州|guangzhou|gz', '杭州|hangzhou|hz', '南京|nanjing|nj', '苏州|shuzhou|sz', '天津|tianjin|tj', '成都|c...原创 2018-04-10 09:49:30 · 4341 阅读 · 0 评论 -
鼠标滚轮事件兼容处理、实现内容横向滑动效果
function wheel(wrap, subBox, speed){ wrap[0].onmousewheel = scrollFn; wrap[0].addEventListener("DOMMouseScroll", scrollFn) function scrollFn(e){ var e = e || window.event; var lr = ""; ...原创 2018-03-29 21:20:16 · 717 阅读 · 0 评论 -
自己封装一些小公举tool.js。。。
/**11111 * 生成验证码 * @param length 可选参数,验证码长度(位数),不传递默认4位 * @return 返回生成后的随机验证码字符串 */function generateValidateCode(length){ if (typeof length === "undefined") length = 4; var arr = n...原创 2018-01-30 14:48:22 · 329 阅读 · 0 评论 -
原生js上传图片利用XHR的ProgressEvent对象diy进度条
Document #progress{ width:400px; height:20px; border:solid 1px black; } #bar{ background:#CAFFFF; width:50%; height:19px;原创 2018-04-07 12:04:04 · 3593 阅读 · 1 评论 -
vuex(二)Action
Action 类似于 mutation,不同在于:Action 提交的是 mutation,而不是直接变更状态。Action 可以包含任意异步操作。快速构建一个express服务模拟后台响应数据:var express = require("express");var app = express();app.get("/api/carList", (req, res)=>{ res....原创 2018-04-21 09:43:18 · 394 阅读 · 0 评论 -
Javascript中 toFixed 的‘奇葩坑’
以前一直以为toFixed就是四舍五入的方法,后来又有一段时间以为toFixed是五舍六入。今天终于写的时候,终于才知道toFixed是一个叫做四舍六入五成双的诡异的方法。。。什么是四舍六入五成双:百度是这么说的:对于位数很多的近似数,当有效位数确定后,其后面多余的数字应该舍去,只保留有效数字最末一位,这种修约(舍入)规则是“四舍六入五成双”,也即“4舍6入5凑偶”这里“四”是指≤...原创 2018-04-21 15:22:33 · 12825 阅读 · 8 评论 -
原生touch事件实现简易轮播
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width,initial-scale=1, maximum-scale=1, user-scal原创 2018-05-08 11:47:59 · 408 阅读 · 0 评论 -
js获取内网ip地址,操作系统,浏览器版本等信息
这次呢,说一下使用js获取用户电脑的ip信息,刚开始只是想获取用户ip,后来就顺带着获取了操作系统和浏览器信息。 先说下获取用户ip地址,包括像ipv4,ipv6,掩码等内容,但是大部分都要根据浏览器的支持情况来决定,目前主流浏览器对于ipv4的支持是统一的。第一种:用于仅支持IE的且允许Activex运行,利用ActiveObject来获取。这种的话可以选择性使用。第二种:利用其它平台的接...原创 2018-06-20 00:36:31 · 17834 阅读 · 7 评论 -
(jQuery)滚动到某一元素元素动画入场效果+楼层导航
<!doctype html><html><head><meta charset="utf-8"><title>页面滚动到相应位置运行css3动画</title><style>a{text-decoration: none;color:inherit}.nav{width: 11原创 2018-07-17 14:21:09 · 2842 阅读 · 0 评论 -
nodejs+express+handlebars整合demo及转义\问题分析
在分析转义Handlebars+express问题之前先把nodejs+handlebars+express的项目构建过程说明。 express 4+handlebars构建项目快捷的方式是: 如图可选ejs/jade/hbs等模板引擎,现在我们选hbs(注意express的版本是4.0+)express --hbs demo1我选择整合handlebars的方式是在已有的nodejs项目上引入...转载 2018-07-12 22:47:04 · 653 阅读 · 0 评论 -
vue中原生手写抛物线实现小球飞奔入购物车的
<!DOCTYPE html><html lang="en"><head> <meta charset="utf-8"> <title>Swiper demo</title> <meta name="viewport" content=&q原创 2018-07-19 16:51:23 · 1184 阅读 · 0 评论 -
通过地址栏传递参数及获得参数
在通过地址栏进行参数的传递及取值时,首先应该了解一下URL的组成部分及其每部分的取得方法和作用说明: URL即:统一资源定位符 (Uniform Resource Locator, URL)完整的URL由这几个部分构成:scheme://host:port/path?query#fragmentscheme:通信协议常用的通信协议有:http,ftp转载 2018-03-17 16:17:13 · 1160 阅读 · 0 评论 -
js闭包的定义与应用+获取元素下标的多种方法
什么是闭包?closure,函数嵌套函数,内层函数有使用到外层函数所定义的变量,外层函数返回对内层函数的引用;用途:希望在函数外部能够使用到函数内部所定义的局部变量(延长变量的生命周期),可以使用闭包;<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title&原创 2018-02-08 20:06:57 · 272 阅读 · 0 评论 -
原生JS购物车---cookie应用
商品页: Document *{margin: 0;padding: 0;} ul{list-style: none;} a{text-decoration: none;} .box{ width: 1200px; border: 1px solid; margin: 50px auto 0; } .box h3{ margin-bottom: 20px原创 2018-01-26 18:07:12 · 737 阅读 · 0 评论 -
日历打印
/*返回ture表示闰年,false平年*/ function isLeapYear(year){ return year % 4 === 0 && year % 100 != 0 || year % 400 === 0 ? true : false; } /*返回某月多少天(number)*/ function days(year, month){ switch(month){原创 2018-01-30 17:36:25 · 188 阅读 · 0 评论 -
JavaScript中本地对象、内置对象和宿主对象
首先解释下宿主环境:一般宿主环境由外壳程序创建与维护,只要能提供js引擎执行的环境都可称之为外壳程序。如:web浏览器,一些桌面应用系统等。即由web浏览器或是这些桌面应用系统早就的环境即宿主环境。本地对象ECMA-262 把本地对象(native object)定义为“独立于宿主环境的 ECMAScript 实现提供的对象”。再来看一下,“本地对象”包含哪些内容:原创 2018-01-15 13:11:49 · 185 阅读 · 0 评论 -
JS实现函数递归、运用技巧
前言所谓的递归函数就是在函数体内调用本函数。使用递归函数一定要注意,处理不当就会进入死循环。递归函数只有在特定的情况下使用 ,比如阶乘问题。递归计算阶乘的例子 js中递归函数的使用 function f(num){ if(num<1){原创 2018-01-13 11:53:35 · 21818 阅读 · 0 评论 -
数组的push()、pop()、shift()和unshift()方法
JavaScript的数组是一个拥有堆栈和队列自身优点的global对象。也就是说JavaScript数组可以表现的像栈(LIFO)和队列(FIFO)一样操作。这也是JavaScript数组强大的可操作性的体现。堆栈和队列栈和队列都是动态的集合,在栈中,可以去掉的元素是最近插入的那一个。栈实现了后进先出。在队列中,可以去掉的元素总是在集合中存在的时间最长的那一个。队列实现了先进先出原创 2018-01-14 11:45:50 · 87160 阅读 · 4 评论 -
原生js实现简易购物车效果
Document *{margin: 0;padding: 0;} ul{list-style: none;} a{text-decoration: none;} .box{ width: 1200px; border: 1px solid; margin: 50px auto 0; } .box ul{ overflow: hidden; } .box ul原创 2018-01-21 14:36:58 · 4347 阅读 · 2 评论 -
获取屏幕宽高width(),outerWidth,innerWidth,clientWidth的区别
基本介绍$(window).width()与$(window).height()$(window).width()与$(window).height():获得的是屏幕可视区域的宽高,不包括滚动条与工具条。$(window).width() = width + padding$(window).height() = height + paddingdocument.do原创 2018-01-21 11:15:44 · 1411 阅读 · 0 评论 -
原生JS无缝滑动轮播图
Document ul,div,img{ margin: 0; padding: 0; list-style: none; vertical-align: top; } #banner{ width: 400px; height: 300px; margin:50px auto; position: relative; overflow:原创 2018-01-30 13:37:20 · 2366 阅读 · 0 评论 -
js中的面向对象(一)封装
1.简单的封装(定义)var cat1 = {}; cat1.name = '阿黄'; cat1.sex = '男'; cat1.age = 11; //cat2也同样具有三个属性 var cat2 = {}; cat2.name = '小黑'; cat2.sex = '女'; cat2.age = '10';转载 2018-02-09 16:02:54 · 188 阅读 · 0 评论 -
js雪花飞舞效果,从原生版到面向对象版
Document body{ background: #000; overflow: hidden; } // 纯原生js版function flySnow(){ var snow = document.createElement("div"); snow.style.cssText = 'position:absolute;color:#fff;'; v原创 2018-03-15 10:13:28 · 823 阅读 · 0 评论 -
es6的Map和set对象
SetSet:类似数组,但是成员的值都是唯一的,没有重复。Set本身是一个构造函数,用来生成Set数据结构。他包含的方法:add: 添加某个值,返回Set结构本身。delete: 删除某个值,返回一个布尔值,表示是否成功;has(value): 返回布尔值,表示该值是否为Set的成员;clear():清除所有成员,没有返回值遍历操作keys():返回键名的遍原创 2018-03-15 09:41:19 · 390 阅读 · 0 评论 -
jQuery封装原理
类似jQuery原理的实现,当然还有很多还是没有了解透彻原创 2018-02-28 16:14:56 · 1262 阅读 · 0 评论 -
简单js面向对象打飞机
地图Map.js:var Map = { width: 320, height: 568, startImg: "images/start_bg.png", bgImg: "images/bg.png", startElement: null, gameElement: null, scoresElement: null, init: function(){ var conta...原创 2018-02-18 20:18:26 · 2623 阅读 · 2 评论 -
jsonp跨域实现仿百度搜索提示
Document SEARCH on($("#txt"), "keyup", function(){ var _url = "https://sp0.baidu.com/5a1Fazu8AA54nxGko9WTAnF6hhy/su?wd=" + this.value + "&cb=handle"; var _script = document.createElement原创 2018-02-08 16:21:05 · 473 阅读 · 0 评论 -
面向对象飞机大战(结合ES6、继承 、设计模式)
javascript面向对象编程的小游戏飞机大战,对js知识综合较为全面的的练习。原创 2018-02-27 17:18:44 · 1399 阅读 · 0 评论 -
行政区划(全国省市区县和乡镇)查询 + 英文励志语录
Document select{ width: 150px; } 选择市 选择区 var _url =" https://route.showapi.com/1211-1"; ajax({ url : _url, dataType : "json", data : { showapi_appid : 56344,原创 2018-02-07 20:38:55 · 2488 阅读 · 0 评论 -
js中的面向对象——继承
a. 构造函数继承:属性的继承 Function.prototype.call(thisArg, arg1, arg2, ...) -- 作用:实现函数调用,在函数调用执行时,函数体中的 this 指向 call() 方法第一个参数 thisArg 所表示的对象。 -- arg1, arg2, ... 表示调用在被调用时传递的参数列表。 -- 注意,如果 thisArg 是...原创 2018-02-13 10:18:07 · 226 阅读 · 0 评论 -
JS基本类型与引用类型的区别
ECMAScirpt 变量有两种不同的数据类型:基本类型,引用类型。也有其他的叫法,比如原始类型和对象类型,拥有方法的类型和不能拥有方法的类型,还可以分为可变类型和不可变类型,其实这些叫法都是依据这两种的类型特点来命名的,大家爱叫啥就叫啥吧 。1.基本类型基本的数据类型有:`undefined,boolean,number,string,null.基本类型的访问是按值访问的,就是说原创 2018-01-21 09:28:43 · 345 阅读 · 0 评论