前端开发实习日记 -2

时间:2024-11-16 18:01:54

  这周开始在导师的带领下尝试些功能点。

因为以前没有真切接触过nodejs开发,尽管看了一些教程,但水平远远不够。只是让我写一个小接口,也用了整整一天时间。但是主要是功能点虽然不麻烦,但是涉及到的插件及库都没有接触过,所以必须不断百度,理清代码。而且代码弄清楚之后,尽管知道实现功能的思路,但就是不知道该怎么下手。不过总算是挣扎着写出了代码。下面来总结一下自己的收获。

一. Async:

Async是一个流程控制工具包,提供了直接而强大的异步功能。基于Javascript为设计,同时也可以直接在浏览器中使用。相比其他流程控制库,async还是相当靠谱及强大的。主要实现了三个部分的流程控制功能:

  1. 流程控制:control flow
  2. 集合处理:collections
  3. 工具类:util


1). 集合: Collections

  1. each: 如果想对同一个集合中的所有元素都执行同一个异步操作(可以与js中数组操作foreach类比
  2. map:  对集合的每一个元素执行一步操作,得到的结果将汇总到最终的callback中。而each不关心最后的值。
  3. filter:对集合元素进行筛选
  4. reject:与filter相反,将返回为true的值抛弃。
  5. reduce:类似于js数组操作的reduce方法。并且也有reduceRight方法
  6. detect:获取集合中第一个满足条件的元素
  7. sortBy:对集合内元素进行从小到大0排序
  8. some:对元素进行或操作,只要有一个元素满足条件,callback得到的值为true,否则为false;
  9. every:对元素进行与操作。只有所有元素满足条件,callback得到的值为true,否则为false
  10. concat:将多个异步操作得到的结果合并为一个数组。
(具体的代码例子在周末有时间的时候补上)

2). 流程控制: Control Flow 

1. series(tasks,[callback]): 串行执行,一个函数数组中的每个函数依次执行。只有上一个函数执行完毕,才回执行下一个函数

如果任何一个函数向它的回调函数中传了一个error,则后面的函数都不会被执行,并且将会立刻会将该error以及已经执行了的函数的结果,传给series中最后那个callback.

当所有的函数执行完后(没有出错),则会把每个函数传给其回调函数的结果合并为一个数组,传给series最后的那个callback。

多个series调用部分先后。因为series本身也是异步调用

2. parallel(tasks,[callback]): 并行执行。每个函数都是立即执行,不需要等待其他函数先执行。传给最终callback的数组中的数据按照tasks中声明的顺序,而不是执行完成的顺序。

如果某个函数出错,则立刻将err和已经执行完的函数的结果值传给parallel最终的callback。其它未执行完的函数的值不会传到最终数据,但要占个位置。同时支持json形式的tasks,其最终callback的结果也为json形式。

3. waterfall(tasks,[callback]): 按顺序依次执行一组函数。前一个函数的输出将会成为下一个函数的输入。

......

(还有其他的流程控制方法,有时间的继续写。以上三种是我在看代码遇见比较多,以及自己写代码遇到的印象比较深刻的。)


3). 工具类: Utils

1. memoize: 让某一个函数在内存中缓存它的计算结果。对于相同的参数,只计算一次,下次就直接拿到之前算好的结果。

2. unmemoize: 让已经被缓存的函数,返回不缓存的函数引用。

3. log: 执行某异步函数,并记录它的返回值,日志输出。

4. dir: 与log类似,不同之处在于,会调用浏览器的()函数,显示为DOM视图。

5. noConflict: 如果之前已经在全局域中定义了async变量,当导入本时,会先把之前的async变量保存起来,然后覆盖它。仅仅用于浏览器端,在nodejs中没用。




二、 插件

  除了async之外,还接触了不少插件 


1. select2  下拉列表插件

2. plupload  文件上传组件

3. UEditor   是一套开源的在线HTML编辑器


最后,感谢我的导师不嫌弃我速度慢。而且教了我很多东西~


参考文章:

/nodejs-async/

/marujunyy/article/details/8695205