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
登陸html

image
image
註冊
imagevue

image

image

image

引入模塊:
1.本身寫的模塊在同級目錄裏,經過"./mode.js"引入,
2.放到node_modules文件夾中,經過 "mode.js" 訪問.node

exports一個一個的導出.mysql

module.exports 批量導出.jquery

批量導出優先級最高,不覆蓋,與次序無關面試

NPM: node package manager 包管理器

模塊組成:ajax

一、系統模塊 http fs url querystring
二、第三方模塊 jquery vue mysql
三、自定義模塊 jsonp str2json

repl - 交互式解釋器 面試 沒用 命令行編寫jssql

npm install 模塊名稱
npm uninstall 模塊名稱
npm update 模塊名稱
npm update 批量更新npm

npm search 搜索包 模糊查詢
npm home jquery 打開模塊的官網json


解決npm慢的方法:
一、http://npm.taobao.org/

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

二、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


三、自定義模塊

require()
exports
module.exports

exports&&module區別

一、數量
二、優先級module 跟順序無關
三、module.exports == exports 模塊裏面最終導出的module.exports

require 引入自定義模塊 須要加上 ./

若是不想加 ./ 須要把本身的模塊(.js)放到node_modules目錄裏


發佈本身的模塊(包)
一、須要有npm帳號 https://www.npmjs.com/
二、新建一個項目
一、工程文件 npm init -y       
二、package.json  name 必須惟一  main 入口文件
三、登錄 npm login

npm whoami

四、發包 npm publish
五、刪包 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

相關文章
相關標籤/搜索