在毕业前,学校各种烦心事,还有自己的想法太过于负责, 能力满足不了野心,造成整个人很撕裂,昨天做了一下华尔街新闻的前端笔试题,发现自己的知识库太旧了,很多知识的掌握不够,还要继续努力啊。无论是从哪个方面都急需要增强。不然真的每一次面试笔试都是煎熬啊。而且nodejs的推进速度好慢啊, 到现在还没有把基础部分过一遍。
1.使用var定义变量,如果使用直接量则直接输出。用下划线获取表达式的结果。
2.回调函数,把函数以参数的形式传给一个主函数, 在主函数执行完后再执行回调函数,区别于直接在函数内部调用函数,回调函数的灵活性会更好点,限制更小点,但不一定是最优化的。
3.node.js都是单线程单进程应用程序,依靠回调函数和异步处理实现并发编程。,每一个API都是异步的;
4.事件驱动型:给web server发送请求,然后关闭并处理,然后去服务下一个请求。当该请求完成时放入队列,当达到队列开头时,将该处理结果返回给用户。
5.node.js 在完成I/O操作时会发送一个事件到事件队列,同时许多对象也会分发事件,这些事件都是events.EventEmitter()的实例
6.在控制台输出中文需要把单引号改成双引号,而输出由字母和数字组成的字符串的话可以使用单引号。
7.EventEmitter 支持若干个事件监听器,当事件被触发时,依次执行。
8.EventEmitter的一些函数:addListener(event, listener)往事件末尾添加监视器;on(event, listener)注册监视器;once(event, listener)监视器只触发一次,removeLisener(event, listener)移除指定事件的某个
监视器;removeAllListener([event])移除事件所有的监视器;setMaxListener(n)设置最大的监视器数量;listeners(event)返回监视器数组;emit(event, [arg1}, ...)触发监视器,如果有事件监视器则返回true,否则false。类方法listenerCount(emitter, event)返回事件的监视器数量。
9.EventEmitter的error事件默认存在的。
10.nodejs的Buffer是用来解决javascript中只有字符串数据类型,而没有二进制类型的问题,用来存储二进制数据缓存。Buffer类似于一个整数数组,对应于一块内存
11.buf.write()将数据写入缓冲区,buf.toString()将缓冲区的内容读出来。主意编码格式的问题,出现乱码可能是编码格式没设定。bur.toJSON()将缓冲区内容转化为JSON格式,buf.concat()合并缓冲区;buf.compare(otherbuffer)缓冲区比较, 返回数字表示在otherbuffer之前。相同或之后;buf.copy()拷贝缓冲区;buf.slice([start, end])两个参数都可选, 默认开始位置为0默认结束位置为buffer.length同时返回一个新的buffer指向同一块内存但是是经过裁剪的。
12.nodejs的stream是一个抽象接口,有四种类型的stream(流)可读readable;可写writeable;可读写duplex;操作被写入数据,并读出结果transform
13.管道流提供了从一个输出流到另外一个输出流的方式。链式流通过连接输出流到另外一个流并创建多个流对单个流的操作链机制,一般用于管道操作。
14.nodejs模块系统,可以让文件间相互调用,模块是Node.js 应用程序的基本组成部分,文件和模块是一一对应的。换言之,一个 Node.js 文件就是一个模块,这个文件可能是JavaScript 代码、JSON 或者编译过的C/C++ 扩展。
15.nodejs提供了两个对象,exports模块公开接口,require从外部获得一个公开的接口;提供给外部访问的接口有两种办法一种一种是exports.world = function() {} 可以直接被调用函数; 另外一种是 module.exports = 函数,需要先实例化,再使用。
16.服务器上的模块的调用和加载,从文件模块缓存中加载,从原生模块中加载,从文件中加载。require接受:http,fs,path原生模块;相对路径的模块;绝对路径的模块;非原生模块的文件模块
17.nodejs的函数,一个函数可以作为另一个函数的参数, 也可以直接在参数里定义一个匿名函数。
这是前面五天学习的一些总结。