1、Node.js将Javascript解决不确定性所使用的事件驱动方式引入了进来,因为JS是一门事件驱动的语言,旨在能够对外界的事件作出响应;

2、Node.js中,所有的有关异步的操作,都在同步操作执行完毕之后才会开始执行;Node不适合做大量计算的应用,因为大量计算会阻塞事件循环调度(主线程),所以在异步操作中,最好不要存在大量计算(消耗CPU)的代码;Node适合有大量的IO操作,如:读文件、处理文件请求;

3、每一个正在运行的应用程序都称之为进程,每个应用程序都至少有一个进程,进程是用来给应用程序提供一个执行的环境,进程是操作系统给应用程序分配资源的最小单位;线程是用来执行应用程序中的代码,在一个进程内部可以有多个线程,在一个线程内部同时只能干一件事,代码从上到下依次执行;

4、Node的异步I/O的平台差异:由于Windows和Unix/Linux平台的差异,Node提供了libuv作为抽象封装层,保证上层的Node与下层的自定义线程池及IOCP之间各自独立;

5、setTimeout(callback)方法会有一个判断事件是否到了的过程,最少也要判断一次;setImmediate(callback)方法会直接添加到事件队列的尾部,等待下一次调度;proccess.nextTick(callback)方法和setImmediate一样,但是优先级更高,在下次调度中会优先执行;

6、Node的异常处理:由于Node是单线程运行环境,一旦抛出异常没有被捕获,就会引起整个进程的崩溃,Node的异常处理对于保证系统的稳定性非常重要;Node采用的方法是将错误对象作为第一个参数传递给回调函数,这样就避免了捕获代码与发生错误的代码不在同一时间段的原因;

7、Node统一规定:回调函数一定作为方法的最后一个参数出现、回调函数的第一个参数默认接收错误信息(便与外界获取调用的错误信息),第二个参数才是真正的数据;

8、Node内置调试器:

启动调试:node debug 文件.js

常用命令:-n (下一步)、s(步入)、o(步出)

第三方调试工具:node-inspector(https://www.npmjs.com/package/node-inspetor)

安装:npm install -g node -inspector

1).启动调试器:node-inspector,保持挂起不要关闭

2).打开另一个命令台,以调试模式启动程序:node --debug foo.js  node --debug-brk foo.js(调试器会在程序的第一行停住)

VSCode调试(最方便):

1).打开要调试的文件按F5,编辑器会自动生成一个launch.json文件

2).修改 launch.json相关内容,主要是name和program(需要调试文件的路径)字段

3).点击编辑器左侧长的像蜘蛛的按钮,然后点击左上角DEBUG后面的按钮,启动调试,打断点,尽情调试

9、事件驱动原理:Node.js接收到请求之后,首先会把无阻塞的普通代码执行完毕,然后Node.js会把所有的阻塞IO请求放入一个事件队列中,然后通过主线程来调度,从线程池中调度线程来处理事件队列中的阻塞IO请求,当阻塞IO执行完毕之后会调用对应的回调函数,同时该线程会被释放重新回到线程池中;

10、Node.js中的path:

1).basename(p,[,ext]):注意第二个参数用法,获取文件名称部分;

2).dirname(p):获取文件目录;

3).extname(p):获取文件扩展名;

4).format(pathObject)和parse(pathString);

5).isAbsolute(p):判断是否为绝对路径;

6).join([path1][,path2][,...]):拼接路径字符串;

7).normalize(p):将非标准路径转换为标准路径;

8).sep:获取操作系统的文件路径分隔符;

11、fs模块读取文件:

1).readFile(path,encode,callback):异步读取文件(进入事件队列,不阻塞后续代码的执行,实际的调用直到它被事件循环线程提取出才会执行);

2).readFileSync(path,encoude):同步读取文件(会阻塞主线程);

fs模块写入文件(如果文件存在会覆盖,如果文件不存在直接创建然后写入数据):

1).writeFile(file,data[,options],callback):异步写入文件;

2).writeFileSync(file,data[,options]):同步写入文件;

fs模块向文件中追加内容:

1).appendFile(file,data[,options],callback(err)):异步追加;

2).appendFileSync(file,data[,options]):同步追加;

fs模块验证路径是否存在:

1).exists(path,callback(exists)):exists为布尔类型,表示文件是否存在;

2).existsSync(path):返回一个布尔类型;

fs模块获取文件信息:

1).stat(path,callback(err,stats)):stats对象挂载了对应文件的所有信息属性;

2).statSync(path):返回一个fs.stats实例;

fs模块删除文件:

1).unlink(path,callback(err))

2).unlinkSync(path):同步删除;

fs模块创建目录:

1).mkdir(path,callback()):回调函数没有参数,此方法无法创建多级目录,只能创建一级目录;

2).mkdirSync(path):同步创建;

fs模块删除空目录:

1).rmdir(path,callback()):回调函数没有参数,此方法只能删除空目录

2).rmdirSync(path):同步删除;

深入浅出Node.js(一) - 初识Node.js的更多相关文章

  1. 【Node.js】初识Node.js

    因组里项目需要,我和另外一名同事要学习Node.js.之前接触过Javascript,都是前台处理html时用到,现在要用Javascript做后端,学习Node.js,用一段时间专心学习一门新技术, ...

  2. Node学习笔记---初识Node

    博客原文地址:Claiyre的个人博客 https://claiyre.github.io/ 博客园地址:http://www.cnblogs.com/nuannuan7362/ 如需转载,请在文章开 ...

  3. 初识node.js(通过npm下载项目依赖的包的过程)

    一.初识node.js 简单的说Node.js 就是运行在服务器端的JavaScript. Node.js 是一个基于Chrome JavaScript 运行时建立的一个平台. Node.js是一个事 ...

  4. Node.js之路【第一篇】初识Node.js

    什么是Node.js 1.Node.js就是运行在服务端的JavaScrip. 2.Node.js是一个基于Chrome JavaScrip运行时简历的一个平台. 3.Node.js是一个非阻塞I/O ...

  5. 什么是Node.js?带你初识Node

    什么是Node.js Nodejs是一个基于Chrome v8引擎的JavaScript运行环境 Node.js使用了一个事件驱动,非阻塞式I/O的模型,使其轻量又高效. Node.js 的包管理器 ...

  6. Node.js实战项目学习系列(1) 初识Node.js

    前言 一直想好好学习node.js都是半途而废的状态,这次沉下心来,想好好的学习下node.js.打算写一个系列的文章大概10几篇文章,会一直以实际案例作为贯穿的学习. 什么是node Node.js ...

  7. node初识——node中的require方法与require.js的区别

    出处:http://blog.csdn.net/u013613428/article/details/51966500 作为一个前端的新手,总是诧异于js的模块载入方式,看到了通过requireJs提 ...

  8. 初识Node.js之Node与java作为后台服务器的对比

    > 文章原创于公众号:程序猿周先森.本平台不定时更新,喜欢我的文章,欢迎关注我的微信公众号. ![file](https://img2018.cnblogs.com/blog/830272/20 ...

  9. 前端(Node.js)(1)-- 初识Node.js

    1.认识 Node.js 诞生.发展.应用现状.生态圈等方面 1.1. 2008年 RyanDahl的目标是创建一个易扩展.适用于现代Web应用通信的服务器平台 1.2.国内外的应用情况 Linked ...

随机推荐

  1. Python面向对象—类属性和实例属性

    属性:就是属于一个对象的数据或函数元素 类有类方法.实例方法.静态方法.类数据属性(类变量)和实例数据属性(实例变量). 类属性:包括类方法和类变量,可以通过类或实例来访问,只能通过类来修改. 实例属 ...

  2. python 深浅copy的例子

    1. copy.copy 浅拷贝 只拷贝父对象,不会拷贝对象的内部的子对象.2. copy.deepcopy 深拷贝 拷贝对象及其子对象一个很好的例子:import copya = [1, 2, 3, ...

  3. JSON字符串和Javascript对象字面量

    JSON字符串和Javascript对象字面量 JSON是基于Javascript语法的一个子集而创建的,特别是对象和数组字面量语法. 正是由于JSON的这种特殊来历,导致很多Javascript程序 ...

  4. [SOJ #48]集合对称差卷积

    题目大意:给你两个多项式$A,B$,求多项式$C$使得: $$C_n=\sum\limits_{x\oplus y=n}A_xB_y$$题解:$FWT$ 卡点:无 C++ Code: #include ...

  5. BZOJ Lydsy5月月赛 ADG题解

    题目链接 BZOJ5月月赛 题解 好弱啊QAQ只写出三题 A 判断多干个数乘积是否是某个数的倍数有很多方法,比较常用的是取模,但这里并不适用,因为模数不定 会发现数都比较小,所以我们可以考虑分解质因子 ...

  6. BZOJ1599 find the mincost route 【floyd】

    题目链接 BZOJ1599 题解 最小环模板?周末了养生一下[逃] 解释一下原理 \(floyd\)算法每一轮求出以\([1,k]\)为中介点的最短路 我们对于一个环,考虑环上编号最大的点,在\(k\ ...

  7. HDOJ.1029 Ignatius and the Princess IV(map)

    Ignatius and the Princess IV 点我跳转到题面 点我一起学习STL-MAP 题意分析 给出一个奇数n,下面有n个数,找出下面数字中出现次数大于(n+1)/2的数字,并输出. ...

  8. JS深度合并对象

    /** * 如果target(也就是FirstOBJ[key])存在, * 且是对象的话再去调用deepObjectMerge, * 否则就是FirstOBJ[key]里面没这个对象,需要与Secon ...

  9. CSS的历史与工作原理

    1. 浏览器的发展与CSS 网页浏览器主要通过HTTP协议连接网页服务器而取得网页,HTTP容许网页浏览器送交资料到网页服务器并且获取网页.目前最常用的 HTTP 是 HTTP/1.1,这个协议在RF ...

  10. AppWidget学习总结

    AppWidget学习总结 一.创建AppWidget.    1.在res/xml下创建一个xml文件,以设置widget占用的空间等信息.如widget_provider.xml        & ...