前端工程师在业余时间如何提高自身能力——造轮子
造轮子是一种快速的学习方式,而还有一种进阶则可以是从Github中生成轮子。
总的来说就是:
1. 查看很多Github项目的源码及提交历史
2. 写胶水代码生成自己的框架
下面就是我之前造的一些轮子的过程:
一、 SPA框架 两年多以前,当时我们项目用的技术栈是:Backbone + Mustache + jQuery。在我们当时的环境下,主要组成有: 1. Backbone提供了一个Router 2. Mustache提供了模板 3. jQuery抽象了DOM 4. Ajax请求 所以,这就是我造的第一个轮子的重要组成部分。 接着,我就开始造轮子了:我称呼这个框架为Lettuce, GitHub - phodal/lettuce: Mobile Framework for Romantic. 简约的移动开发框架。 我参考了一本名为《Building A JavaScript Framework 》的电子书,以及《JavaScript框架设计》一书。因为没有任何框架的设计经验,所以只好试图按照书上的一点一滴来进行。在这个过程中,我开始深入JavaScript。 从 GitHub - Submersible/self: Python-like class sugar. No more "var that = this"! 这个库中,我开始创建了自己的类的用法。 接着,开始写Ajax,照例还是参考了jQuery和Zepto的代码。同样的还有Event、Promise等等的一些类。 然后就是Router,源码来自于:A modern JavaScript router in 100 lines,又参考了早期的Backbone代码。 以及模板引擎,照例代码也不全是我写的,用的是John Resig - JavaScript Micro-Templating 最后就是一个简单的PageView:
var SimpleView = new Lettuce.prototype.Class({});SimpleView.prototype.init = function () {};SimpleView.prototype.render = function (template, elementId) {
document.getElementById(elementId).innerHTML = template;};var simpleView = {
SimpleView: SimpleView};Lettuce.prototype = Lettuce.extend(Lettuce.prototype, simpleView);
这其中最复杂的部分就是结合别人的代码,换句话来说,就是写胶水代码。Blabla,最后我就有了一个SPA框架。 相关文章:一步步搭建JavaScript框架——初始化项目 不过,这其中参考了几十个框架,这点对提升自己很重要。 二、Slide框架 八个多月前,当时的情形是我需要有一个可以定时放映地Slide框架,而当时大部分的框架都不能满足我的要求。 实际上我只需要一个定时的功能,而Impress的最新代码又太复杂了。 接着,我看了Github上的提交历史,我发现挺简单的,就自己创一个新的框架,称为GitHub - phodal/echoesworks: Next-Generation Tech Blog/Presentation/Slider Framework。 我需要下面的一些元素: 1. Markdown解析器 2. Slide框架 3. Github代码显示 4. 进度条 同样的,我在Github上搜索不同的组件,最后再把他们结合到一起。 相关文章: 1. EchoesWorks —— 打造下一代技术Blog/Presentation 框架 2. EchoesWorks构建: LocalStorage与跨Tab通信 接着,我又造了不同的几个框架: 1. GitHub - phodal-archive/geng: DSL Step 1 —— Parse: 天干物燥,小心火烛 2. GitHub - phodal-archive/tile.js: a pure javascript tiled map render 3. GitHub - phodal/resume: RESUME Generator 随着造的轮子越来越多,写胶水代码的能力越来越强,我就开始创造一些更有意思的轮子。 三、Luffa Luffa是最近造的一个轮子,对于不写测试的人来说可能没有那么有意思。 我称其为基于Virtual DOM与Diff DOM的测试代码生成,GitHub - phodal/luffa: A Test Framework Helper for Fun 当时我们项目用的是Jasmine和Jasmine jQuery作为测试框架。在写测试的时候,觉得看起来太麻烦了,就想着写一个框架来Diff DOM的变化。 然后就是Virtual DOM那些东西了。
virtual-dom可以说由下面几部分组成的:
- createElement,用于创建virtual Node。
- diff,顾名思义,diff算法。
- h,用于创建虚拟树的DSL——HyperScript。HyperScript是一个JavaScript的HyperText。
- patch,用于patch修改的内容。
所以,我们可以很容易地创建出一个这样的框架来Diff测试中DOM元素的修改。
相关文章:基于Virtual DOM与Diff DOM的测试代码生成 最后因为创建Growth就没有继续了: GitHub - phodal/growth: Be Awesome Developer。
阅读原文到我的Github Ideas墙上查找。
- 斯坦福发布首份 AI Index 报告,AI 研究者不再茫然
- jQuery仿极客公园火箭发射“返回顶部”效果(初始篇)
- Java程序员必读,Java设计模式应该遵循哪些原则
- Visual Studio 2010快速参考指南里头的Scrum海报
- TFS2010 Team Project Collections
- 基于Ext.Panel扩展一个更容易操作的Canvas
- 好玩的效果很好的Html游戏和范例
- jQuery仿极客公园火箭发射“返回顶部”效果(优化篇)
- 北京市首个无人驾驶试运营基地落户顺义
- 后rtx集成时代
- 后短信集成时代
- jQuery仿极客公园火箭发射“返回顶部”效果(WordPress代码篇)
- Windows 2008 R2 Server Core .NET环境配置
- Request——Node世界中被依赖最多的库No.2
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 优化Linux bootloader速度的究极之路:从GRUB到EFI Stub
- Linux--nc命令
- Netty之美--I/O模型
- 023.基于IT论坛案例学习Elasticsearch(二):Query高级知识(一)
- 打卡群刷题总结0807——验证二叉搜索树
- 打卡群刷题总结0808——二叉树的层序遍历
- Mybatis高级查询(四):延迟加载
- I/O多路复用器之隐秘的角落
- 打卡群刷题总结0809——二叉树的锯齿形层次遍历
- 简单的ssm整合练手项目:汽车项目
- 在spring-boot中使用pageHelper插件
- 要深入 JavaScript,你需要掌握这 36 个概念
- mybatis-plus实现增删改查
- mybatis-plus代码生成器
- mybatis-plus逻辑删除