这篇文章主要是了解node.js的基础知识,包括node.js是什么?node.js能干什么?以及学习node的几个核心模块的小栗子。包括node读写文件,和利用http这个核心模块创建一个简单的web服务器。
了解node.js
- 1.1 node.js是什么?
- Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境。
- node不是一门语言
- node.js不是框架,不是库
- node.js是JavaScript运行时环境,简单来讲node.js可以解析和执行JavaScript代码
- 以前只有浏览器能解析JavaScript代码,有了node.js后JavaScript可以脱离浏览器运行
- Chrome V8 引擎是目前公认的解析JavaScript最快的
- node.js作者把Google Chrome v8 引擎移植出来,开发了一个独立的JavaScript运行时环境。
- Node.js 使用了一个事件驱动、非阻塞式 I/O 的模型,使其轻量又高效。
1.2 npm
- npm是世界上最大的开源库生态系统
- 绝大多数的JavaScript相关包都放在了npm上,这样做的目的是方便开发人员下载使用
- eg:npm install jQuery
1.3 浏览器中的javascript
- ECMAScript
- 基本语法
- if
- var
- function
- Object
- Array
- BOM
- DOM
- 1.4 Node.js中的JavaScript
- 没有BOM、DOM
- ECMAScript
- 在node这个JavaScript执行环境中为JavaScript提供一些服务器级别的操作API
- 文件读写
- 网络服务的构建
- 网络通信
- http服务器
- 。。。
node.js能做什么?
- web服务器后台
- 命令行工具
- npm(基于node)
- git(基于C语言)
- hexo(基于node)
- 对前端开发来讲接触node最多的是她的命令行工具,自己写的很少
开始学习node.js
2.1 读取文件
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| let fs = require('fs');
fs.readFile('./data/my.txt', function (error, data){ if(error){ console.log('读取文件失败') }else{ console.log(data.toString()); } });
|
2.2 写文件
1 2 3 4 5 6 7 8 9 10
|
fs.writeFile('./data/hello.md', '测试写入内容jack like node', function (error){ if(error){ console.log('写入文件失败'); }else{ console.log('写入文件成功'); } });
|
2.3 使用node构建一个web服务器
- Node专门提供了一个核心模块:http负责构建服务器
- 使用 http.createServer()方法创建一个web服务器
- 服务器要干什么?
- 提供对数据的服务
- 发请求、接受请求、处理请求
- 注册 request 请求事件
- 当客户端请求过来,就会自动触发服务器的 request 的请求事件然后触发回调
- 发回响应
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
| let http = require('http');
let server = http.createServer();
server.on('request', function (request, response){ var url = request.url; if(url == '/phone'){ var products = [ {name: 'iphone X', price: 9999}, {name: 'smartisan R1', price: 8888} ] response.end(JSON.stringify(products)); }else{ response.end('404 Not Found'); } });
server.listen(3000, function (){ console.log('服务器启动成功了,可通过127.0.0.1:3000 访问'); });
|
2.4 使用node构建web服务器结合fs
发送文件数据
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37
|
const http = require('http'); const fs = require('fs');
let server = http.createServer(); server.on('request', function (req, res){ let url = req.url; if(url === '/'){ fs.readFile('./resource/index.html', function (err, data){ if(err){ res.setHeader('Content-type', 'text/plain; charset=utf-8'); res.end('读取文件失败') }else{ res.setHeader('Content-type', 'text/html; charset=utf-8'); res.end(data); } }); }else if(url === '/baby'){ fs.readFile('./resource/ab2.jpg', function (err, data){ if(err){ res.setHeader('Content-type', 'text/plain; charset=utf-8'); res.end('读取图片失败') }else{ res.setHeader('Content-type', 'charset=utf-8'); res.end(data); } }) } });
server.listen(3000, function (){ console.log('server is running .......'); });
|