学习node.js适合的人群:javascript
须要必备一些HTML,CSS,JavaScript及编程有必定程度了解的读者阅读,一些简单的命令行操做,具有服务端开发经验更好。
Node.js究竟是什么?为何要学习它呢?它由能为咱们作写什么?html
Node是一种新技术,诞生于2009年,通过几年的变化,Node.js生态圈以及逐渐走向了稳定,很多开发者入门时,老是要经历一种思惟的转变,可是学会Node.js能够进行Web后端的开发,同时掌握事件驱动的异步式编程风格。前端
学习Node.js,掌握如何用Node构建可扩展因特网应用,服务器事件驱动开发的重要概念,跨服务器的并发链接、非阻塞I/O和事件驱动的编程、如何支持各类数据库和数据存储工具、NodeAPI的使用示例等。java
学习一个东西,就像上学时老师说的同样,了解一个东西,要知道这是什么,能作什么?为何?即what?why?How?。去考虑问题。node
Node.js是什么?
Node.js是JavaScript运行时环境,不是一门语言,不是库,不是框架,是能够解析和执行JavaScript代码,就像浏览器同样,如今的JavaScript能够彻底脱离浏览器来运行。web
Node.js是服务端,后端开发的。学习Node.js就是在学习web服务器开发的过程。Node.js是构建与Chrome的V8引擎之上。算法
注解:“浏览器内核”指是一个浏览器最核心的部分,“Rendering Engine”,直译为“渲染引擎”,咱们能够叫“排版引擎”,“解释引擎”。
引擎的做用就是帮助浏览器来渲染页面的内容,将页面的内容和代码来呈现给用户所见到的视图。数据库
JavaScript引擎是一个专门处理JavaScript脚本的虚拟机,通常在网页浏览器中。
![]()
Node.js是没有BOM和DOM的,有的是EcmaScript,Node提供了一些服务器级别的操做,文件读写,网络服务的构建,网络的通讯,HTTP服务器等等。
![]()
Node.js为事件驱动,非阻塞IO模型(异步),轻量和高效。
npm是世界上最大的开源库生态系统,绝大多数的JavaScript相关的包都存放在npm上,目的是为了方便开发者去下载使用。npm
Node能够做为web服务器后台,命令行工具,掌握B/S编程模型,Brower-Server,模块化编程。编程
掌握以下内容:
异步编程了解知识点,回调函数,Promise,async,generator
Express Web 开发框架,ES6
下载地址:
https://nodejs.org/en/download
查看版本号,确认是否安装了
建立编写JavaScript脚本文件,打开终端,定位到脚本文件所在的目录,输入文件名,执行对应的文件,解析执行JavaScript。
fs是file-system的简写,是文件系统的意思,在浏览器中JavaScript是没有文件操做的能力,而在node中的JavaScript具备文件操做的能力。
fs.readFile 就是用来读取文件的。
// 使用require方法加载fs核心模块 var fs = require('fs') // 读取文件 fs.readFile('') // 读取文件 // 第一个参数读取文件的路径 // 第二个蚕食是一个回调函数 fs.readFile('./data/helllo.txt', function(error, data){ // console.log(data.toString()); if(error){ console.log('读取文件出错了'); }else{ console.log(data.toString()); } })
var fs = require('fs') // 第一个参数,文件路径 // 第二个参数,文件内容 // 第三个参数,回调函数 fs.writeFile('./data/dada.txt', 'hello, dada', function(error){ // console.log('dada'); if(error){ console.log('写入失败') }else{ console.log('写入成功') } })
核心模块HTTP:
// 加载核心模块 var http = require('http') // 使用 http.createServer()方法建立一个web服务器 // 返回一个 server实例 var server = http.createServer() // 服务器提供数据 // 注册 request 请求事件 server.on('request', function(){ console.log('收到客户端的请求'); }); // 绑定端口号,启动服务器 server.listen(3000, function(){ console.log('服务器启动成功了'); })
request 请求事件处理函数
Request 请求对象
请求对象用来获取客户端的请求信息
Response 响应对象
响应对象用来给客户端发送响应消息
var http = require('http') var server = http.createServer(); server.on('request', function(request, response) { console.log('dada'); // response 对象有一个方法,write 用来给客户端发送响应数据 response.write('dada'); // write 方法能够屡次使用,最后必定要加 end()方法来结束响应,不然 // 客户端会一直等待 response.write('da'); response.end(); }) server.listen(3000, function(){ console.log('服务器'); });
如何当请求不一样的路径来响应不一样的消息
来判断 request.url 使用 if 便可。
浏览器中的JavaScript有什么?
有EcmaScript,BOM,DOM。
var http = require('http') var server = http.createServer() server.on('request', function(req, res) { // console.log(req.url); // 直接在end里面写 // res.end('hello dada'); var url = req.url if(url === '/') { res.end('index'); } else if(url === '/login'){ res.end('login page'); }else{ res.end('404'); } }); server.listen(3000, function(){ console.log('启动服务器'); })
// 用来获取机器信息 var os = require('os') // 用来操做路径 var path = require('path') // 获取当前机器的cpu信息 console.log(os.cpus()) // memory内存 console.log(os.totalmem()) // extname extension 获取一个路径中的扩展名部分 console.log(path.extname('c:/data/hello.txt'));
模块做用域,文件做用域,超出文件的无论用,node中,没有全局做用域,只有模块做用域,外部访问不到内部,内部访问不到外部
exports 为默认是一个空对象
var foo = 'dada' exports.foo = 'hello' var age = 12 exports.age = age
响应内容类型
res.setHeader('Content-Type','text/plain;charset=utf-8') res.setHeader('Content-Type','image/jpeg')
url为统一资源定位符
一个url最终实际上是要对应到一个资源的
Content-Type类型:
tool.oschina.net/commons
Node中的JavaScript:
EcmaScript:方法,变量,数据类型,内置对象,Array,Object,Date,Math。
Http请求,有require,端口号,ip地址定位计算机,端口号。
建议学习的资料:
《深刻浅出Node.js》
《Node.js权威指南》
JavaScript标准参数教程:
http://javascript.ruanyifeng....
Node入门:
http://www.nodebeginner.org/i...
官方api文档:
https://nodejs.org/en/
CNODE社区:
http://cnodejs.org
做者Info:
【做者】:Jeskson
【原创公众号】:达达前端小酒馆。
【福利】:公众号回复 “资料” 送自学资料大礼包(进群分享,想要啥就说哈,看我有没有)!
【转载说明】:转载请说明出处,谢谢合做!~
大前端开发,定位前端开发技术栈博客,PHP后台知识点,web全栈技术领域,数据结构与算法、网络原理等通俗易懂的呈现给小伙伴。谢谢支持,承蒙厚爱!!!
若本号内容有作得不到位的地方(好比:涉及版权或其余问题),请及时联系咱们进行整改便可,会在第一时间进行处理。
这是一个有质量,有态度的博客