自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(41)
  • 收藏
  • 关注

原创 [front-end] 浏览器文件缓存优化策略

本文针对的是浏览器级对文件缓存对一些优化对总结HTTP缓存强缓存协商缓存(弱缓存)参考HTTP缓存http缓存指的是缓存http请求的数据,一次http请求包含几个主要步骤 http缓存主要在第3和第4步进行,根据协议不同,会采用强缓存和协商缓存(弱缓存)两种强缓存强缓存指缓存在本地,不会再向服务端请求的文件缓存方式 强缓存采用的是 C...

2018-04-26 14:29:49 294

原创 [vue] 源码阅读 next-tick

简介next-tick文件flushCallbacknextTicktimerFuncmacroTaskmicroTaskwithMacroTask总结从今天开始每天阅读一些源码吧 next-tick官方文档简介next-tick的位置在src/core/utils/next-tick.jsnext-tick文件最核心的几个方法是...

2018-04-18 16:59:04 523

原创 [http] 跨域说明

只是从http层角度说下跨域的问题,并不提供解决方法,解决方法在以前老的文章里写过跨域跨域的请求被拦截有两种可能: 1. 浏览器直接禁止发起跨域,例如在某些浏览器中HTTPS请求HTTP域请求不会发起; 2. 跨域请求发起了,但是返回结果被浏览器拦截,请求失败。CORSw3c协议 CORS是一种利用额外HTTP头部来允许用户代理跨域请求的技术,与传统跨域方式不...

2018-02-09 17:31:09 341

原创 [front-end] 测试 e2e

最近好玩,根据vue-cli里的e2e看了下nightwatch的使用 之后有空研究下内部原理night watch night watch本身只是一个测试框架而已。如图,webdriver与dev都不是night watch的内容,因此需要在配置文件中指定。night watch中则包含测试逻辑。 当然,night watch也可以包含其他测试框架,比如mocha,通过配置文件中的...

2018-02-08 16:51:38 424

原创 [vue] vue+vuex实现flux架构 vue+vuex+service+proxy分层

自己在写项目中抽离的一套实现方案 针对的是较为复杂,中间逻辑会大量变化的业务背景git的demo过两天弄下 后续会持续根据在项目中遇到的问题改进和更新vue+vuex实现flux结构vue文件中的数据交互操作抽离,只包含ui操作及不需要进行数据操作的state(View);vuex中保存有所有的交互数据以及操作动作(Store与Action);vue文件与vuex之间

2018-02-07 20:12:41 2319 1

原创 [js] tips

一些写代码中遇到的小tips,持续更新多项内容需要同一种操作时采用array的map方法例如,时间formatconst formatTime = time => { return parseInt(time, 10) < 10 ? '0' + time : time.toString();};const convertShortTime = time => { cons

2018-02-07 19:44:21 120

原创 [front-end] 环境 本地开发

以后简书不写技术了。 搬过来 会根据每天的内容持续更新webpackwebpack多环境配置针对dev和prod要不同的配置devdevtool: ‘sourcemap’ 用于在调试时能对应到对应的代码位置开发服务器,在下一章中会具体说明,主要是用于热更新与热加载productdevtool: false 关掉map可以提高编译速度及代码量代码压缩

2018-02-06 18:38:50 178

原创 [front-end] browser兼容

根据接触到的内容持续更新。。。通用ieconsoleie9及以下的console在控制台未打开时无法调用会报错,这种pollyfill已经很多了。。。 ie9及以下的console并不是一个真实方法,因此无法使用Function.prototype.call与Function.prototype.apply方法,对此的pollyfill是将其强行设为一个方法 文中写的polly

2018-02-05 16:32:20 149

原创 [front-end] 双向绑定

一直没仔细研究过这个,感觉自己还是太不够敏感了,原来只是看到有双向绑定,没细想过原理。 my githijack方式hijack主要分为两部分:对数据的劫持、与DOM的关联。两个原理听起来都很简单写起来都是各种小坑数据劫持git 原理很简单,利用Object.defineProperty对数据进行劫持 坑1. hijack obj必须在 hijack propert之前,不然

2018-01-30 18:14:09 156

原创 [js] 数据类型

my git基本数据类型共七种nullundefinedbooleannumberstringobjectsymbol nulltypeof null === 'object' // 早期js判断空指针问题// 判断nulla === null!a && typeof a === 'object'typeof null typeof null hi

2017-08-01 15:46:05 204

原创 [js] 数组

ES6前ES6扩展运算符 扩展运算符…用于将数组转化为用逗号分隔的参数序列 在函数调用中常用函数中的rest参数// 后跟表达式const arr = [ 1, ...(x > 0 ? [2, 3, 4] : [2, 3]),];// 在定义时使用function f0(...items) { return items.map(i => i * 2);}// 在调用时使用

2017-07-31 20:32:14 265

原创 [js] ES6 函数

参数默认function Man(firstName = 'Hu', secondName = 'DK') { console.log(`Hello, ${firstName} ${secondName}`);}Man(); // Hello, Hu DKMan('Zhao'); // Hello, Zhao DK// null不会触发默认值Man(null, 'DW'); // H

2017-07-24 21:54:31 368

原创 [数据结构] 匹配算法

算法实现 KMP kmp真是学到现在为止最头疼的一个算法,嗯我是渣渣 分两部分 一、子串的next数组;二、循环遍历。 next数组的意义是:第n项之前的若干项与第1到第next[n]-1项完全一样(前驱相同)。 因此next数组的寻找方式使用递归的想法: 对于当前位置i,有开头的最大子串长度为n; 对i+1,若j+1==i+1,那么最大子串长度为n+1;若j+1!=i+1,因为第j+

2016-10-05 00:27:25 374

原创 [html] http5

dataset<div data-to-do-sth="you know nothing" data-name="Jon Snow"></div>ele.dataset // DOMStringMap {toDoSth: "you know nothing", name: "Jon Snow"}ele.dataset.toDoSth // you know nothingele.dataset

2016-09-26 11:00:03 1054

原创 [js] ES5

array Array.prototype.every() Array.prototype.filter() Array.prototype.forEach() Array.prototype.indexOf() Array.prototype.lastIndexOf() Array.prototype.map() Array.prototype.reduce() Array.pro

2016-09-14 20:04:14 319

原创 [http] tips

防止表单重复提交disable掉按键 在服务端返回后应该恢复按键的可用性发送端约束,上一个未返回不发送下一个页面重定向 在返回过程中还是会有重复提交问题服务端session比较 如果session不一样则认为是不同的请求数据库约束 参考click me

2016-09-14 11:24:33 469

原创 [css] css3

参考手册 选择器 选择器参考手册浮动 inline-block背景和边框 border-radius topleft topright bottomrigth bottomleft 前四个为第一个,后四个为第二个border-radius: 1-4 length|% / 1-4 length|%;border radius详解box-shadow:[inset] x-offset y-

2016-09-11 10:46:13 217

原创 [http] 简单整理

简介 无连接:每次连接只处理一个请求。服务器处理完客户的请求,并收到客户的应答后,即断开连接。采用这种方式可以节省传输时间。 媒体独立:只要客户端和服务器知道如何处理的数据内容,任何类型的数据都可以通过HTTP发送。客户端以及服务器指定使用适合的MIME-type内容类型。 无状态:协议对于事务处理没有记忆能力。缺少状态意味着如果后续处理需要前面的信息,则它必须重传,这样可能导致每次连接传送的

2016-09-07 17:31:04 260

原创 [js] BOM

window innerheight 文档显示区高度 innerwidth 文档显示区宽度 length 窗口中框架数量 opener 创建此窗口的窗口的引用 top 顶级窗口的只读引用 screenLeft screenTop screenX screenY 窗口左上角在 屏幕 上的xy坐标focus() blur() 给窗口焦点及移开焦点locationnavigatorscreen

2016-09-06 09:55:06 225

原创 [css] tips

css reset reset.cssbody{ margin: 0; padding: 0;}清除浮动 选取有意义的固定元素进行浮动清理(clear:both)字体大小 在body中定义一个字体大小然后在设置其他字体大小时根据相对父元素的比例大小修改

2016-09-05 17:11:30 181

原创 [js] DOM操作

DOMoperatione.appendChild(newNode) // append newNode at the last of e's child list, return it. if newNode is already one node in html, it would moved here e.insertBefore(newNode, positionedNode) // ap

2016-09-05 16:14:37 205

原创 [http] 缓存

http请求过程 1. 检查本地缓存; 2. 若存在,检查是否过期; 3. 若过期,发送新请求; 4. 若服务端返回304,直接使用缓存;否则获取资源。

2016-09-05 14:04:57 235

原创 [http] 请求与常见状态码

GETPOST状态码 这里写链接内容 wiki状态码 1xx 消息(信息提示) 服务器收到请求,需要请求者继续执行操作 2xx 用于表示请求成功 3xx 重定向 用于已经移动的文件并且常被包含在定位头信息中指定新的地址信息 4xx 客户端错误 用于指出客户端的错误 5xx 服务端错误 用于支持服务器错误200 OK 请求已成功,请求所希望的响应头或数据体将随此响应返回 201 Cr

2016-09-04 15:22:23 1000

原创 [front-end] 前端跨域方法总结

浏览器同源政策及其规避方法jsonp 在页面上引入不同域的js脚本文件,请求页面返回一个带参数的执行函数 只能使用get&lt;script type="text/javascript"&gt; function doSth(data) { // 处理数据 }&lt;/script&gt;.&lt;script src="https://example.com/...

2016-09-04 10:26:30 304

原创 [html] 语法

大小写不敏感,推荐使用小写 最新版本要求使用小写元素 块元素(block)内联元素(inline element)空元素(void element)!DOCTYPE 声明必须是 HTML 文档的第一行,位于 < html> 标签之前 不是 HTML 标签而是指示 web 浏览器关于页面使用哪个 HTML 版本进行编写的指令 !DOCTYPE参考手册meta 元数据(metadata)是关

2016-09-03 12:22:56 184

原创 [css] 框模型 流式布局

框模型 早期ie有width兼容性问题,最好的解决方案是回避这个问题。即不给元素添加具有指定宽度的内边距,而是尝试将内边距或外边距添加到元素的父元素和子元素。外边距合并 当两个垂直外边距相遇时,它们将形成一个外边距。合并后的外边距的高度等于两个发生合并的外边距的高度中的较大者 当一个元素包含在另一个元素中时(假设没有内边距或边框把外边距分隔开),它们的上和/或下外边距也会发生合并

2016-09-02 21:07:42 641

原创 [css] 居中

居中 水平居中center<center>^^^</center>text-align: center.x { text-align: center; }两者不一样,center是将所有元素居中,text-align只居中字符<center> <section style="width:200px;"> 777 </section></center><section s

2016-09-02 11:02:22 195

原创 [css] 语法

层叠次序 层叠次序由高到低为 1. 内联样式(在 HTML 元素内部) 2. 内部样式表(位于< head>标签内部) 3. 外部样式表 4. 浏览器缺省设置语法 选择器(selector) {属性(property): 值(value); 属性: 值;} h1 {color:red; font-size:14px;}选择器派生选择器li strong {color:red;

2016-09-02 09:53:16 238

原创 [js] 垃圾收集 内存泄漏

标记清除(mark-and-sweep)引用计数(reference counting) 循环引用会造成内存泄漏内存管理 在数据不再有用后通过设为null来释放引用(dereferencing)内存泄漏 闭包在IE中可能会造成内存泄漏(COM元素的循环引用)function domHandle(){ var ele = document.getElementById('a');

2016-09-01 11:35:59 191

原创 [js] 作用域 作用域链

执行环境(execution context) - 执行环境定义了变量或函数有权访问的数据 - 每个执行环境都有一个相关联的 变量对象 ,环境中定义的所有变 - 量和函数都保存在该对象中 - 每个函数都有自己的执行环境 1. 函数环境推入环境栈中; 2. 函数执行,返回; 3. 栈弹出环境,将控制权返回之前的执行环境。作用域链(scope chain) 代码在环境中执行时,会创建

2016-09-01 11:20:26 177

原创 [js] 变量 操作符 对象

ES5关键字和保留字数据类型 基本数据类型: Undefined, Null, Boolean, Number, String 复杂数据类型: Object(由一组无须名值对组成) 基本数据类型是按值访问的(保存在栈内存中),引用类型的值是保存在堆内存中的对象。js不允许直接访问内存位置,因此在操作对象时实际操作的是对象的引用而非对象本身 在为对象添加属性时操作的是对象本身(或者说会通过引用

2016-09-01 08:39:34 700

原创 [js] this

mdn my git this由调用方法与位置决定,与定义位置,作用域,上下文均无关全局绑定到全局对象this // windowconsole.log(this) // window函数调用简单调用绑定到全局function f() { console.log(this);}f(); // window严格模式会绑定到un

2016-08-31 15:59:27 252

原创 [js] 函数 闭包

函数声明函数声明与函数表达式 函数声明会自动提升(function declaration hoisting)test();function test() {console.log('for fun')} // for funtest();var test = function() {} // errorif(condition){ function sayHi(){/*d

2016-08-30 09:25:58 374

原创 [js] 原型 继承 委托

每个函数都有prototype属性,prototype是一个指向原型对象的指针 例外:通过Function.prototype.bind方法构造出来的函数没有prototype属性function Point(x, y) { this.x = x; this.y = y;}var Y = Point.bind(null, 0, 3);Point.prototype // Ob

2016-08-29 16:08:45 472

原创 [jQuery] 事件 方法

12特殊函数2.1 $(document).ready()DOM完全就绪(关联文件,如图片不一定下载完毕)时调用$(document).ready(),所有文档完全下载到浏览器以后触发window.onload。.ready()可以简写为$()$(document).ready(function(){ // code});$(function(){ // c

2016-04-25 22:57:34 286

原创 [jQuery]DOM总结

1、DOM// TODO DOM介绍2、DOM选择2.1$()函数$()函数将DOM元素包装在jQuery对象中。 $()接受CSS选择符返回对应元素的jQuery对象。 // TODO CSS选择器页面 选择器参考手册2.2CSS选择符基本选择符:标签名,ID,类。 $(‘#exampleID > li:not(.ExampleClass)’):选择id为exampleID下一级的所有cl

2016-04-25 16:15:15 324

原创 依赖注入学习总结

http://blog.jobbole.com/97917/依赖注入(Dependency Injection),是这样一个过程:由于某客户类只依赖于服务类的一个接口,而不依赖于具体服务类,所以客户类只定义一个注入点。在程序运行过程中,客户类不直接实例化具体服务类实例,而是客户类的运行上下文环境或专门组件负责实例化服务类,然后将其注入到客户类中,保证客户类的正常运行。个人理解:为了实现

2016-02-24 11:20:24 308

原创 jquery命名隔离

不喜欢把js变成类一样的方法。感觉js这样一种原型语言通过各种方式去实现类一样的继承很奇怪。不过命名空间隔离还是很有必要的。定义(function(jQuery){ jQuery.NameSpace1 = this; // 公共方法 this.publicFun = function(){ }; //  内部方法 v

2016-01-21 21:03:01 414

原创 ASP.NET MVC 大文件 分块上传

因为POST命令发送的每个包的大小和一次性上传数据的大小会受到服务器限制,所以在传输大文件的时候必须要对文件进行分块。查资料的时候好像看到MVC中可以通过改web.config的方式把文件上传的限制变为20M,但是所做的项目要求是要传最大可能有4G的内容,所以这样做不现实,因此没有细看。至于使用插件……在网上找了些资料下了些插件,发现都不好用,比如jquery file upload,先是最大

2015-07-23 00:30:35 1391

原创 【Android】自定义风格的各种dialog

项目里用到了很多dialog,一开始没有确定UI风格的时候查资料用了一个很方便的AlertDialog,参考这篇文章http://blog.csdn.net/chenlei1889/article/details/6267406  非常简单好用然后前天美工给了份新的UI,本来想通过该theme修改对话框的模式,但是查到的资料自己写了就是没用,而且基本都是复制粘贴都一样的。title和b

2014-12-12 23:47:10 681

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除