前端工程师在业余时间如何提高自身能力——造轮子

boyanx2周前技术教程3

分享之前造的几个轮子的过程:

一、 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框架。

不过,这其中参考了几十个框架,这点对提升自己很重要。

二、Slide框架

八个多月前,当时的情形是我需要有一个可以定时放映地Slide框架,而当时大部分的框架都不能满足我的要求。

实际上我只需要一个定时的功能,而Impress的最新代码又太复杂了。

接着,我看了Github上的提交历史,我发现挺简单的,就自己创一个新的框架,称为GitHub - phodal/echoesworks: Next-Generation Tech Blog/Presentation/Slider Framework。

我需要下面的一些元素:

1. Markdown解析器

2. Slide框架

3. Github代码显示

4. 进度条

同样的,我在Github上搜索不同的组件,最后再把他们结合到一起。

随着造的轮子越来越多,写胶水代码的能力越来越强,我就开始创造一些更有意思的轮子。

三、Luffa

Luffa是最近造的一个轮子,对于不写测试的人来说可能没有那么有意思。

我称其为基于Virtual DOM与Diff DOM的测试代码生成,GitHub - phodal/luffa: A Test Framework Helper for Fun

当时我们项目用的是Jasmine和Jasmine jQuery作为测试框架。在写测试的时候,觉得看起来太麻烦了,就想着写一个框架来Diff DOM的变化。

然后就是Virtual DOM那些东西了。

virtual-dom可以说由下面几部分组成的:

  1. createElement,用于创建virtual Node。

  2. diff,顾名思义,diff算法。

  3. h,用于创建虚拟树的DSL——HyperScript。HyperScript是一个JavaScript的HyperText。

  4. patch,用于patch修改的内容。

所以,我们可以很容易地创建出一个这样的框架来Diff测试中DOM元素的修改。

最后因为创建Growth就没有继续了。

欢迎关注我的微信公众号:Phodal


标签: slider.js

相关文章

基于 vue2/3 可视化拖拽编辑ASEditor

今天给大家分享一个vue.js支持移动端的可视化拖拽模板AsEditor。as-editor 使用vue2/3开发的可视化拖拽,可集成至移动端项目作为通过定义 JSON 直接生成 UI 界面。git...

python下又一款漂亮超炫酷的动态数据可视化工具——可动态交互

python下有很多漂亮的数据可视化库,例如 Matplotlib、Seaborn、Bokeh、Plotly、Pyecharts等等,我们直接使用这些第三方库来进行漂亮的数据可视化操作。虽然这些库都可...

只需5分钟!教你快速上手Weex(只需5分钟!莲都进入换证高峰,赶快试一下这个)

关于Weex的介绍已经毋须多言,今天,我们带给大家的是如何快速上手Weex。我们以实例的方式呈现给大家,使用Weex编写一个简单的列表,这样的列表经常能在电商类移动应用中见到。开始我们先编写一个列表项...

超详细带你从入门开始,开发一个超实用的浏览器插件

相信大家平时在电脑上逛掘金、知乎网站时,肯定有看到过下面超级烦人的跳转拦截确认页面虽然这种拦截的初衷是好的,但是我相信大家平时肯定不会因为有了这个拦截提醒页面,就会对即将打开的网站安全性提高自己的警惕...

Python与数据可视化:Dash框架入门

Dash 是一个用于创建交互式 Web 应用程序的 Python 框架,它非常适合用于数据分析和可视化的项目。Dash 基于 Flask、Plotly.js 和 React.js 构建,因此可以轻松地...

实现前端工程师的第一个AI应用(前端之父是谁)

大家好,我卡颂。最近几个月,AI相关新闻不断抢占大家的注意力。逞着这波热度,各路开发者都投入到AI应用的开发。比如,15岁的开发者saviomartin7[1]开发的IconifyAI[2]可以根据文...

发表评论    

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。