概览
当浏览器输入www.baidu.com的时候,敲下回车会发生什么
- 利用DNS域名解析系统进行域名解析,并将域名解析成IP(域名只是一个别名,计算机是只认识IP的,所以用DNS解析,如果有端口号就识别端口号,否则进入默认端口)
初识Node.js
基于chrome V8引擎的JavaScript(服务器端的浏览器)
Node.js的包管理器npm,是全球最大的开源库生态系统
nodejs是运行后端的,nodejs并不是新的语言,而是能够在服务器端运行js的执行环境,Node.js是基于JavaScript语言和V8引擎的开源web服务器项目
node.js可以做什么
- 处理文件与数据库
- 与互联网进行沟通,以标准化的格式处理请求并发送回答(处理客户端请求)【就是处理请求,返回数据】
- 执行编译CSS预编译语言、预编译、压缩、混淆JS、压缩图片、reload、deploy等工程化任务
node.js优点
- 处理高并发场景性能更高
- 事件驱动、异步编程、为网络服务而设计
- 适用于I/O密集型的应用,不适用于CPU密集型的应用
(node.js更多是做中间层代理,并不适合进行大量算法)
node.js模块以及使用方法
核心模块
node.js自带的:os、fs(文件系统模块)、http等
方法:
在git里面打开node环境,执行js文件
之后在js文件里编辑:
const fs = require(‘js’)
//require是nodejs一个方法,const这个方法可以进行文件增删改查
//查
//异步读取
fs.readFile('./data.txt',(err,data) => {
if(err) throw err
data本身是一个buffer(流).需要toSrting转成字符串
else console.log(data.toString())
})
//同步读取
const data = fs.readFileSync('./data.txt')
console.log(data)
//写
//如果文件已经存在,写入的内容会覆盖原内容
//如果文件不存在那就创建文件写入内容
fs.writerFile('./data.txt','hello boy',(err) => {
if(err) throw err
else console.log('done.')
})
//如果文件已经存在,写入的内容会追加在原内容后面
//如果文件不存在,那就创建文件写入内容
fs.appendFile('./data.txt','hello boy',(err) => {
if(err) throw err
else console.log('done.')
})
//改
//如果想修改文件部分内容,只能先读,然后取出来,修改后再重新写入
//删除目录(只能删空目录)
fs.rmdir('./abc',err => {
if (err) throw err
else console.log('deleted.')
})
//删除文件
fs.unlink('./data.txt',err => {
if (err) throw err
else console.log('deleted.')
})
//密码加密
const crypto = require('crypto')
var password = '123'
const secret = 'mwl123'
//secret是一个密钥 密钥不同加密结果也不同
//只能加密不能解密 可以拿两次加密的结果来比较 结果一样原文也一样
var res = crypto.createHmac('sha256',secret).update(password).digest('hex')
console.log(res)
//http
const http = require('http')
http.createServer((req,resp) => {
//创建一个服务器
//传递不同的req(前端请求的信息)
//resp就是给前端返回的数据
//一般很少手动在项目里创建,一般都用库、框架等完成,此处仅作演示
//根据不同url解析出里面的内容
console.log(req.url)
//query参数
console.log(req.query)
//通过调用write方法向前端返回数据
resp.write('<h1>response</h1>')
resp.write('<h2>response</h2>')
//别忘了end()
resp.end()
}).listen(8080)
//listen是监听,因为我们的服务器不能停,需要listen前端发送的数据随时响应
自定义模块(commonJs规范)
module.exports(导出)、requires(导入)
- 作为自定义模块,希望别的模块可以使用该文件定义的东西,首先需要导出(一般都是对象)
- 导出的语句要放最后一句
第三方模块
gulp等,需要在命令行里执行npm install模块名称
网站在npmjs.com
首先我们要先建立一个项目
然后cd我们的项目
然后npm init - y创造初始化环境
npm i 包名 安装
然后require引入
根据说明书使用