工作流程
提出需求->设计接口约定数据->前后端并行开发->前后端集成->前端调整页面->集成成功->交互
const http = require("http");
const server = http.createServer((req,res,next)=>{
res.writeHead(200,{
"Content-Type":"text/html;charset=utf-8"
});
res.write("hello world");
res.end();
})
nodejs中的js与浏览器中的js的区别
浏览器js:ECMAScript核心 + DOM + BOM
node中js:ECMAScript核心 + 全局成员 + 模块系统(系统模块、第三方模块、自定义模块)
全局成员:setTimeout,setInterval,console.log()等
注意:这几个名称和功能虽然与浏览器中一样,但是是nodejs自己实现的,与浏览器无关
nodejs系统模块
fs,http,url,path等
一个模块中包含了很多方法和属性,可以帮助我们实现不同的功能
node搭建web服务器
创建一个js文件,使用http模块搭建web服务器
引入http模块
const http = require("http");
创建服务器对象
const server = http.createServer();
开启服务器
server.listen(3000,()=>{
console.log("server is running...")
})
监听浏览器请求并进行处理
server.on("request",(req,res)=>{
res.end("Hello Nodejs")
//end方法能够将数据返回给浏览器,浏览器会显示该字符串
})
*on:该方法用来监听事件**
参数1(此处的request):事件类型,request代表浏览器请求事件
参数2:回调函数。当监听到浏览器请求后发出的回调函数,该函数中有两个参数
第一个参数(此处req):请求对象
第二个参数(此处res):响应对象
end方法能够将数据返回给浏览器,浏览器会显示该字符串
显示页面
在js文件统计目录下创建html文件
此时服务器js文件需要另一个模块:文件读取模块—>readfile
引入fs模块
const fs = require("fs")
调用readfile方法读取文件内容
fs.readFile("./**.html","utf-8",(err,data) => {
if(err){
return console.log(err);
}
console.log(data)
})
参数1:要读取的文件路径,相对路径和绝对路径均可(推荐使用绝对路径)
参数2:设置字符集,常用的中文字符集有三种:utf-8,gb2312,gbk
该参数是可选参数,如果不设置该参数,读取内容默认是二进制数据
参数3:读取完成后触发的回调函数,该函数中有两个参数 err和data
err:错误对象-如果读取正确:err为null;
如果读取失败:err为错误信息
data:文件中的数据
在console.log(data)处,便可以对文件内容的操作,data整个是以字符串类型被取出
创建服务器对象
const server = http.createServer();
开启服务器
server.listen(3000, () => {
console.log('Server is running...');
});
监听浏览器请求并进行处理
server.on('request', (req, res) => {
读取文件
fs.readFile('./index.html', 'utf-8', (err, data) => {
if (err) {
return console.log(err);
}
//end方法返回读取的文件字符串,浏览器会显示该文件内容
res.end(data);
})
注:用node启动服务器
tips:中文乱码问题
fs的readfile函数中第二个参数不可写,但是会造成页面中文乱码,另一个解决办法是,使用res(响应对象)中的setHeader方法:
res.setHeader("content-type","text/html;charset=utf-8")