• 2.node.js (二)服务器登录注册 与 包的发布


    get: 不安全 小 2k 数据会在地址栏上显示 从服务器获取 快
    post: 相对安全 https 大 1G 不会 向服务器发送 慢
    get:直接解析url地址     
    借助 url模块
    
    var urlObj = modUrl.parse(url,true);    
    
    urlObj:{pathname,query} 
    
    
    post:解析数据 需要 监听两个事件 
    
    var str = "";
    req.on("data",function(data){
    	str+=data;
    });
    req.on("end",function(){
    	  解析post数据  str=> user=xx&pass=xxx
    	  
    	  借助 querystring模块
    	  var POST = qs.parse(str);
    });
    
    
    req.method=>"GET" "POST"
    

    登录注册(get与post合并)

    user.html:
    <!DOCTYPE html>
    <html>
    	<head>
    		<meta charset="UTF-8">
    		<title></title>
    		<script src="jquery.js"></script>
    		<script>
    			$(function(){
    				$oUser = $("#user");
    				$oPass = $("#pass");
    				$oLogin = $("#login");
    				$oReg = $("#reg");
    				$oLogin.click(function(){
    					$.ajax({
    						type:"get",
    						url:"/login",
    						data:{
    							user:$oUser.val(),
    							pass:$oPass.val()
    						},
    						async:true,
    						success:function(str){
    							alert(str);
    						}
    					});
    				});
    				$oReg.click(function(){
    					$.ajax({
    						type:"get",
    						url:"/reg",
    						data:{
    							user:$oUser.val(),
    							pass:$oPass.val()
    						},
    						async:true,
    						success:function(str){
    							alert(str);
    						}
    					});
    				});
    			})
    		</script>
    	</head>
    	<body>
    		用户名:<input id = "user" type="text" value="aaa"/><br />
    		密码: <input id ="pass" type="text" value="123"/><br />
    		<input id = "login" type="button" value="登录"/>
    		<input id = "reg" type="button" value="注册"/>
    		
    	</body>
    </html>
    
    
    server.js
    var http = require("http");
    var fs = require("fs");
    var modUrl = require("url");
    var qs = require("querystring");
    var users = {aaa:123};
    var server = http.createServer(function(req,res){
    	
    	var url = req.url;
    	var str = "";
    	req.on("data",function(data){
    		str += data;
    	})
    	
    	req.on("end",function(){
    		var urlObj = modUrl.parse(url,true);
    		url = urlObj.pathname;
    		var GET = urlObj.query;
    		
    		var POST = qs.parse(str);
    		var params = req.method == "POST" ? POST : GET;
    		var username = params.user;
    		var password = params.pass;
    		if(url == "/login"){
    			if(users[username]){
    				if(users[username] == password){
    					res.end(JSON.stringify({"error":1,"msg":"登陆成功"}));
    				}else{
    					res.end(JSON.stringify({"error":0,"msg":"用户名或者密码错误"}));
    				}
    			}else{
    				res.end(JSON.stringify({"error":0,"msg":"用户名或者密码错误"}));
    			}
    		}else if(url == "/reg"){
    			if(users[username]){
    				res.end(JSON.stringify({"error":0,"msg":"用户名已存在"}));
    			}else{
    				users[username] = password;
    				res.end(JSON.stringify({"error":1,"msg":"注册成功"}));
    			}
    		}else{
    			
    			fs.readFile("www"+url,function(err,data){
    				if(err){
    					res.end("404");
    				}else{
    					res.end(data);
    				}
    			})
    			
    		}
    	})	
    	
    });
    
    server.listen("9000",function(){
    	console.log("服务器已打开!");
    })
    
    

    运行效果:

    打卡服务器
    image
    登录

    image
    image
    注册
    image

    image

    image

    image

    引入模块:
    1.自己写的模块在同级目录里,通过"./mode.js"引入,
    2.放到node_modules文件夹中,通过 "mode.js" 访问.

    exports一个一个的导出.

    module.exports 批量导出.

    批量导出优先级最高,不覆盖,与次序无关

    NPM: node package manager 包管理器

    模块组成:

    1、系统模块 http fs url querystring
    2、第三方模块 jquery vue mysql
    3、自定义模块 jsonp str2json

    repl - 交互式解释器 面试 没用 命令行编写js

    npm install 模块名称
    npm uninstall 模块名称
    npm update 模块名称
    npm update 批量更新

    npm search 搜索包 模糊查询
    npm home jquery 打开模块的官网


    解决npm慢的方法:
    1、http://npm.taobao.org/

    npm install -g cnpm --registry=https://registry.npm.taobao.org

    2、nrm

    cnpm install -g nrm

    nrm ls 查看所有的镜像源

    nrm test 测速

    nrm use cnpm 使用镜像源

    npm install jquery


    简写:

    npm install jquery
    npm i jquery

    npm uninstall jquery
    npm un jquery

    依赖:(--sav e= -S) (--save-dev = -D)

    npm install jquery --save -S
    npm install jquery --save-dev -D

    npm i -S jquery
    npm i -D jquery

    工程文件:package.json

    dependencies -S 项目依赖 mysql
    devDependencies -D 开发依赖 gulp

    npm init -y


    3、自定义模块

    require()
    exports
    module.exports

    exports&&module区别

    1、数量
    2、优先级module 跟顺序无关
    3、module.exports == exports 模块里面最终导出的module.exports

    require 引入自定义模块 需要加上 ./

    如果不想加 ./ 需要把自己的模块(.js)放到node_modules目录里


    发布自己的模块(包)
    1、需要有npm账号 https://www.npmjs.com/
    2、新建一个项目
    1、工程文件 npm init -y       
    2、package.json  name 必须唯一  main 入口文件     
    
    3、登陆 npm login

    npm whoami

    4、发包 npm publish
    5、删包 npm unpublish -f --force 删不掉 需要发邮件

    包:
    image
    qd1802.js

    var qd1802 = "666";
    var address = "CBD"
    exports.qd1802 = qd1802;
    exports.address = address;
    

    package.json

    {
      "name": "qd1802",
      "version": "1.0.3",
      "description": ""青岛1802测试专用!"",
      "main": "qd1802.js",
      "dependencies": {
        "jquery": "^3.3.1"
      },
      "devDependencies": {},
      "scripts": {
        "test": "echo "Error: no test specified" && exit 1"
      },
      "keywords": [
        "青岛1802测试专用!"
      ],
      "author": "szc",
      "license": "ISC"
    }
    
    

    image

    image

    必须保存一个版本:
    image

  • 相关阅读:
    jQuery火箭图标返回顶部代码
    易购商城首页
    使用HTML5验证博客园用户注册页面
    正则表达式相关内容和用法
    表单
    jQuery制作图片提示效果
    jQuery遍历
    用js制作论坛发贴
    使用jQuery操作DOM
    京东常见问题分类页面
  • 原文地址:https://www.cnblogs.com/zhongchao666/p/9288616.html
Copyright © 2020-2023  润新知