Client_Storage

客户端存储方式的异同

客户端存储方式有:cookie、sessionStorage、localStorage、Web Storag等。

共同点: 都是保存在浏览器端,且有同源限制。

区别:

  1. cookie数据在浏览器和服务器间来回传递,和服务器端进行交互的,一般用于标识用户身份。而sessionStorage和localStorage用于浏览器缓存数据,不会自动把数据发给服务器,在本地保存。
  2. 由于Cookie是作为HTTP规范的一部分存在的,每次携带都会在HTTP头中,如果Cookie保存过多数据会带来性能问题,而WebStorage仅在客户端保存,不参与服务器的通信。一般浏览器不会修改cookie,但是会频繁操作cookie.
  3. cookie数据还有路径(path)的概念,可以限制cookie只属于某个路径下。
  4. 存储大小限制也不同,cookie数据不能超过4k,同时因为每次http请求都会携带cookie,所以cookie只适合保存很小的数据,如会话标识。sessionStorage和localStorage 虽然也有存储大小的限制,但比cookie大得多,一般为5M左右。
  5. 数据有效期不同,sessionStorage仅在当前浏览器窗口关闭前有效,刷新页面后数据依旧存在,但关闭页面或关闭浏览器后就清除了,自然也就不可能持久保持;localStorage则是持久化的本地存储,除非被清除掉否则永久保存,窗口或浏览器关闭也一直保存,因此用作持久数据;cookie只在设置的cookie过期时间之前一直有效,即使窗口或浏览器关闭。
  6. 作用域不同,sessionStorage不在不同的浏览器窗口中共享,即使是同一个页面;localStorage 在所有同源窗口中都是共享的;cookie也是在所有同源窗口中都是共享的。
  7. Web Storage 支持事件通知机制(storage事件),可以将数据更新的通知发送给监听者。Web Storage 的 api 接口使用更方便。(注:Web Storage实际上由两部分组成:sessionStorage与localStorage。)

    more >>

前端实现动画效果

css3的transition

抓住了所设置变化属性的起始态和完成态,通过设定的速度曲线来完成动画。可以涉及到各种变化的css属性,默认为all,则所有变化的属性都会在出发时,以动画的形式展现出来。这种动画方式是css3的,因此ie9以下是不支持的,其他的浏览器需要加前缀,并且只有两态,不支持自定义中间的状态。

语法:transition: property duration timing-function delay;

property:填写需要变化的css属性如:width,line-height,font-size,color等;
duration:完成过渡效果需要的时间(2s 或者2000ms)
timing-function:完成效果的速度曲线(linear匀速,ease从慢到快再到慢,ease-in慢慢变快,ease-out慢慢变慢等等)
timing-delay:动画效果的延迟触发时间(2s 或者2000ms)。
tips: transform是一种变化属性,该属性允许我们对元素进行旋转、缩放、移动或倾斜。可以作为transition中需要变化的属性。

more >>

前端模块化

前端模块化

前端模块化,使得开发体验大大增强,摆脱了很多需要人力去做切容易出错的点,使得代码管理更加清晰规范。文件按需加载,依赖自动管理,使得更多的精力去关注模块代码本身,开发时不需要在页面上写一大堆 <script>标签,不需要每增加一个文件,还要到HTML或者其他地方添加一个<script>标签或文件声明。减少命名冲突,消除全局变量;一个模块一个文件,组织更清晰;依赖自动加载,按需加载。

more >>

Web 缓存

什么是Web缓存

Web缓存是指一个Web资源(如html页面,图片,js,数据等)存在于Web服务器和客户端(浏览器)之间的副本。缓存会根据进来的请求保存输出内容的副本;当下一个请求来到的时候,如果是相同的URL,缓存会根据缓存机制决定是直接使用副本响应访问请求,还是向源服务器再次发送请求。比较常见的就是浏览器会缓存访问过网站的网页,当再次访问这个URL地址的时候,如果网页没有更新,就不会再次下载网页,而是直接使用本地缓存的网页。只有当网站明确标识资源已经更新,浏览器才会再次下载网页。至于浏览器和网站服务器是如何标识网站页面是否更新的机制,将在后面介绍。

more >>

Webpack

React已成为前端当下最热门的前端框架之一 , 其虚拟DOM和组件化开发让前端开发更富灵活性,而Webpack凭借它异步加载和可分离打包等优秀的特性,更为React的开发提供了便利。

Webpack

Webpack 是什么

webpack是一款模块加载器兼打包工具,它能把各种资源,例如JS(含JSX)、coffee、样式(含less/sass)、图片等都作为模块来使用和处理。能够像Node.js一样处理依赖关系,然后解析出模块之间的依赖,将代码打包.我们可以直接使用 require(XXX) 的形式来引入各模块,即使它们可能需要经过编译(比如JSX和sass),但我们无须在上面花费太多心思,因为 webpack 有着各种健全的加载器(loader)在默默处理这些事情。

more >>