浏览器中的跨域

在工作中遇见的跨域问题也有好几次了,但却一直对浏览器的跨域没有很完整的认知。最近正重新学习JS基础知识,这些之前学习过程中遗留下来的问题现在一个一个解决掉吧。

阅读全文

HTTP协议之用户识别(四)

HTTP协议是无状态的,这意味着每次的请求/响应都是独立进行的,也就是说服务器无法区分两次请求是否来自同一个用户(客户端)。但是在Web网页和应用中,服务器可能同时与多个客户端进行对话, ,因此区分用户身份信息是很有必要的。

阅读全文

HTTP协议之缓存(三)

广义上的缓存不仅仅是Web缓存,还包括了像数据库缓存,服务端缓存,浏览器缓存,应用缓存等。我对于缓存的理解是,一份资源或数据,在他不改变的情况下,只有第一次的传输时有意义的。如果需要重新计算或发送一份完全相同的资源,会造成很大的浪费。这里要谈到的Web缓存指的是HTTP协议中规定的对请求资源的备份和缓存。

阅读全文

HTTP协议之报文(二)

有一个经典的问题:在浏览器地址栏输入地址,然后回车,最后看见页面这个过程到底发生了什么?这个过程,用书面语来讲就是一个完整的浏览器事务。一个事务由一条请求命令(浏览器发往服务器)和一条响应结果(服务器发往浏览器)组成,而这种通信是通过HTTP报文进行的。学习HTTP,最基本的目标就是需要看懂HTTP报文。

阅读全文

HTTP协议之资源(一)

Web资源是Web服务的基础,我们上网,归根到底就是为了获取资源;而整个互联网,就是为了将资源从一个地方传递到另一个地方。这里整理了资源类型,资源路径和动态资源网关这三个部分知识。

阅读全文

浏览器解析HTML的流程

很早之前就对浏览器加载整个页面文档以及相关的执行顺序十分好奇,但是却一直没有深入。尤其是JavaScript这块,只知道JavaScript是单线程模型,却对于这个概念却一直没有很理性的认识。想到之前看见一篇关于浏览器中定时器的文章,介绍了浏览器中setTimeout的机制,才发现自己对关于页面上JavaScript的执行顺序给弄混了。 最近正重新阅读犀牛书,在第13章“Web浏览器中的JavaScript”中,终于得到了一些答案。

阅读全文

BOM基础知识

刚学JS的时候就买了一本《JavaScr权威指南》放在那里,当时就被这一千多页的厚度给唬住了。咬着牙看完了第一部分,也就是JavaScript语言核心;而JS的DOM部分,是在《DOM编程艺术》中学习的。关于BOM这一部分,却仅仅只是在工作中遇见了才去查资料,导致忽略了很多基础知识。 前几天入手了Kindle,看的第一本书就是《JavaScr权威指南》,阅读电子书的一个好处就是能够在不知不觉中把这么厚的书给消灭掉,缺点是不容易折回去反复阅读。因此,总归是要做点笔记的。

阅读全文

使用BEM声明CSS样式名

折腾CSS类名已经很长一段时间了,也得到了一些教训和经验。维护CSS有几个比较困难的问题:

  • 默认全局命名空间,样式冲突十分常见
  • 混乱的样式重用或选择器的滥用,导致改动牵一发而动全身
  • 修改样式表的同时可能会改动页面结构,而且往往不只一个页面

之前的关注点是通过选择器嵌套和样式复用来决定样式名,由于过分考虑样式的复用,又没有进行正确的限制,样式耦合十分严重。最后回过头一想,如果是使用类名来决定选择器的嵌套和样式重用,情形应该会怎么样呢?恰好之前也了解了一点BEM的东西,这篇文章是我关于BEM的思考和尝试。

阅读全文

RequireJS使用心得

一直对于JS模块化开发心存敬畏,尽管很早之前就接触到了RequireJS(在微擎里面),实际项目中却仍旧采用的是最原始的在HTML文档中script标签里面写代码。一方面是因为后台的同学有时候需要自己写JS处理逻辑;另一方面是后台模板将共用的头部样式表和底部脚本都分离为单独文件,管理起来也不是很麻烦。因此一直没有去了解require.js。 最近一个多月一直在折腾新的博客,想着要不要试试require.js,然后一发不可收拾。

阅读全文

实现一个简易的PHP框架

在11月份的时候,参照慕客网的视频,照猫画虎折腾了一个非常简陋的PHP框架半成品,简陋到只勉强实现了自动加载类和路由功能,由于功力不足暂时将这个小项目放在了旁边,到后面补习了一些PHP的基础知识,又花了大概一周的时间去了解Laravel,对于PHP框架的运行流程稍微长进了一点。现在趁着周末重新整理了之前的笔记:一个简易的PHP MVC框架的实现。

阅读全文