nodejs简介:
nodejs 是运行在服务端的一门语言,语法完全是使用 Javascript 来实现的,对于前端人员来说,学习 nodejs 还是比较快速的。
nodejs 因为他是运行在服务端,所以不同于 javascript 的是:js 的全局变量是window,而 nodejs 的全局变量是global。所以之前我们用的 alert 等 window 所属的方法,在 node 环境中就不能使用了。因为我们常用的 console.log 是开发人员最常用的一种方法,所以特地在 node 中加入了此方法,以便开发人员使用。
nodejs核心模块
1.http
2.https
3.fs
4.url
5.path
nodejs创建一个服务
首先我们要有一个js文件运行在nodejs上;
- 引入http模块
- 调用http的 createServer 方法来创建一个服务的实例
- 调用server的listen方法来监听端口
// 1. 引入 http 模块
const http = require('http')
const fs = require('fs')
// 2. 调用 http 的 createServer 方法来创建 服务实例
const server = http.createServer((req, res) => {
// 过滤掉小图标的请求
if (req.url !== '/favicon.ico') {
console.log(req.url)
if (req.url === '/getName') {
res.writeHead(200, {
'Content-Type': 'text/html; charset=utf-8'
})
res.write('李威')
res.end()
} else if (req.url === '/index.html') {
// 1. 通过 fs.readFile() 来读取文件内容
fs.readFile('./views/index.html', (error, data) => {
if (error) {
res.write('error')
res.end()
} else {
res.write(data)
res.end()
}
})
}
else {
res.write('<h1>hello world</h1>')
res.end()
}
}
})
// 3. 调用 server 的 listen 方法来监听端口号
server.listen(8080)
res.write() 响应中文时,会出现乱码问题
解决办法是在res.write()之前,先调用 res.writeHead() 设置响应头 : Content-Type : text/html ; charset=utf-8
请求完数据之后,必须用 res.end() 结尾 , 不然页面会出现卡死状况 。
如果在运行的时候,要想修改js里面的内容,就必须要重新开启服务,这很不方便。这里可以引入一个nodemon包,它可以监听修改,不需要重启服务 。
全局安装nodemon npm install -g nodemon
由于node可以支持es6语法,所以可以写es6语法里面的内容。
nodejs是没有web容器概念的,所以想要读取文件,就必须要自己设置路径;
1.读取html文件,
2.读取css文件,
3.读取图片信息
const server = http.createServer((req,res)=>{
if(req.url !== '/favicon.ico'){ // 忽略icon地址
if(req.url === '/index.html'){ // 读取html文件
res.writeHead(200,{
'Content-Type':'text/html; charset=utf-8' // 设置响应头,否则html中的文字会出现乱码
})
fs.readFile('./web1/index.html',(error,data)=>{ // 读取html文件
if(error){
res.write('error');
res.end()
}else {
res.write(data);
res.end()
}
})
}else if(req.url === '/css/style.css'){
fs.readFile('./web1/css/style.css',(error,data)=>{ // 读取cssw文件
if(error){
res.write('error');
res.end()
}else{
res.write(data)
res.end()
}
})
}
else if(req.url === '/297487.jpg'){
fs.readFile('./web1/297487.jpg',(error,data)=>{ // 读取图片信息
if(error){
res.write('error');
res.end()
}else{
res.write(data)
res.end()
}
})
}
}
else{
res.write('hello world');
res.end()
}
})