为什么要学习Node.js
- 企业需求 具有服务端开发经验更好
- 全栈开发工程师
Node.js是什么
- Node.js不是一门语言,库,框架,是一个JavaScript运行时的环境
- 也就是说,现在的JavaScript可以完全脱离浏览器来运行,一切都归功于Node.js
- Node.js中没有BOM,DOM
- 在Node这个JavaScript执行环境中为JavaScript提供了一些服务器级别的操作API
- 例如文件读写
- 网络服务的构建
- 网络通信
- http服务器
- 等处理…
- npm时世纪额上最大的开源库生态系统
- 绝大多数JavaScript相关的包都存放在了npm上,这样做的目的时为了让开发人员更方便的去下载使用
Node.js能做什么
-
Web服务器后台
-
命令行工具
- npm
- git
- hexo
-
对于前端开发工程师来讲,接触node最多的时它的命令行工具
- 自己写的很少,主要是使用别人第三方的
- webpack
- gulp
- npm
学习目标
- B/S变成模型
- 模块化编程
- @import(‘文件路径’)
- 以前的JS只能通过script标签来加载
- Node常用API
- 异步编程
- 回调函数
- Promise
- async
- generator
- Express Web开发框架
- Ecmascript 6
- …
node环境安装
这个直接去官网下载就好了
查看node版本的命令node --version
返回版本号就说明下载成功了
hello wolrd
- 1.用cd切换到js文件所在文件下
- 2.
node xxx.js
就可以运行xxx.js文件了
读取文件
浏览器中的JavaScript是没有文件操作的能力的
但是Node中的JavaScript具有文件操作的能力
// fs 是filesystem的简写,就是文件系统的意思
// 在Node中如果想要进行文件操作,就必须引入fs这个核心模块
// 在fs这个核心模块中,提供了所有的文件操作相关的API
// 例如:fs.readFile就是用来读取文件的
// 1.使用require方法加载fs核心模块
var fs=require('fs')
// 2.读取文件
// 第一个参数就是要读取的文件路径
// 第二个参数是一个回调函数
// error
// 读取失败,error就是错误对象,否则是null
// data
// 读取成功,data就是读取到的数据,否则是null
fs.readFile('./temp.txt',function(error,data){
// 文件中存储的都是0 1数据
// 通过toString方法转为我们能认识的字符
console.log(data.toString());
})
写文件
// 文件路径
// 文件内容
// 回调函数
fs.writeFile('./temp.txt','大家好!!!',function(error){
console.log('文件写入成功');
})
简单的http服务
// 在Node中专门提供了一个核心模块:http
// 这个模块的职责就是棒你创建编写服务器的
// 1.加载http核心模块
var http=require('http')
// 2.使用http.createServer()方法创建一个Web服务器
// 返回一个Server实例
var serve=http.createServer()
// 3.服务器要干嘛?
/*
提供数据服务
发请求
接收请求
处理请求
发送响应
*/
// 注册request请求事件,当客户端请求过来,就会自动触发服务器的request请求事件,然后执行回调处理
serve.on('request',function(){
console.log('收到客户端的请求了');
})
// 4.绑定端口号,启动服务器
serve.listen(3000,function(){
console.log('服务器启动成功了!,可以通过http://127.0.0.1:3000/ 来进行访问');
})
ctrl+c
可以关闭服务
发送响应
// request 请求事件处理函数,需要接收两个参数
// Request 请求对象 可以用来获取客户端的一些请求信息,例如请求路径
// Response 响应对象 可以用来给客户端发送响应消息
serve.on('request',function(request,response){
console.log('收到客户端的请求了,请求路径是'+request.url);
// response 对象有一个方法:write,可以用来给客户端发送响应数据
// write可以使用多次,但是最后一定要使用end来结束响应,否则客户端会一直等待
response.write('hello')
response.end()
})