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("服务器已打开!");
})

运行效果:

打卡服务器



登录





注册

引入模块:

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 删不掉 需要发邮件

包:



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"
}

必须保存一个版本:

2.node.js (二)服务器登录注册 与 包的发布的更多相关文章

  1. 用http-server 创建node.js 静态服务器

    今天做一本书上的例子,结果代码不能正常运行,查询了一下,是语法过时了,书其实是新买的,出版不久. 过时代码如下 var connect=require('connect'); connect.crea ...

  2. Node.js创建服务器和模拟客户端请求

    1. 何为服务器 服务器是某种长期运行,等待请求资源的应用程序 2. 常见Web应用架构 3. 如何创建web服务器 Web服务器是使用HTTP协议,等待客户端连接后请求资源的驻守应用程序:HTTP协 ...

  3. 【Node】node.js实现服务器的反向代理,解决跨域问题

    跨域对于前端来说是一个老大难的问题,许多方法如jsonp.document.domain + iframe...都有或多或少的问题,一个最佳实践就是通过服务器nginx做反向代理,但奈何不懂相关知识, ...

  4. 基于 Node.js 的服务器自动化部署搭建实录

    基于 Node.js 的服务器自动化部署搭建实录 在服务器上安装 Node.js 编写拉取仓库.重启服务器脚本 配置 Github 仓库的 Webhook 设置 配置 Node.js 脚本 其他问题 ...

  5. 深入浅出node.js游戏服务器开发1——基础架构与框架介绍

    2013年04月19日 14:09:37 MJiao 阅读数:4614   深入浅出node.js游戏服务器开发1——基础架构与框架介绍   游戏服务器概述 没开发过游戏的人会觉得游戏服务器是很神秘的 ...

  6. node.js+mysql用户的注册登录验证

    下面代码实现的功能是:用node.js连接mysql实现用户的注册和登录,这里主要实现的是后端的验证代码,前端显示部分没具体写出. 整个程序的流程是这样的: 1.首先建立数据库reji,数据表user ...

  7. Node.js_express_中间件 middleware_登录/注册实例源代码

    静态资源: 都写死了的资源,如 css,html 解析规则: 所有路由和中间件都在一个数组中,js 引擎会按照代码先后顺序添加路由和中间件 当请求发送到服务器时,服务器获取当前的请求信息(请求方式.请 ...

  8. node.js在windows下的学习笔记(5)---用NODE.JS创建服务器和客户端

    //引入http模块 var http = require('http'); //调用http的createServer的方法,这个方法有一个回调函数,这个回调数 //的作用是当有请求发送给服务器的时 ...

  9. 【Node.js】利用node.js搭建服务器并访问静态网页

    node.js是一门服务端的语言,下面讲讲如何利用node.js提供给我们的api来搭建服务器,并且访问静态网页 项目结构如下 ------------------------------------ ...

随机推荐

  1. 配置gitlab通过smtp发送邮件

    1. 编辑/etc/gitlab/gitlab.rb文件(加到文件最后面就好了,或者通过搜索找到,新版已有这些配置,只不过都是被注释掉了).以QQ企业邮箱为例: gitlab_rails['smtp_ ...

  2. nginx代理后,获取request的ip

    应用程序部署上线,一般都会用nginx之类的来进行反向代理,而不是直接访问tomcat之类的容器. 这时候如果用平时的获取ip的代码,就只会获取到nginx所在服务器的ip, 就失去了本身的意义. 今 ...

  3. Class:DbConnectionManipulator.cs

    ylbtech-Class:DbConnectionManipulator.cs 1.返回顶部 1.DbConnectionManipulator.cs using System; using Sys ...

  4. linux中查看软件文件安装路径

    在linux中文件与软件一般都是安装在到/usr/share和/usr/local中了,如果我们需要查看软件安装路径linux为我们提供了查看命令,whereis 就可以帮我查找文件安装路径在哪里了 ...

  5. AOP - C# Fody中的方法和属性拦截

    很久很久以前用过postsharp来做AOP, 大家知道的,现在那东东需要付费,于是尝试了一下Fody,但是发现Fody跟新太快了,所以大家在安装fody的时候尽力安装老的版本:packages.co ...

  6. 用SSH登录远程的机器,在远程机器上执行本地机器上的脚本

    假设本地的机器IP为10.245.111.90,我们想要在10.245.111.93上执行一个保存在10.245.111.90上的脚本. 经过测试通过的命令如下: ssh root@10.245.11 ...

  7. dotnet ef

    dotnet ef migrations add <Name-of-Migration> dotnet ef database update

  8. Python实现多进程

    Python可以实现多线程,但是因为Global Interpreter Lock (GIL),Python的多线程只能使用一个CPU内核,即一个时间只有一个线程在运行,多线程只是不同线程之间的切换, ...

  9. SharePoint online 获取文件版本记录

    endpoint: _api/web/GetFileByServerRelativeUrl('/allDoc/xxx.pdf')/Versions 问题: 第一次使用,无论在本地还是o365上,都只返 ...

  10. R语言学习-set.seed()

    今天查了一下R语言中set.seed(),该命令的作用是设定生成随机数的种子,种子是为了让结果具有重复性.如果不设定种子,生成的随机数无法重现. > x<-rnorm(10) #随机生成1 ...