- 题目来自FCC的
https://www.freecodecamp.cn/challenges/build-a-random-quote-machine
- 代码地址:
https://github.com/OMGAGIRL/stop-trying-to-reinvent-the-wheel/tree/master/random-quote%202017.2-22-2.24
- 总结:其实实现功能很简单,除了分享功能需要厂商提供api,以及我觉得api并不好找以外,大多的问题都处在requirejs封装jq插件上,this的运用以及作用于还有ajax异步造成的数据获取延迟,还有一个大的问题就是对于是否需要模块化一个版块没有特别清晰的概念。
总结的几个要点
css部分
-
在使用scss时达到响应式时,最开始的时候构想了两种方式
$breakpoints: (
'xs': 'only screen and ( min-width: 480px)',
'sm': 'only screen and ( min-width: 768px)',
'lg': 'only screen and ( min-width: 1200px)',
) !default;
@mixin respondTo($breakpoint) {
$query: map-get($breakpoints, $breakpoint);
@if not $query {
@error 'No value found for `#{$breakpoint}`. Please make sure it is defined in `$breakpoints` map.';
}
@media #{if(type-of($query) == 'string', unquote($query), inspect($query))} {
@content;
}
}
.class{
@include respondTo('xs') {
background: red;
}
@include respondTo('sm') {
background: lawngreen;
}
@include respondTo('lg') {
background: lightseagreen;
}
}
这个源码我分析了一下,给自己画了个重点,!default以及map方法的使用
js部分
-
jquery的
animate
被应用在切换的时候名人名言时的渐变效果,但是只能完成如opacity这样的简单变化,如果是颜色变化,animate无法实现,jquery有插件
jquery.color.js
,但是我是用了css3的transition效果
$(value).animate({
opacity: 0
}, 800, function () {
$(this).animate({
opacity: 1
});
});
-
jquery的ajax的问题就是,我把ajax取值以及直接返回我要的随机生成的值的方法定义了一个新的模块。遇到的问题是,由于
myfun.prototype.getAjax = function(){}
ajax()方法是异步的,所以会遇到想要取值的时候,ajax并没有执行完,两种解决方法,给ajax加上settimeout,但是我觉得不定性比较大,还有一种就是根据自己的要求,可以async:false,变成同步。
-
然后还有一个就是学习到了把自己的内容分享到空间,微博等的方法
参考
我觉得虽然各大厂都有api可是,我实在是没有找到到底哪个可以实现啊,所以参考的是这位作者的写法,完美解决啦。 -
$.proxy这个jquery中的方法
jQuery.proxy
,
强制设置函数的作用域,让this指向obj而不是#test对象
。 -
$.extend
设置默认参数时很有用 -
$.fn.extend
在注册插件时使用。
心灵总结
总的来说,每次尝试一个新东西,就会收获很多。特别是这次也是第一次使用github管理自己的代码,而且也把自己寒假的时候学习的几个东西融合在一起,虽然是个小东西,但是在做的时候都是先用最简单的代码堆叠实现功能,在慢慢拆分,没有一个具体概念化的模块化代码。还有问题就是,这些东西的使用都是停留在很初级的使用,scss目前也只是简单的使用@mixin并没有工程化很多东西,requirejs也是单纯的使用config以及define基础功能,注册插件,所以还要多使用,多学习别人的代码。打好基础,要找实习啦,好捉鸡!
版权声明:本文为realDE原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。