1. node.js 认识 (一)
官网: (下载安装nodejs)
https://nodejs.org/en/
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();
exp:创建服务器:
//1.引入模块
var http = require("http");
var fs = require("fs");
//2.创建服务
var server = http.createServer(function(req,res){
var url = req.url;
console.log("url:",url);
fs.readFile("www"+url,function(err,data){
if (err) {
res.end("404");
}else{
res.end(data);
}
});
});
//3.监听端口
server.listen(9000,function(){
console.log("服务器已开启:http://localhost:9000");
});
服务器运行:
1.打开服务器:

2.浏览器访问:

3.服务器响应:

登录注册
user.html
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
</head>
<script src="jquery.js"></script>
<script>
$(function(){
var $oUser = $("#username");
var $oPass = $("#pass");
var $oLogin = $("#login");
var $oReg = $("#reg");
$oLogin.click(function(){
$.ajax({
url:"/login",
data:{
user:$oUser.val(),
pass:$oPass.val()
},
dataType:"json",
success:function(json){
console.log(json);
}
});
});
$oReg.click(function(){
$.ajax({
url:"/reg",
data:{
user:$oUser.val(),
pass:$oPass.val()
},
dataType:"json",
success:function(json){
console.log(json);
}
});
});
});
</script>
<body>
用户名:<input id = "username" 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>
user.js
var http = require("http");
var fs = require("fs");
var users = {aaa:123};
var server = http.createServer(function(req,res){
var url = req.url;
console.log("url:",url);
var GET = {};
if(url.indexOf("?") != -1){//接口
var arr1 = url.split("?");
url = arr1[0];
var arr2 = arr1[1].split("&");
for(var i = 0; i < arr2.length; i++){
var arr3 = arr2[i].split("=");
GET[arr3[0]] = arr3[1];
}
console.log("url:",url,"GET:",GET);
if(url == "/login"){
var username = GET.user;
var password = GET.pass;
if(!users[username]){
res.end('{"error":0,"msg":"用户名或者密码不正确"}');
}else{
if(users[username] == password){
res.end('{"error":0,"msg":"登录成功"}');
}else{
res.end('{"error":0,"msg":"用户名或者密码不正确"}');
}
}
}else if(url == "/reg"){
var username = GET.user;
var password = GET.pass;
/*res.end('{"error":1,"msg":"reg"}');*/
if(users[username]){
res.end('{"error":1,"msg":"用户名存在"}');
}else{
users[username] = password;
res.end('{"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("服务器已打开");
})
user2.js:引入url模块直接获取json对象
var http = require("http");
var fs = require("fs");
var modUrl = require("url");
var users = {aaa:123};
var server = http.createServer(function(req,res){
var url = req.url;
console.log("url:",url);
var GET = {};
var urlObj = modUrl.parse(url,true);
url = urlObj.pathname;
GET = urlObj.query;
if(url == "/login"){
var username = GET.user;
var password = GET.pass;
if(!users[username]){
res.end('{"error":0,"msg":"账号或密码输入错误!"}');
}else{
if(users[username] == password){
res.end('{"error":0,"msg":"输入正确"}');
}else{
res.end('{"error":0,"msg":"账号或密码输入错误!"}');
}
}
}else if(url == "/reg"){
var username = GET.user;
var password = GET.pass;
if(users[username]){
res.end('{"error":1,"msg":"用户名已存在,请重新输入"}');
}else{
users[username] = password;
res.end('{"error":1,"msg":"注册正确"}');
}
}else{
fs.readFile("www" + url,function(err,data){
if(err){
res.end("404");
}else{
res.end(data);
}
})
}
});
server.listen(9000);
运行效果:


1. node.js 认识 (一)的更多相关文章
- node.js学习(三)简单的node程序&&模块简单使用&&commonJS规范&&深入理解模块原理
一.一个简单的node程序 1.新建一个txt文件 2.修改后缀 修改之后会弹出这个,点击"是" 3.运行test.js 源文件 使用node.js运行之后的. 如果该路径下没有该 ...
- 利用Node.js的Net模块实现一个命令行多人聊天室
1.net模块基本API 要使用Node.js的net模块实现一个命令行聊天室,就必须先了解NET模块的API使用.NET模块API分为两大类:Server和Socket类.工厂方法. Server类 ...
- Node.js:进程、子进程与cluster多核处理模块
1.process对象 process对象就是处理与进程相关信息的全局对象,不需要require引用,且是EventEmitter的实例. 获取进程信息 process对象提供了很多的API来获取当前 ...
- Node.js:理解stream
Stream在node.js中是一个抽象的接口,基于EventEmitter,也是一种Buffer的高级封装,用来处理流数据.流模块便是提供各种API让我们可以很简单的使用Stream. 流分为四种类 ...
- Node.js:Buffer浅谈
Javascript在客户端对于unicode编码的数据操作支持非常友好,但是对二进制数据的处理就不尽人意.Node.js为了能够处理二进制数据或非unicode编码的数据,便设计了Buffer类,该 ...
- node.js学习(二)--Node.js控制台(REPL)&&Node.js的基础和语法
1.1.2 Node.js控制台(REPL) Node.js也有自己的虚拟的运行环境:REPL. 我们可以使用它来执行任何的Node.js或者javascript代码.还可以引入模块和使用文件系统. ...
- Node.js npm 详解
一.npm简介 安装npm请阅读我之前的文章Hello Node中npm安装那一部分,不过只介绍了linux平台,如果是其它平台,有前辈写了更加详细的介绍. npm的全称:Node Package M ...
- Node.js入门(一)
一.Node.js本质上是js的运行环境. 二.可以解析js代码(没有浏览器安全级的限制): 提供系统级的API:1.文件的读写 2.进程的管理 3.网络通信 三.可以关注的四个网站: 1.https ...
- Node.js学习笔记——Node.js开发Web后台服务
一.简介 Node.js 是一个基于Google Chrome V8 引擎的 JavaScript 运行环境.Node.js 使用了一个事件驱动.非阻塞式 I/O 的模型,使其轻量又高效.Node.j ...
- Node.js入门
开始之前,安利一本正在看的书<站在两个世界的边缘>,作者程浩,上帝丢给他太多理想,却忘了给他完成理想的时间.OK,有兴趣的可以看一看. node.js如标题一样,我也是刚开始接触,大家一起 ...
随机推荐
- yuv rgb 互转 公式 及算法
1 前言 自然界的颜色千变万化,为了给颜色一个量化的衡量标准,就需要建立色彩空间模型来描述各种各样的颜色,由于人对色彩的感知是一个复杂的生理和心理联合作用的过程,所以在不同的应用领域中为了更好更准确的 ...
- SpringBoot无废话入门04:MyBatis整合
1.Parent引入及pom配置 首先,如果要支持mybatis,那么我们就应该引入mybatis的starter.同时,由于连接本身还需要用jdbc的connetor和连接池,所以一并需要引入这些依 ...
- 解决Linux系统80端口被占用的问题
有Linux在centos下面安装webmail服务遇到80端口被占用的问题,导致无法继续安装,下面详细介绍下Linux如何查看.查找.关闭监听80端口服务以更好的的解决80端口被占用的问题. 一.查 ...
- webstorm intelliJ IDEA phpstorm 设置鼠标滚动改变字体大小
control+shift+A功能可以搜索对应功能,把mouse:Change font size(Zoom) ...的按钮打开,然后就可以通过 ctrl+鼠标上下滚动调节字体大小
- 在 CentOS 7上Virtualbox+phpVirtualBox完整虚拟化环境部署
一.phpVirtualBox简介 VirtualBox是一套为不同操作系统而设的 x86 虚拟化产品.它是一个机器/硬件的虚拟化产品,功能上与 VMware Server.Parallel ...
- 【ThinkPHP】ThinkPHP环境的安装与配置
ThinkPHP是一个免费开源的,快速.简单的面向对象的轻量级PHP开发框架. 严格来说,ThinkPHP无需安装过程,这里所说的安装其实就是把ThinkPHP框架放入WEB运行环境(前提是你的WEB ...
- MySQL processlist中需要关注的状态
一般而言,我们在processlist结果中如果经常能看到某些SQL的话,至少可以说明这些SQL的频率很高,通常需要对这些SQL进行进一步优化. 今天我们要说的是,在processlist中,看到哪些 ...
- 生产环境CPU过高问题定位
问题描述: 生产环境下的某台tomcat7服务器,在刚发布时的时候一切都很正常,在运行一段时间后就出现CPU占用很高的问题,基本上是负载一天比一天高. 解决过程: 1.根据top命令,发现 ...
- Easyui中 messager.alert 后某文本框获得焦点
messager.alert 后某文本框获得焦点 $.messager.alert({ title:'消息', msg:'电话号码 只能是数字!', icon: 'info', width: 300, ...
- 【Vegas原创】SQLServer2008防小人利器:审核/审计功能
小人见怪不怪,世界上最可怕的就是会技术的小人,防不胜防! sa密码泄露也就算了,关键是人家也可以前台攻击,直接把你弄的没辙! 在诅咒这种小人的同时,除了加强服务器安全管理,密码策略等,SQL Serv ...