nodejs基础 用http模块 搭建一个简单的web服务器 响应JSON、html
前端在开发中,大多会想浏览器获取json数据,下面来用nodejs中的http模块搭建一个返回json数据的服务器
var http = require("http"); var onRequest = function(request,response){ console.log("request received"); response.writeHead(200,{"Content-Type":"application/json"});//application/json:代表响应的是json // response.write("传回浏览器的内容"); var jsonObj={ name:"lili", job:"coder", age:18 } response.end(JSON.stringify(jsonObj));//将json传回浏览器 } var server = http.createServer(onRequest); //最后让服务器监听一个端口 server.listen(3000,"127.0.0.1");//还可以加第二个参数 127.0.0.1代表的是本地 console.log("server started on localhost port 3000");//加一个服务器启动起来的提示
然后运行 node app 启动服务器
在浏览器访问localhost:3000 发现浏览器会显示 响应的json数据
如果浏览器的json数据没有 格式化 我们需要装一个浏览器插件 JSON Formatter 安装过之后,显示的json数据就是格式化的
下面来创建一个响应html的web服务器:将Content-type的值改成text/html就行
var http = require("http"); var onRequest = function(request,response){ console.log("request received"); response.writeHead(200,{"Content-Type":"text/html"});//application/json:代表响应的是json // response.write("传回浏览器的内容"); var htmlFile = `<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <title>html</title> <style> div{ color:red; font-size:50px; } </style> </head> <body> <div>我是从服务器传回来的html页面</div> </body> </html>`; response.end(htmlFile);//将json传回浏览器 } var server = http.createServer(onRequest); //最后让服务器监听一个端口 server.listen(3000,"127.0.0.1");//还可以加第二个参数 127.0.0.1代表的是本地 console.log("server started on localhost port 3000");//加一个服务器启动起来的提示
然后启动服务器 页面访问localhost:3000 发现会出现html页面样式什么的都有!!!
但是这样 将html代码这样写在代码中 显的太粗暴了,我们可以将html页面写在一个文件中,然后用读取流读取过来
var http = require("http"); var fs = require("fs"); var onRequest = function(request,response){ console.log("request received"); response.writeHead(200,{"Content-Type":"text/html"}); // response.write("传回浏览器的内容"); var myReadStream = fs.createReadStream(__dirname+"/index.html","utf8");//用读取流,读取其它文件内的html内容 myReadStream.pipe(response);//将流读取到的内容写在响应中 注意这样不需要用写在response.end()中了 } var server = http.createServer(onRequest); //最后让服务器监听一个端口 server.listen(3000,"127.0.0.1");//还可以加第二个参数 127.0.0.1代表的是本地 console.log("server started on localhost port 3000");//加一个服务器启动起来的提示
app.js是项目的入口,如果把代码都写在其中,越写月臃肿,我们可以用模块化的思想,来整理一下我们的代码,我们可以将这个服务器相关的代码单独写在一个文件中,然后用require引入到app.js入口文件中执行:
我们创建一个server.js文件:
var http = require("http"); var fs = require("fs"); var startServer = function(){ var onRequest = function(request,response){ console.log("request received"); response.writeHead(200,{"Content-Type":"text/html"});//application/json:代表响应的是json // response.write("传回浏览器的内容"); var myReadStream = fs.createReadStream(__dirname+"/index.html","utf8");//用读取流,读取其它文件内的html内容 myReadStream.pipe(response);//将流读取到的内容写在响应中 注意这样不需要用写在response.end()中了 } var server = http.createServer(onRequest); //最后让服务器监听一个端口 server.listen(3000,"127.0.0.1");//还可以加第二个参数 127.0.0.1代表的是本地 console.log("server started on localhost port 3000");//加一个服务器启动起来的提示 } module.exports.startServer=startServer;
然后在app.js中引入
var server = require("./server"); server.startServer();
这样看着app.js就干净了许多
这就是模块化的思想,也可以称为重构。。。