history与单页面应用路由

发表于 | 分类于 前端/前端业务

在之前的BOM基础知识中提到了History对象,提供浏览器历史纪录相关的接口,可以通过window.history对象来模拟工具栏的前进,后退和刷新。HTML5为history对象增加了几个新的方法,可以更灵活的操作历史记录。

二进制计算

发表于 | 分类于 数据结构和算法

虽然很早就接触了二进制,却一直没有正视这个问题,阅读《计算机科学导论》的时候,基本上是跳过了这一部分,总是以“这么基础的东西,反正工作中基本用不上”的理由给搪塞过去。

最近正在阅读《编码》和《程序员的数学思维修炼》,心想终究还是得面对的,于是记录了一点笔记,希望不再回避letcode上关于二进制计算的题目。

浏览器中的跨域

发表于 | 分类于 前端/前端业务

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

HTTP协议之用户识别(四)

发表于 | 分类于 网络

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

HTTP协议之缓存(三)

发表于 | 分类于 网络

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

HTTP协议之报文(二)

发表于 | 分类于 网络

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

HTTP协议之资源(一)

发表于 | 分类于 网络

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

浏览器解析HTML的流程

发表于 | 分类于 前端/前端业务

很早之前就对浏览器加载整个页面文档以及相关的解析和渲染流程十分好奇,但是却一直没有深入。

尤其是JavaScript这块,只知道JavaScript是单线程模型,却对于这个概念却一直没有很理性的认识。

想到之前看见一篇关于浏览器中定时器的文章,介绍了浏览器中setTimeout的机制,才发现自己对关于页面上JavaScript的执行顺序给弄混了。

最近正重新阅读犀牛书,在第13章“Web浏览器中的JavaScript”中,终于得到了一些答案。

使用BEM声明CSS样式名

发表于 | 分类于 前端/CSS

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

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

之前的关注点是通过选择器嵌套和样式复用来决定样式名,由于过分考虑样式的复用,又没有进行正确的限制,样式耦合十分严重。

最后回过头一想,如果是使用类名来决定选择器的嵌套和样式重用,情形应该会怎么样呢?恰好之前也了解了一点BEM的东西,这篇文章是我关于BEM的思考和尝试。

RequireJS使用心得

发表于 | 分类于 前端/前端工程

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

实现一个简易的PHP框架

发表于 | 分类于 技术原理

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

实现一个简易的JS模板引擎

发表于 | 分类于 技术原理

之前的项目中,通过ajax请求获得的数据,重新在页面上渲染出来,基本上都是采用字符串拼接或者定义一个type/html的script标签,然后通过jQuery查找结点然后插入数据的,在数据量不大的情况下,这么做貌似也没有什么问题。但是昨天遇见的情况是返回好评、中评、差评的多条数据,,且每天评论需要展示的内容十分多,因此考虑使用第三方的模板引擎库。

关于CSS的思考

发表于 | 分类于 前端/CSS

本文总结了之前关于CSS代码维护的思考关于CSS选择器命名的思考关于CSS选择器嵌套的思考这三篇文章的内容,是当时刚写前端时关于编写CSS引发的一些思考。

使用Node.js写爬虫(初级篇)

发表于 | 分类于 技术原理

最近两周,写爬虫写出魔怔了。很早之前就打算用Python写爬虫,可一直没有时间重新学习Python。刚好现在正在学习Nodejs,用JS写爬虫,实际上也很酷炫。额当然我现在也只会爬一些很简单的静态爬虫,这篇文章主要是整理一下这两周的心得,由于我也是爬虫菜鸟,如果有错误的地方还请指正,感激不尽。

《正则指引》读书笔记

发表于 | 分类于 读书笔记

爬虫真的非常有意思。为了更高效的处理获取的数据,开始正儿八经的学习正则表达式。

《计算机网络-自顶向下的方法》读书笔记

发表于 | 分类于 读书笔记

大概是几个月前,曾被赶鸭子上架似的学习了一阵子socket,作为没有一丁点网络基础的菜鸟,完全无从下手,靠死记硬背写了几端代码,最后还是将它搁在哪里了。在现在的前端工作中,仍免不了要跟网络请求打交道,然而只明白几个http状态码,调用个Ajax接口是远远不够的,带着弄明白“从浏览器地址栏输入网址到看见整个网页发生了什么”这个经典面试题的目的,打开了《计算机网络》这本书。

Flex布局

发表于 | 分类于 前端/CSS

最近在掘金上看见了一个叫做flex.css的项目:使用flex进行移动端的快速布局。之前在学习CSS3的时候还挣扎在定位和浮动的困惑无法自拔,后面的项目也未曾想到使用flex。因此翻开CSS手册,准备整理一下关于flex的知识。

SCSS进阶

发表于 | 分类于 前端/CSS

最近阅读了一个按钮样式库button.css,尽管源码是用scss写的,我却看懵了:别人写的scss和我写的完全不一样啊,各种数组各种循环...!

原本以为会用混合器和继承就差不多了,实际上还差的远了去了。

然而之前看的教程文档上也只有这些基础,然后一通查询,摸索了一些关于SCSS进阶的方法,整理如下。

初识Vue

发表于 | 分类于 前端/Vue

大约两个月前其实就已经去尝试学习了Vue(实际上就是看了看文档,云里雾里不知道什么意思),最近在使用原生PHP后端开发,完成第一个留言板的小项目之后着实被混杂的PHP和HTML代码给恶心到了,开始折腾如何分离代码。后来在论坛上看见一位前辈说初级的话不用去折腾什么页面静态化smarty之类的,使用include就够了,PHP本身就自带模板标签,那么怎么解决数据遍历的问题呢?突然灵机一动,想到了Vue(暴殄天物,让唾沫来淹死我吧...)下面重新过一遍文档(貌似现在是V2.0了)。

初识MySQL

发表于 | 分类于 后端/数据库

最近在练习一个后台小项目,随便规划了几个需求之后开始搭环境(好吧其实就是写了几个页面然后上ThinkPHP),当正儿八经的开始写后台项目的时候才发现,我对于MySQL的了解远远不够,赶紧恶补一番。