Node.js 介绍
服务器
1.1 为什么要学Node.js
学习 node.js 主要是做服务器
font-end / back-end
基本的网站开发能力
服务端
前端
运维部署
企业需求
全栈开发工程师
1.2 Node.js 是什么
Node.js® is a JavaScript runtime built onChrome's V8 JavaScript engine.
Node.js 不是一门语言,不是库,不是框架
Node.js 是一个 JavaScript 运行时环境
Node.js 可以解析和执行 JavaScript 代码
现在的 JavaScript 可以完全脱离浏览器运行
浏览器的 JavaScript
基本语法等
ECMAScript
DOM
BOM
Node.js 里的 JavaScript
文件读写
网络服务的构建
网络通信
HTTP 服务器
没有 DOM , BOM
ECMAScript
在 Node 中为 JavaScript 提供一些服务器级别的操作 API
构建于 chrome 的 V8 引擎之上
代码只是具有特定格式的字符串而已
引擎可以认识 js ,引擎可以帮你去解析和执行
Google chrome 的 V8 引擎是目前工人的解析执行 JavaScript 代码最快的
Node.js 的作者把 Google chrome 中的 V8 引擎移植了出来,开发了一个独立的 JavaScript 运行时环境
Node.js uses an event-driven, non-blocking I/O model that makes it lightweigth and efficient.
Node.js' package ecosystem,npm, is the largest ecosystem of open source libraries in the world.
1.3 Node.js 能做什么
Web 服务器后台
命令行工具
npm(node)
git(c 语言开发的)
hexo(node)
对于前端开发工程师来说,接触 node 最多的时它的命令行工具
webpack
npm
1.4 预备知识
HTML
CSS
JavaScript
简单的命令行操作
cd
dir
ls
mkdir
rm
具有服务端开发经验更佳
安装
2.1 版本
LTS 长期支持版
Current 最新版
2.2 hello world
在相应的目录下就可以执行 js 代码
不要以命名文件,也最好不要用中文
在 node 中没有 BOM、DOM
2.3 读写文件
引入 fs 模块
读取文件
function(error, data)
读取失败 error 就是错误对象,否则是 null
读取成功 data 就是数据,否则是null
fs.readFile(url, callback)
第一个参数是读取的文件路径
第二个参数是回调函数
默认是二进制文件读取后转成十六进制,可以用 toString 方法转换
写文件
fs.writeFile(url, data, callback)
第二个参数是文件内容
2.4 http
核心模块
引入模块
http.createServer() 方法创建一个 Web 服务器,返回一个 Server 实例
服务器要做的事
处理函数里第一个参数是 request,第二个参数是 response
response 对象有一个方法: write 可以用来给客户端发送显影数据
response.write 可以用多次,但要用 response.end() 结束
直接 response.end() 也可以直接返回数据,响应内容只能是字符串
JSON.stringify() 可以将 json 转成字符串
response里的 url 都是以开头的
绑定端口号,启动服务器
Node 中的 JavaScript
ECMAScript
没有 DOM、BOM
核心模块
第三方模块
用户自定义模块
3.1 核心模块
Node 为 JavaScript 提供了很多服务器级别的 API,这些 API 绝大多数都被包装到了一个具名的核心模块中了。
例如:
varfs=require('fs')
varhttp=require('http')
3.2 模块作用域
在 Node 中,没有全局作用域,只有模块作用域,外部不能直接访问到内部,内部也直接访问外部
用 require 加载模块
用户自定义模块中的相对路径中的不能省略
每个文件模块中都提供了一个对象 exports 导出模块,默认是个空对象
端口
计算机中只有一个物理网卡,而且同一个局域网中,网卡的地址必须是唯一的
IP 地址用来定位计算机
端口号用来定位具体的应用程序
所有需要联网通信的软件都必须占用一个端口号
端口号的范围从 0 - 65536 之间
计算机中有些默认端口号,最好不要去使用,用没有意义的端口就好
响应内容
在服务端默认发送的数据,其实是 utf-8 编码的内容
浏览器在不知道服务器相应内容的编码的情况下会按照当前操作系统的默认编码去解析
中文操作系统的默认编码是 gbk
解决方法
Content-Type 在 http 协议中发送的数据类型
text/plain 是普通文本,如果要发送的是 html 字符串,则要用 text/html
图片就不需要指定编码
领取专属 10元无门槛券
私享最新 技术干货