Node笔记(新手入门必看)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Node笔记(新⼿⼊门必看)
. 初识Node.js
1.1 Node.js是什么
Node.js® is a JavaScript runtime built on .
Node.js不是⼀门语⾔
Node.js不是库(library)、不是框架(frame)
==Node.js是⼀个JavaScript运⾏环境==
<u>简单点来讲就是Node.js可以解析和执⾏JavaScript代码</u>
==以前只有浏览器可以解析和执⾏JavaScript代码==
也就是说现在的JavaScript可以完全脱落浏览器来运⾏,⼀切都归功于:Node.js
构建于chrome的v8引擎之上
代码只是具有特定格式的字符串
引擎可以帮你去解析和执⾏
chrome的V8引擎是⽬前⼯⼈的解析执⾏js代码最快的
node.js作者把Google Chrome中的V8引擎移植了出来,开发了⼀个独⽴的js运⾏环境
浏览器中的JavaScript
ECMAscript
js基本语法
BOM
DOM
Node.js中的JavaScript
没有BOM、DOM
有ECMAScript
在Node这个JavaScript执⾏环境中为JavaScript提供了⼀些服务器级别的操作API
例如⽂件的读写
⽹络服务的构建
⽹络通信
http服务器
等处理(相当于开发web服务器,学习对应的api即可)
Node.js uses an event-driven, non-blocking I/O model that makes it lightweight and efficient.
event-driven 事件驱动
non-blocking I/O model ⾮阻塞IO模型(异步)
lightweight and efficient. 轻量和⾼效
随着课程慢慢学习会明⽩事件驱动、⾮阻塞IO模型
==NodeJS以事件驱动著名,通过异步的编程达到⾼吞吐量⾼性能。
==
Node.js' package ecosystem, , is the largest ecosystem of open source libraries in the world.
npm是世界上最⼤的开源库⽣态系统
绝⼤多数JavaScript相关的包都存放在了npm上,这样做的⽬的是为了让开发⼈员更⽅便的去下载使⽤
npm是基于node.js开发的包管理⼯具
1.2 ==node的API参考⽂档的使⽤:==
⿊点后⾯代表参数,例:
request <http.IncomingMessage>
如果是⽅法它会告诉你⽅法的参数是什么,是否可选的。
上述request代表绑定函数的参数,因为它是⼀个事件因此肯定需要绑定⼀个函数,后⾯的连接为这个参数的类型,功能上能够调⽤什么变量和⽅法。
加()的代表⽅法,不加()的代表属性
1.3 Node.js能做什么
web服务器后台
命令⾏⼯具
npm
git(C语⾔)
hexo(node)。
对于前端开发⼯程师来讲,接触node最多的是使⽤它的命令⾏⼯具
⾃⼰写的很少,主要是使⽤别⼈第三⽅发布的
webpack
gulp
npm
1.4 达到⽬标
B/S编程模型
browser-Server
back-end
任何服务端技术这种BS编程模型都是⼀样,和语⾔⽆关
Node只是⼀个⼯具
模块化编程
RequireJS
SeaJS
css中可以使⽤@import('⽂件路径')来实现引⼊外部⽂件
以前认知的js智能通过script标签来加载
在Node中可以像@import⼀样来引⽤加载JavaScript脚本⽂件
Node常⽤API
异步编程
回调函数
Promise
async
generator
Express web开发框架
ECMAScript 6
在课程中穿插讲解
它只是⼀个新的语法。
学习node不仅会帮助打开服务端⿊盒⼦,同时有助于学习⾼级内容
Vue.js
React
angular
node只有js⽂件,代码⼀般为 .js⽂件
1. 创建编写js⽂件
2. 打开终端(命令⾏),定位到脚本⽂件所属⽬录
3. 输⼊node ⽂件名执⾏对应的⽂件,显⽰结果
==注意:⽂件名不能使⽤node,最好也不要使⽤中⽂==
解析执⾏JavaScript
读写⽂件
使⽤fs模块
读取⽂件
路径', '可选编码', function (error, data) {});//具体查看代码
==readFile⽅法的第⼆个参数为可选参数,规定解析⽂件的编码,可选择utf-8编码,让他以⽹页原⽂件的形式读取,不是⼆进制数据==
写⽂件
==Node.js中常常使⽤回调函数作为参数,因为是异步的==
HTTP
详见代码。
==服务器和web页⾯⼀般使⽤字符串进⾏通信==,因此json的传递需要转化为字符串
Ctrl+c可以关闭服务器(bash和cmd⼀样)
在浏览器查看http请求中,有⼀个/favicon.ico路径,该请求是浏览器的默认⾏为,⽬的是请求⽹页的⽹站头像
==响应内容只能是字符串或⼆进制数据(Buffer)。
对象、数字、数组、布尔值都不⾏==,因此response.end()⽅法能够响应字符串和⼆进制数据
什么是模块化
现实中的模块化
⽣产效率⾼
维护⽅便,成本低
程序中的模块化
开发效率⾼⼀次编写多次使⽤
⽅便维护了(维护的成本更低)模块之间有⾼耦合低内聚的特点
为什么要在程序中使⽤模块化的开发⽅式
命名冲突
⽂件依赖。