-
node.js介绍:node.js不是一门语言,也不是库或者框架,node.js是一个javascript运行时的环境;node.js可以解析和执行javascript代码; -
node.js和浏览器中的javascript中的不同:浏览器中的javascript是由三部分构成的:EcmaScript,DOM,BOM; node.js中的javascript只有Ecmascript,没有DOM和BOM,在node.js这个javascript执行环境中为javascript提供了一些服务器级别的操作API,例如:文件读写,网络服务构建,网络请求和响应等。 node相当于在学习后台服务处理开发,只不过后台服务编程使用的是javascript语言而已; -
node特性:事件驱动,非阻塞I/O模型(简单说就是异步操作),轻量高效; -
node能够做什么:web服务器后台 命令行工具:例如,npm,git,webpack等; 简单的命令行操作:cd dir ls mkdir rm -
B/S编程模型:Browser-Server,模块化编程:将不同功能的函数封装起来,并提供使用接口,他们彼此之间互不影响。 -
利用node搭建js环境,不通过浏览器执行js代码: -
fs模块读写文件: fs模块写文件方法: -
http服务:http模块的引用思路:加载http核心模块;创建一个web服务器;注册request请求事件;绑定端口号,启动服务器;
let http = require("http");
let server = http.createServer();
server.on("request", function () {
console.log("收到客户端的请求了啊");
});
server.listen(3000, function () {
console.log(
"服务器启动成功了,可以通过浏览器访问http:localhost:3000发请求了"
);
});
前后端交互:
let http = require("http");
let server = http.createServer();
server.on("request", function (request, response) {
console.log(request.url);
response.writeHead(200, {
"Content-Type": "text/html;charset=utf-8",
"Access-Control-Allow-Origin": "*",
});
if (request.url == "/login") {
response.end("结束了");
}
});
server.listen(3000, function () {
console.log(
"服务器启动成功了,可以通过浏览器访问http:localhost:3000发请求了"
);
});
let http = require("http");
let fs = require("fs");
let server = http.createServer();
server.on("request", function (request, response) {
console.log(request.url);
if (request.url == "/demo3") {
fs.readFile("demo2.html", function (err, data) {
if (err) {
console.log(err);
} else {
console.log(err);
console.log(data);
console.log(data.toString());
response.end(data);
}
});
}
});
server.listen(3000, function () {
console.log(
"服务器启动成功了,可以通过浏览器访问http:localhost:3000发请求了"
);
});
- 前端通过ajax请求并渲染
let http = require("http");
let fs = require("fs");
let server = http.createServer();
server.on("request", function (request, response) {
console.log(request.url);
response.writeHead(200, {
"Content-Type": "text/html;charset=utf-8",
"Access-Control-Allow-Origin": "*",
});
if (request.url == "/demo3") {
fs.readFile("demo2.html", function (err, data) {
if (err) {
console.log(err);
} else {
console.log(err);
console.log(data);
console.log(data.toString());
response.end(data);
}
});
} else if (request.url == "/ajax") {
response.end("我是ajax返回值");
}
});
server.listen(3000, function () {
console.log(
"服务器启动成功了,可以通过浏览器访问http:localhost:3000发请求了"
);
});
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<script src="./jquery-1.11.1.min.js"></script>
</head>
<body>
<script>
$(function(){
$.get('http:localhost:3000/ajax',function(res){
console.log(res);
})
})
</script>
</body>
</html>
解决乱码问题:
let http = require("http");
let fs = require("fs");
let server = http.createServer();
server.on("request", function (request, response) {
console.log(request.url);
response.writeHead(200, {
"Content-Type": "text/html;charset=utf-8",
"Access-Control-Allow-Origin": "*",
});
if (request.url == "/login") {
response.setHeader("Content-Type", "text/plain;charset=uti-8");
response.write("我是demo1");
response.end("666");
}
});
server.listen(3000, function () {
console.log(
"服务器启动成功了,可以通过浏览器访问http:localhost:3000发请求了"
);
});
|