官网:
https://nodejs.org/en/

http://nodejs.cn/

Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境。
Node.js 使用了一个事件驱动、非阻塞式 I/O 的模型,使其轻量又高效。
Node.js 的包管理器 npm,是全球最大的开源库生态系统。

后端流行语言:
java #C node.js

验证版本:
node -v或–version
npm -v或–version或–v或-version

js组成:
1、DOM
2、BOM
3、ECMAScript

node文件的命名:
不能用:node.js 或 nodejs.js

node 用来写服务器

http 的端口:80
https 的端口:433

创建服务器:3步

1.引入模块
2.创建服务
3.监听端口

readFile 异步读取文件(有回调函数)
readFileSync 同步读取文件(无回调函数)

ajax:Asynchronous JavaScript and XML

异常处理try…catch

try{
//有可能出错的代码
}catch(e){//error
//补救的代码 或 提示信息
}

fs.readFile(“地址、路径”[,编码],回调函数(err,data){…});
fs.readFileSync(“地址、路径”[,编码]);
Buffer对象

utf-8/utf8/data+””/data.toString();

  1. //1.引入模块
  2. var http = require("http");
  3. var fs = require("fs");
  4. //2.创建服务
  5. var server = http.createServer(function(req,res){
  6. var url = req.url;
  7. console.log("url:",url);
  8. fs.readFile("www"+url,function(err,data){
  9. if (err) {
  10. res.end("404");
  11. }else{
  12. res.end(data);
  13. }
  14. });
  15. });
  16. //3.监听端口
  17. server.listen(9000,function(){
  18. console.log("服务器已开启:http://localhost:9000");
  19. });

服务器运行:
1.打开服务器:
image
2.浏览器访问:
image
3.服务器响应:
image

user.html

  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <meta charset="UTF-8">
  5. <title></title>
  6. </head>
  7. <script src="jquery.js"></script>
  8. <script>
  9. $(function(){
  10. var $oUser = $("#username");
  11. var $oPass = $("#pass");
  12. var $oLogin = $("#login");
  13. var $oReg = $("#reg");
  14. $oLogin.click(function(){
  15. $.ajax({
  16. url:"/login",
  17. data:{
  18. user:$oUser.val(),
  19. pass:$oPass.val()
  20. },
  21. dataType:"json",
  22. success:function(json){
  23. console.log(json);
  24. }
  25. });
  26. });
  27. $oReg.click(function(){
  28. $.ajax({
  29. url:"/reg",
  30. data:{
  31. user:$oUser.val(),
  32. pass:$oPass.val()
  33. },
  34. dataType:"json",
  35. success:function(json){
  36. console.log(json);
  37. }
  38. });
  39. });
  40. });
  41. </script>
  42. <body>
  43. 用户名:<input id = "username" type="text" value="aaa"/><br />
  44. 密码: <input id ="pass" type="text" value="123"/><br />
  45. <input id = "login" type="button" value="登录"/>
  46. <input id = "reg" type="button" value="注册"/>
  47. </body>
  48. </html>

user.js

  1. var http = require("http");
  2. var fs = require("fs");
  3. var users = {aaa:123};
  4. var server = http.createServer(function(req,res){
  5. var url = req.url;
  6. console.log("url:",url);
  7. var GET = {};
  8. if(url.indexOf("?") != -1){//接口
  9. var arr1 = url.split("?");
  10. url = arr1[0];
  11. var arr2 = arr1[1].split("&");
  12. for(var i = 0; i < arr2.length; i++){
  13. var arr3 = arr2[i].split("=");
  14. GET[arr3[0]] = arr3[1];
  15. }
  16. console.log("url:",url,"GET:",GET);
  17. if(url == "/login"){
  18. var username = GET.user;
  19. var password = GET.pass;
  20. if(!users[username]){
  21. res.end('{"error":0,"msg":"用户名或者密码不正确"}');
  22. }else{
  23. if(users[username] == password){
  24. res.end('{"error":0,"msg":"登录成功"}');
  25. }else{
  26. res.end('{"error":0,"msg":"用户名或者密码不正确"}');
  27. }
  28. }
  29. }else if(url == "/reg"){
  30. var username = GET.user;
  31. var password = GET.pass;
  32. /*res.end('{"error":1,"msg":"reg"}');*/
  33. if(users[username]){
  34. res.end('{"error":1,"msg":"用户名存在"}');
  35. }else{
  36. users[username] = password;
  37. res.end('{"error":1,"msg":"注册成功"}');
  38. }
  39. }
  40. }else{
  41. fs.readFile("www"+url,function(err,data){//文件
  42. if(err){
  43. res.end("404");
  44. }else{
  45. res.end(data);
  46. }
  47. })
  48. }
  49. });
  50. server.listen(9000,function(){
  51. console.log("服务器已打开");
  52. })

user2.js:引入url模块直接获取json对象

  1. var http = require("http");
  2. var fs = require("fs");
  3. var modUrl = require("url");
  4. var users = {aaa:123};
  5. var server = http.createServer(function(req,res){
  6. var url = req.url;
  7. console.log("url:",url);
  8. var GET = {};
  9. var urlObj = modUrl.parse(url,true);
  10. url = urlObj.pathname;
  11. GET = urlObj.query;
  12. if(url == "/login"){
  13. var username = GET.user;
  14. var password = GET.pass;
  15. if(!users[username]){
  16. res.end('{"error":0,"msg":"账号或密码输入错误!"}');
  17. }else{
  18. if(users[username] == password){
  19. res.end('{"error":0,"msg":"输入正确"}');
  20. }else{
  21. res.end('{"error":0,"msg":"账号或密码输入错误!"}');
  22. }
  23. }
  24. }else if(url == "/reg"){
  25. var username = GET.user;
  26. var password = GET.pass;
  27. if(users[username]){
  28. res.end('{"error":1,"msg":"用户名已存在,请重新输入"}');
  29. }else{
  30. users[username] = password;
  31. res.end('{"error":1,"msg":"注册正确"}');
  32. }
  33. }else{
  34. fs.readFile("www" + url,function(err,data){
  35. if(err){
  36. res.end("404");
  37. }else{
  38. res.end(data);
  39. }
  40. })
  41. }
  42. });
  43. server.listen(9000);

运行效果:

image

image

版权声明:本文为zhongchao666原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/zhongchao666/p/9285520.html