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如标题一样,我也是刚开始接触,大家一起 ...
随机推荐
- 广告行业中常说的 CPC,CPM,CPD,CPT,CPA,CPS 等词的意思是什么?
广告投放流程主要分为展示和转化,CPC/CPM/CPD/CPT/CPA/CPS等代表的是不同的结算模式 展示端的结算方式有: CPM(Cost Per Mille) 每千人成本:只要向足够量级的用户展 ...
- Webdings字体和Wingdings字体对照表
一.Webdings是一个TrueType的dingbat字体,于1997年发表,搭载在其后的Microsoft Windows视窗系统内,大多的字形都没有Unicode的相对字. 使用很简单1.网页 ...
- Java 基础【19】代理
Java 代理(Proxy)模式与现实中的代理含义一致,如旅游代理.明星的经纪人. 在目标对象实现基础上,增加额外的功能操作,由此来扩展目标对象的功能. JavaWeb 中最常见的过滤器.Struts ...
- Effective Java 第三版——83. 明智谨慎地使用延迟初始化
Tips 书中的源代码地址:https://github.com/jbloch/effective-java-3e-source-code 注意,书中的有些代码里方法是基于Java 9 API中的,所 ...
- VPS、虚拟主机、云主机的区别
引用知乎网友通俗的例子解释: 1. 小王是深圳的一拆迁户,有钱任性:自己租了一块地皮[带宽],盖了一栋10000平方的房子[服务器],计划租给别人赚钱.2. 但是10000平方的房子太大,能租起的人太 ...
- [k8s]Docker 用户使用 kubectl 命令指南-unkown排错(kubelet端口解析)
参考:https://kubernetes.io/docs/user-guide/kubectl-cheatsheet/ https://k8smeetup.github.io/docs/user-g ...
- golang协程池设计
Why Pool go自从出生就身带“高并发”的标签,其并发编程就是由groutine实现的,因其消耗资源低,性能高效,开发成本低的特性而被广泛应用到各种场景,例如服务端开发中使用的HTTP服务,在g ...
- RxSwift之路 1#Swift语法知识准备
RxSwift之路 1#Swift语法知识准备 在开始学习 RxSwift 之前,一定要对 Swift 相关语法有所了解,否则就很难理解为什么可以这样.关于 Swift 的学习其实只要看看 Swift ...
- C语言 · 超级玛丽
算法提高 超级玛丽 时间限制:1.0s 内存限制:256.0MB 问题描述 大家都知道"超级玛丽"是一个很善于跳跃的探险家,他的拿手好戏是跳跃,但它一次只能向前跳 ...
- ios vue2.0使用html5中的audio标签不能播放音乐
我写了一个M端播放音乐的组件,使用html5的audio标签 然后我使用watch监测currentSong 在浏览器中看到audio渲染的如下: 单独访问渲染出来的audio中url可以播放音乐,为 ...