一、Node.js是什么
1、是一个JS运行时环境(简单来说就是可以解析、执行js代码):不是一门语言/库/框架,只是一个平台
(1)Node.js中的JavaScript没有BOM、DOM,只有EcmaScript(基本语法),因为服务端不操作页面
(2)在Node这个javascript执行环境中为js提供了一些服务器级别的操作API(文件读写、构建网络服务、网络通信、http服务器等)
(3)Node没有html文件,只有.js文件
2、特性:使用事件驱动、非阻塞IO模型(简单来讲就是异步)、轻量高效
3、大多数与JS相关的包都放在npm上
例如:有了npm之后,一条命令就可以下在不同的库/框架(比如jquery),不用再到各个库/框架的官网上去下载
node请求静态服务器(最基本的请求)
var http=require('http');
var server=http.createServer();
server.on('request',function () {
console.log('收到客户请求了')
});
server.listen(3000,function () {
console.log('服务器启动成功了,可以通过 http://127.0.0.1:3000/ 来进行访问');
});
Node中模块系统
-
在 Node 中没有全局作用域的概念
-
在 Node 中,只能通过 require 方法来加载执行多个 JavaScript 脚本文件
-
require 加载只能是执行其中的代码,文件与文件之间由于是模块作用域,所以不会有污染的问题
-
模块完全是封闭的
-
外部无法访问内部
-
内部也无法访问外部
-
-
模块作用域固然带来了一些好处,可以加载执行多个文件,可以完全避免变量命名冲突污染的问题
-
但是某些情况下,模块与模块是需要进行通信的
-
在每个模块中,都提供了一个对象:
exports
-
该对象默认是一个空对象
-
你要做的就是把需要被外部访问使用的成员手动的挂载到
exports
接口对象中 -
然后谁来
require
这个模块,谁就可以得到模块内部的exports
接口对象 -
还有其它的一些规则,具体后面讲,以及如何在项目中去使用这种编程方式,会通过后面的案例来处理
核心模块
-
核心模块是由 Node 提供的一个个的具名的模块,它们都有自己特殊的名称标识,例如
-
fs 文件操作模块
-
http 网络服务构建模块
-
os 操作系统信息模块
-
path 路径处理模块
-
。。。。
-
-
所有核心模块在使用的时候都必须手动的先使用
require
方法来加载,然后才可以使用,例如:-
var fs = require('fs')
-
http
-
require:加载执行模块中的代码
-
端口号
-
ip 地址定位计算机
-
端口号定位具体的应用程序
-
-
Content-Type
-
服务器最好把每次响应的数据是什么内容类型都告诉客户端,而且要正确的告诉
-
不同的资源对应的 Content-Type 是不一样,具体参照:http://tool.oschina.net/commons
-
对于文本类型的数据,最好都加上编码,目的是为了防止中文解析乱码问题
-
-
通过网络发送文件
-
发送的并不是文件,本质上来讲发送是文件的内容
-
当浏览器收到服务器响应内容之后,就会根据你的 Content-Type 进行对应的解析处理
-