webpack折腾记(一)
gulp用了很长一段时间了,也挺顺手的,只是最近一直在用vue-cli
进行开发,被其各种方便的特性给惊呆了。然而归根结底就是gulp和webpack的比较,作为新一代的前端流程开发工具(现在也不新了),还是大概了解一下吧。
JavaScript模块管理机制
在之前的项目开发中一直使用RequireJS
进行模块化管理,在NodeJS
中使用的是CommonJS
规范的模块管理,在Vue-cli
中使用ESM
模块管理。恰好昨天面试题有一问提到他们之间的区别,之前并没有太深入这些知识,回答的不是很好,这里整理一下。
微信小程序之请求拦截器
初次接触到请求拦截器是在Vue-ReSource
中,后来使用axios
和restify
实现jwt
单页面应用用户验证的时候也用到了路由拦截器的功能。
在微信小程序中,官方只提供了最基本的wx.request
,现在打算对这个接口进行封装,在小程序中实现简单的路由拦截器。
微信小程序之自定义组件
小程序1.6.3之后已经支持自定义组件,本文已经过时,不建议继续阅读
微信小程序出了挺长一段时间了,但我对这个一直被人吹捧的框架没有半点感冒。出于工作需要写了一个商城demo,由于小程序暂时不支持自定义组件,相关的插件也很少,因此代码写的很烂(这完全是由于我的水平不够导致的)。
最近回过头整理了一下相关的开发文档,决定尝试实现小程序的自定义组件,也算是对最近学习Vue
的一点扩展(脑残粉/斜眼)。
实现一个简单的Promise
发表于 | 分类于 技术原理
回调函数在JavaScript中随处可见,在NodeJS中更是家常便饭,随着而来的就是回调地狱。
尽管早有耳闻,也知道Promise
是解决回调地狱的一种方法,却只是简单地了解几个API。
最近在看axios
的源码,发现拦截器interceptors
那里的实现也是基于Promise
的,加上阅读《你不知道的JavaScript(中卷)》的时候,书中花了一半的篇幅讲解Promise
,然而却一脸懵比。
现在 是时候弄清楚Promise
的真面目了。
JavaScript中的对象描述符与响应式数据
发表于 | 分类于 编程语言/JavaScript
自从接触Vue
以来,就对它的响应式数据原理十分好奇。文档中提到是使用Object.defineProperty
实现的,因此决定深入了解JavaScript中对象的一些特性。
history与单页面应用路由
在之前的BOM基础知识中提到了History对象,提供浏览器历史纪录相关的接口,可以通过window.history
对象来模拟工具栏的前进,后退和刷新。HTML5为history对象增加了几个新的方法,可以更灵活的操作历史记录。
二进制计算
发表于 | 分类于 数据结构和算法
虽然很早就接触了二进制,却一直没有正视这个问题,阅读《计算机科学导论》的时候,基本上是跳过了这一部分,总是以“这么基础的东西,反正工作中基本用不上”的理由给搪塞过去。
最近正在阅读《编码》和《程序员的数学思维修炼》,心想终究还是得面对的,于是记录了一点笔记,希望不再回避letcode上关于二进制计算的题目。
浏览器中的跨域
在工作中遇见的跨域问题也有好几次了,但却一直对浏览器的跨域没有很完整的认知。最近正重新学习JS基础知识,这些之前学习过程中遗留下来的问题现在一个一个解决掉吧。
HTTP协议之用户识别(四)
发表于 | 分类于 网络
HTTP协议是无状态的,这意味着每次的请求/响应都是独立进行的,也就是说服务器无法区分两次请求是否来自同一个用户(客户端)。
但是在Web网页和应用中,服务器可能同时与多个客户端进行对话,因此区分用户身份信息是很有必要的。
HTTP协议之报文(二)
发表于 | 分类于 网络
有一个经典的问题:在浏览器地址栏输入地址,然后回车,最后看见页面这个过程到底发生了什么?这个过程,用书面语来讲就是一个完整的__浏览器事务__。一个事务由一条请求命令(浏览器发往服务器)和一条响应结果(服务器发往浏览器)组成,而这种通信是通过__HTTP报文__进行的。学习HTTP,最基本的目标就是需要看懂HTTP报文。
HTTP协议之资源(一)
发表于 | 分类于 网络
Web资源是Web服务的基础,我们上网,归根到底就是为了获取资源;而整个互联网,就是为了将资源从一个地方传递到另一个地方。这里整理了资源类型,资源路径和动态资源网关这三个部分知识。
浏览器解析HTML的流程
很早之前就对浏览器加载整个HTML文档以及相关的解析和渲染流程十分好奇,但是却一直没有深入。
本文将整理浏览器加载和HTML中的一些细节问题。
使用BEM声明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引发的一些思考。
使用Node.js写爬虫(初级篇)
发表于 | 分类于 技术原理
最近两周,写爬虫写出魔怔了。很早之前就打算用Python写爬虫,可一直没有时间重新学习Python。刚好现在正在学习Nodejs,用JS写爬虫,实际上也很酷炫。额当然我现在也只会爬一些很简单的静态爬虫,这篇文章主要是整理一下这两周的心得,由于我也是爬虫菜鸟,如果有错误的地方还请指正,感激不尽。