vue自定义指令之v-loading(附源码,可CV)
组件 API:TigerUi:http://tigerui.xkongkeji.com
效果图
结构123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156<template> <div :class="['ti-loading', 'ti-' + type]&q ...
socket.io初体验
socket.io 初体验什么是 socket.ioSocket.IO 是一个封装了 Websocket、基于 Node 的 JavaScript 框架,包含 client 的 JavaScript 和 server 的 Node。其屏蔽了所有底层细节,让顶层调用非常简单。另外,Socket.IO 还有一个非常重要的好处。其不仅支持 WebSocket,还支持许多种轮询机制以及其他实时通信方式,并封装了通用的接口。这些方式包含 Adobe Flash Socket、Ajax 长轮询、Ajax multipart streaming 、持久 Iframe、JSONP 轮询等。换句话说,当 Socket.IO 检测到当前环境不支持 WebSocket 时,能够自动地选择最佳的方式来实现网络的实时通信。
客户端(vue+vue-socket.io)安装1npm install vue-socket.io --save
实现
引入 vue-socket.io
12345678import VueSocketIO from 'vue-socket.io';Vue.use( ...
你真的了解prototype和__proto__吗
你真的了解 prototype 和proto吗一句话的图解:实例对象的隐式原型指向构造函数的的原型对象
什么是 prototype
javascript 只有函数默认拥有 prototype 属性,由构造函数构造出来的实例默认是不具有扩展的,除非手动给这个实例加上扩展(当然这已经不是 prototype 了,仅是一个名叫 prototype 的属性而已)。
在 JS 里,万物皆对象。方法(Function)是一个对象,方法的原型(Function.prototype)是对象。
prototype 是一个拥有 [[Construct]] 内部方法的对象才有的属性。
例如函数,对象的方法,ES6 中的类。注意 ES6 中的箭头函数没有 [[Construct]] 方法,因此没有 prototype 这个属性,除非你为它添加一个。
什么是proto
proto就是连接两个实例与原型之间的桥梁,就是我们通常所说的原型链,proto指向构造函数的 prototype 。proto的作用是创建一个原型链,要通过proto,你才能不断的找到所谓的父原型。
每个对象都有一个proto属性
什 ...
Angular你不得不了解的入门小知识
Angular 你不得不了解的入门小知识highlight: androidstudio1. 一个 Angular 程序至少需要一个模块和一个组件。在我们新建项目的时候命令行已经默认生成出来了。
app.component.ts:这个文件表示组件
组件是 Angular 应用的基本构建模块,可以理解为一段带有业务逻辑和数据的 Html,vue 是 js,css,html 整合在一起,当然也可以分开,angular 是分开处理的
2. - 组件相关概念:类似于 Vue
组件元数据装饰器(@Component)简称组件装饰器,用来告知 Angular 框架如何处理一个 TypeScript 类.Component 装饰器包含多个属性,这些属性的值叫做元数据,Angular 会根据这些元数据的值来渲染组件并执行组件的逻辑
模板(Template)–> html
我们可以通过组件自带的模板来定义组件的外观,模板以 html 的形式存在,告诉 Angular 如何来渲染组件,一般来 说,模板看起来很像 html,但是我们可以在模板中使用 Angular 的数据绑定语法,来呈现控制器 ...
关于XSS与CSRF你应该知道的
关于 XSS 与 CSRF 你应该知道的在 Web 安全领域中,XSS 和 CSRF 是最常见的攻击方式。接下来就简单的说一下他们该怎么防范。
什么是 XSSXSS 攻击是指攻击者在网站上注入恶意的客户端代码,通过恶意脚本对客户端网页进行篡改,从而在用户浏览网页时,对用户浏览器进行控制或者获取用户隐私数据的一种攻击方式。
XSS 攻击的防范现在主流的浏览器内置了防范 XSS 的措施,例如 CSP。但对于开发者来说,也应该寻找可靠的解决方案来防止 XSS 攻击。
HttpOnly 防止劫取 Cookie
HttpOnly 最早由微软提出,至今已经成为一个标准。浏览器将禁止页面的 Javascript 访问带有 HttpOnly 属性的 Cookie。严格来说,HttpOnly 并非阻止 XSS 攻击,而是能阻止 XSS 攻击后的 Cookie 劫持攻击。
输入检查
不要相信用户的任何输入。 对于用户的任何输入要进行检查、过滤和转义。建立可信任的字符和 HTML 标签白名单,对于不在白名单之列的字符或者标签进行过滤或编码。
补充:输入检查一般是检查用户输入的数据中是否包含 <,& ...
LeetCode刷题日记之链表中倒数第k个节点
LeetCode 刷题日记之链表中倒数第 k 个节点
解题思路:遍历出链表长度,设置一个计数点,当找到倒数第 K 个节点时返回,链表(感觉走了笨办法)
1234567891011121314151617181920var getKthFromEnd = function (head, k) { let conut = 1; let index = 1; let temp = head; while (temp && temp.next) { conut++; temp = temp.next; } while (head) { if (conut - k + 1 === index) { return head; } if (head.next) { index++; head = head.next; } else { head = null; } }}; ...
LeetCode刷题日记之顺时针打印矩阵
LeetCode 刷题日记之顺时针打印矩阵解题思路:把矩阵分为一个一个的圆环,顺时针遍历圆环即可(设置边界值,根据边界值,遍历圆环),只剩下一行,从左到右依次添加,只剩下一列时,从上到下依次添加。
1234567891011121314151617181920212223242526272829303132333435let matrix = [ [1, 2, 3], [4, 5, 6], [7, 8, 9],];let spiralOrder = (matrix) => { if (matrix.length == 0) return []; let result = []; let top = 0; let bottom = matrix.length - 1; let left = 0; let right = matrix[0].length - 1; while (top < bottom && left < right) { for (let i = left; i < right; i+ ...
LeetCode刷题日记之找出数组中重复数字
LeetCode 刷题日记之找出数组中重复数字对于一段程序,用不同的方法写消耗时间差距还是很大的,下面是本题的逐渐改进过程。
遍历123456789101112131415let nums = [0, 1, 2, 3, 4, 11, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15];let findRepeatNumber = function (nums) { let startIndex = 0; let result; while (startIndex < nums.length) { let start = nums[startIndex]; for (let i = startIndex + 1; i < nums.length; i++) { if (start === nums[i]) { result = nums[i]; } } startIndex++; } return result; ...
关于EventLoop的简单理解
关于 EventLoop 的简单理解EventLoop 出现的目的js 单线程众所周知 js 是单线程的,那为什么是单线程嘞,作为浏览器脚本语言,JavaScript 的主要用途是与用户互动,以及操作 DOM。这决定了它只能是单线程,否则会带来很复杂的同步问题。比如,假定 JavaScript 同时有两个线程,一个线程在某个 DOM 节点上添加内容,另一个线程删除了这个节点,这时浏览器应该以哪个线程为准?
单线程解决方案单线程就意味着,所有任务需要排队,前一个任务结束,才会执行后一个任务。如果前一个任务耗时很长,后一个任务就不得不一直等着。如果排队是因为计算量大,CPU 忙不过来,倒也算了,但是很多时候 CPU 是闲着的,因为 IO 设备(输入输出设备)很慢(比如 Ajax 操作从网络读取数据),不得不等着结果出来,再往下执行。于是就有了 EventLoop 的出现。
宏任务与微任务从哪里来微任务
Promise ,当调用 Promise.resolve() 或者 Promise.reject() 的时候,会产生微任务。
MutationObserver 接口,监听 DOM 节点发生改 ...
拜读vue官方文档
拜读 vue 官方文档1、不要在生命周期函数上使用箭函数123created: () => console.log(this.a);// 或vm.$watch('a', (newValue) => this.myMethod());
因为箭头函数并没有 this,this 会作为变量一直向上级词法作用域查找,直至找到为止,经常导致 Uncaught TypeError: Cannot read property of undefined 或 Uncaught TypeError: this.myMethod is not a function 之类的错误。
2、v-show 不支持 template 元素,也不支持 v-else。3、当 v-if 与 v-for 一起使用时,v-for 具有比 v-if 更高的优先级。4、使用修饰符时,顺序很重要(从左到右)
v-on:click.prevent.self 会阻止所有的点击,
v-on:click.self.prevent 只会阻止对元素自身的点击。
5、当一个 ViewModel 被销毁时,所有的事 ...