一周mark(2016-03-28)

周末忘记整理这一周所看过和做过的事情了,补上

2016-3-19 ~2016-3-20

报名参加了web开发匠艺训练营,虽然占用了周末的时间,不过对比获得的知识,付出的时间和精力是值得的。

讲师姜志辉从事互联网多年,从软件开发、产品、架构到自己出来开公司、偶尔出来讲课,不仅在编程方面有深厚的功底和见解,在表达和讲课的能力也非常厉害。

在此对这两天讲过的知识点做一个回顾。

JS的渊源

最开始有微软的VBScript,不过这个脚本只应用于微软自己的平台,而谷歌也实现了自己的脚本,则导致了不同浏览器使用不同的脚本,直到ECMA制定了标准,才规范了javascript。

关于库、框架库、框架、架构

之前一直没有搞懂这几个的关系。
在前端,只知道jquery和undersore是库,他们对底层的东西做了一层封装,为使用者提供了一组API,让使用的人使用更轻松的方法去实现所需要的功能。
框架库是如react这样的,它不仅封装了自己的一些函数,对外提供了一定自己的方法,还实现了MVC模式中的M,但是由于它只实现了一部分,所以使用者不能单纯地使用它来实现web前端,它需要搭配其他框架库来实现。例如facebook使用react + flax,而目前也流行使用react + backbone来实现前端项目。
框架则是已经集成了一套解决方案,如AngularJS,它有自己的一套流程,DOM 模板渲染、MVC的设计模式,直接就可以使用了。
架构相对于其他三个,架构基本不实现任何的功能,它相当于帮你打好一个毛胚房,但是里面的刷漆、家具都要使用者自己去决定,所以它的代码量甚至只有一千多行,backbone算的上一个架构。

关于编程的原则-》模式-》方法-》工具 四个象限

原则

SOLID
KISS
DRY
时刻需要保持不触犯的原则

模式

架构
分析
设计
MVC设计模式
web前端的大部分设计模式,显示交给view、数据交给model、而控制交给controler,对于v和m之间的耦合,可以通过观察者模式、订阅模式来解决,也可以通过模板渲染来解决

关于模板渲染有三种:字符串、DOM、虚拟内存模板
实现(可以找相关的模板库学习)

方法

udd
tdd
这个是重点讲解的,代码的编程流程:
测试驱动-》功能实现-》重构代码
bdd
rdd
fdd

工具

grunt
coffee
webpack

框架的使用

使用框架前首先要理解它的渊源,为什么会出现,创始人为什么要创建它,这样才能了解它适合用在什么地方。

其次,读懂框架的骨架,了解它的思想和设计模式,这里涉及到怎么读,首先要读开放给我们的函数,这里不是指文档,而是源代码中对外的接口和函数,可以模仿着写,也可以直接复制着敲,比单纯地读代码效率要高很多。

设计的层次

对于项目,不同的角色会有不同的角度
结果: 角色
-》
模块、包
-》
对象、类
-》
函数、变量

         职责
             -》
                  接口
              -》
                  方法
            协作
              -》

过程:
TDD(百度这些名词rdd。。。。)

手法:
抽象
封装
多态

关于实践的感想

前端也可以用mocha ,mocha可以用来测试mvc中的m和c,对于v,我们可以安装nodejs模拟浏览器的插件僵尸来实现测试

编程的时候不要考虑我有什么,而是考虑我要什么,一步步跨越过去

不要有工程师思维,要有设计的思维

code

// 圣杯模式:不继承父类contructor,通过中间一个实例来继承父类的prototype,然后将子类的prototype指向该实例
kiss.extend = function(ext) {
var ext_func = function(){};
var F = function() {};
F.prototype = this.prototype;
ext_func.prototype = new F();
ext_func.prototype.constructor = ext_func;

for (var m in ext) {
 ext_func.prototype[m] = ext[m];
}
ext_func.prototype.__super__ = this.prototype;
return ext_func;

};

2016-3-21

使用css计数器counter自动生成目录

设计师设计了如下所示的列表图:


design.png

一开始的想法是在段落里面加入一个icon类,作为列表开头的数字,实现完后发现了一个问题,一旦出现换行,下一行会出现icon类的下方,不能实现设计师的设计稿。

但是把icon放在p的外面有不符合逻辑,而且写起来很麻烦。

后来想到使用伪元素before,因为before可以在元素添加进去前放一层在其下面,利用这个功能实现提前在段落前加入一个background-image为蓝色气泡的伪元素,然后定位到左上角,再让段落p有一段padding-left,使得每一段p左边都有一个图标,这样就不用在每个p中手动添加一个icon元素

接下来就是使用css3的一个新属性counter,这是css的content新加入的一个值,能够进行简单的加减乘除计数和重置,因此能够用来自动生成目录。这样就不用手动一个个去进伪元素中了。

<pre><code>
.counter {

    counter-reset: p-counter 0;
            //每当遇到counter类就重置计数器
    }
    .counter p {

      counter-increment: 1;
              // 每当遇到p元素就自增加1
    }
    .counter p:before {
        content: counter(p-counter);
            // 将计数器的值赋给p的伪元素的content
    }

</code></pre>
这是前一周发现的css新特性,markdown了下来,结果真的用上了,所以多看看一些文章有利于提高自己解决方法的能力。

2016-3-22

第二届前端开发者年度大会总结

之前边听说了这次大会,本来想参加的,因为门票要近五百,当时犹豫了一下,结果就卖光了,是在广州举行的,下次绝对不会再错过了。
这次只能读读人家的笔记了,还是能看到不少干货的

参与者的笔记
会上提供的资源

koa中处理错误

koa中处理错误
第一次听到这个名词,在js中进行异步错误处理是通过回调函数,嵌套过深处理起来也很麻烦,koa貌似可以优雅的处理。

2016-3-24

单例模式的实践

写了一个会弹出对话框的页面,发现多次点击会多次调用弹出对话框的问题,导致一个页面出现多个重复的对话框,正常的解决方法可以有如下几个:

  • 点击一次后马上禁止按钮的点击,直到对话框结束再回复
    这个方法应该是最简单的,但是如果那个不是按钮怎么办?

  • 解除元素的事件绑定,当对话框结束后再绑定?
    这能解决元素不是按钮的问题,但是如果元素有多个的话,那么每次点击都要对多个元素进行解除和绑定,在性能消耗上不值得。

笔者同时遇到了以上两种情况,如果能够拥有一个变量,来保存是否已经有对话框了,用来判断是否可以再创建对话框,如果声明一个全局变量是可以很快解决,但是这样会污染全局,而且容易造成后期维护的不容易和被其他人修改。

为了解决这个问题,便想到了 单例模式 ,笔者通过声明一个自执行函数,在函数里面声明一个局部变量isShow,然后返回一个函数,该函数通过判断局部变量isShow是否为false,如果是,则isShow = true, 创建对话框 ; 如果不是,则不创建,并对对话框做监听,当对话框结束时,将isShow改为false

<pre><code>
var showDialog = function() {

var isShow = false;

return function() {

    if (isShow == true) 

      return;

    isShow = true;

    //创建dialog

    createDialog()

    // 监听dialog

    dialog.on('hidden', funciont(){
      isShow = false;  
    });

}
}
</code></pre>
这中模式就是单例模式的一个应用,单例模式还可以用来保存对象,所以可以用来创建自己的代码库。

2016-3-25-2016-3-26

开始研究jquery类库中

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,544评论 6 501
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,430评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,764评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,193评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,216评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,182评论 1 299
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,063评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,917评论 0 274
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,329评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,543评论 2 332
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,722评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,425评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,019评论 3 326
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,671评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,825评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,729评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,614评论 2 353

推荐阅读更多精彩内容