1.Node介绍
1.1为什么要学习Node.js
企业需求:
- 具有服务端开发经验更佳
- front-end
- back-end
- 全栈开发工程师
- 基本的网站开发能力
- 服务端
- 前端
- 运维部署
1.2Node.js是什么
- Node.js是JavaScript 运行时(runtime)
- 通俗易懂的讲,Node.js是JavaScript的运行平台
- Node.js既不是语言,也不是框架,它是一个平台
浏览器中的JavaScript
- EcmaScript
- 基本语法
- if
- var
- function
- Object
- Array
- Bom
- Dom
Node.js中的JavaScript
- 没有Bom,Dom
- EcmaScript
- 在Node中这个JavaScript执行环境为JavaScript提供了一些服务器级别的API
- 例如文件的读写
- 网络服务的构建
- 网络通信
- http服务器
构建与Chrome的V8引擎之上
- 代码只是具有特定格式的字符串
- 引擎可以认识它,帮你解析和执行
- Google Chrome的V8引擎是目前公认的解析执行JavaScript代码最快的
- Node.js的作者把Google Chrome中的V8引擎移植出来,开发了一个独立的JavaScript运行时环境
Node.js uses an envent-driven,non-blocking I/O mode that makes it lightweight and efficent.
- envent-driven 事件驱动
- non-blocking I/O mode 非阻塞I/O模型(异步)
- ightweight and efficent. 轻量和高效
Node.js package ecosystem,npm,is the larget scosystem of open sourcr libraries in the world
- npm 是世界上最大的开源生态系统
- 绝大多数JavaScript相关的包都存放在npm上,这样做的目的是为了让开发人员更方便的去下载使用
- npm install jquery
1.3Node能做什么
-
web服务器后台
-
命令行工具
* npm(node)
* git(c语言)
* hexo(node)
* 。。。 -
对于前端工程师来讲,接触最多的是它的命令行工具
* 自己写的很少,主要是用别人第三方的
* webpack
* gulp
* npm
2.起步
2.1安装Node环境
-
查看Node环境的版本号
-
下载:https://nodejs.org/en/
-
安装:
- 傻瓜式安装,一路
next
- 安装过再次安装会升级
- 傻瓜式安装,一路
-
确认Node环境是否安装成功
- 查看node的版本号:
node --version
- 或者
node -v
- 查看node的版本号:
-
配置环境变量
hello node.js的实现
1.创建编写JavaScript脚本文件
2.打开终端,定位到脚本文件所属目录
3.输入
node 文件名
执行对应的文件注意:文件名不要使用
node.js
来命名。除了该名,随便取,最好不要使用中文。
2.2REPL
read读取
eval执行
print输出
loop循环
node中的console:在终端直接输入node命令回车。
这个环境的作用只是用来帮助我们做一些辅助测试,例如在里面可以直接使用node中的核心模块而不需要require加载。
2.3解析执行JavaScript
- 创建编写JavaScript脚本文件
- 打开终端,定位脚本文件的所属目录
- 输入
node 文件名
执行对应的文件
注意:文件名不要用node.js
来命名,也就是说除了node
这个名字随便起,最好不要使用中文。
2.4文件的读写
文件读取:
//浏览器中的JavaScript是没有文件操作能力的
//但是Node中的JavaScript具有文件操作能力
//fs是file-system的简写,就是文件系统的意思
//在Node中如果想要进行文件的操作就必须引用fs这个核心模块
//在fs这个核心模块中,就提供了人所有文件操作相关的API
//例如 fs.readFile就是用来读取文件的
// 1.使用fs核心模块
var fs = require('fs');//node的API,浏览器不认识,浏览器报错require is not defined(同样是JS代码,放在不同的环境,解析结果不一样)
// 2.读取文件
//第一个参数是要读取的文件路径
//第二个参数是一个回调函数
//error 如果读取失败,error就是错误对象,如果读取成功,error就是null
//data 如果读取成功,data就是读取到的数据,如果读取失败,data就是null
//成功 -data 数据 -error null
//失败 -data undefined -error 错误对象
fs.readFile('./data/a.txt',function(err,data){
// <Buffer 68 65 6c 6c 6f 20 6e 6f 64 65 6a 73 0d 0a>
// 文件中存储的其实都是二进制数据 0 1
// 这里为什么看到的不是 0 和 1 呢?原因是二进制转为 16 进制了
// 但是无论是二进制01还是16进制,人类都不认识
// 所以我们可以通过 toString 方法把其转为我们能认识的字符
// console.log(data)
console.log(data)
if(err){
console.log('文件读取失败');
}
else{
console.log(data.toString());
}
})
文件写入:
// 1.使用fs核心模块
var fs = require('fs');
// 2.将数据写入文件
// $.ajax({
// ...
// success: function (data) {
// }
// })
// 第一个参数:文件路径
// 第二个参数:文件内容
// 第三个参数:回调函数
// error
//
// 成功:
// 文件写入成功
// error 是 null
// 失败:
// 文件写入失败
// error 就是错误对象
fs.writeFile('./data/a.txt','我是文件写入的信息',function(err){
if(err){
//文件名不合格就会写入失败
console.log('文件写入失败');
}
else{
console.log('文件写入成功');
}
})
2.5 http
服务器:
// 1.加载http核心模块
var http = require('http');
// 2.使用http.createServer()创建一个web服务器
var server = http.createServer();
// 3.服务器要做的事儿
// 提供服务:对数据服务
// 发请求
// 接收请求
// 处理请求
// 反馈(发送响应)
// 当客户端请求过来,就会自动触发服务器的request请求事件,然后执行第二个参数:回调处理函数
server.on('request',function(){
console.log('收到客户的请求了')
})
// 4.绑定端口号,启动服务
server.listen(3000,function(){
console.log('runing...')
})