Node.js 学习笔记(一)
什么是 Web 服务器?
Web 应用架构

const http=require('http');
var server=http.createServer(function(req,res){ //req----require是请求,res----respond是回应
console.log("访问了一次");//这里改为("req.url")可以返回访问的网址
res.write("在页面上显示文字");
res.end();
});
server.listen(8080);//监听,括号里为本地端口号,一台服务器可能同时对外提供很多种服务,端口是代表访问服务器里哪种服务的一串数字。 这里的地址为localhost:8080.
var fs= requeir("fs");
//异步读取
fs.readFile("index.html",function(err,data){
if(err){
return console.error(err);
}
console.log("异步读取:"+data.toString());//这里如果不加 toString() 会显示一堆二进制
});
//同步读取
var data =fs.readFileSync('index.html');
console.log("同步读取:"+data.toString());
console.log("程序执行完毕。");
同步读取:www.nodeJs.com 程序执行完毕。//注意这里是程序先执行完毕
异步读取:www.nodeJs.com
<form action="http://localhost:8080/aaa" method="get">
用户:<input type="text" name="user" value="" /><br />
密码:<input type="password" name="pass" value="" /><br />
<input type="submit" value="提交" />
</form>
node.js代码:
var http=require('http');
http.createServer(function(req,res){
console.log(req.url);
res.write('submit success');
res.end();
}).listen(8080);

var http = require('http');
http.createServer(function(req, res) {
var GET = {};
if (req.url.indexOf('?')!=-1){
var arr = req.url.split('?');
var url = arr[0];
//arr[0]=>地址 '/aaa'
//arr[1]=>数据 'user=xuhuihong&pass=123456'
var arr2 = arr[1].split('&');
//arr2=>['user=blue','pass=123456']
for (var i = 0; i < arr2.length; i++) {
var arr3 = arr2[i].split('=');
//arr3[0]=>名字 'user'
//arr3[1]=>数据 'blue'
GET[arr3[0]] = arr3[1]; //键值对
}
}else {
var url = req.url;
}
console.log(url, GET);
res.write('submit success');
res.end();
}).listen(8080);
var http = require('http');
const querystring = require('querystring');
http.createServer(function(req, res) {
var GET = {};
if (req.url.indexOf('?')!=-1){
var arr = req.url.split('?');
var url = arr[0];
GET=querystring.parse(arr[1]);
}else {
var url = req.url;
}
console.log(url, GET);
res.write('submit success');
res.end();
}).listen(8080);
nodejs代码
const urlLib=require('url');
var obj=urlLib.parse('https://www.bilibili.com/index?a=55&b=6600');
console.log(obj);
Url {
protocol: 'https:',
slashes: true,
auth: null,
host: 'www.bilibili.com',
port: null,
hostname: 'www.bilibili.com',
hash: null,
search: '?a=55&b=6600',
query: 'a=55&b=6600',
pathname: '/index',
path: '/index?a=55&b=6600',
href: 'https://www.bilibili.com/index?a=55&b=6600' }
var obj=urlLib.parse('https://www.bilibili.com/index?a=55&b=6600',true);
query: { a: '55', b: '6600' },
var http = require('http');
const urlLib=require('url');
http.createServer(function(req, res) {
var obj=urlLib.parse(req.url,true);
var url=obj.pathname;
var GET=obj.query;
console.log(url, GET);
res.write('submit success');
res.end();
}).listen(8080);
const http = require('http');
const querystring=require('querystring');
http.createServer(function(req, res) {
//post--req
var str="";//接受数据
//data--有一段数据到达(很多次)
var i=0;
req.on('data',function(data){
console.log('第${i++}次收到数据');
str+=data;
});
//end-数据全部到达(一次)
req.on('end',function(){
var POST=querystring.parse(str);
console.log(str);
});
}).listen(8080);
user=qqqqqq&pass=aaaaaaaaa
const http=require('http');
const fs=require('fs');
const queryString=require('querystring');
const urlLib=require('url');
var server = http.createServer(function(req,res){
//GET
var obj=urlLib.parse(req.url,true);
var url=obj.pathname;
const GET=obj.query;
//POST
var str='';
req.on('data',function(data){
str+=data;
});
req.on('end',function(){
var POST=queryString.parse(str);
/*
url--要什么
GET--get数据
POST--post数据
*/
console.log(url,GET,POST);
//文件请求
var file_name='./www'+url; //这里url要输完后缀
fs.readFile(file_name,function(err,data){
if(err){
res.write('404');
}else{
res.write(data);
}
res.end();
});
});
});
server.listen(8080);
Node.js 学习笔记(一)的更多相关文章
- 一点感悟:《Node.js学习笔记》star数突破1000+
写作背景 笔者前年开始撰写的<Node.js学习笔记> github star 数突破了1000,算是个里程碑吧. 从第一次提交(2016.11.03)到现在,1年半过去了.突然有些感慨, ...
- Node.js学习笔记(3):NPM简明教程
Node.js学习笔记(3):NPM简明教程 NPM常用操作 更新NPM版本 npm install npm -g -g,表示全局安装.我们可以指定更新版本,只需要在后面填上@版本号即可,也可以输入@ ...
- 系列文章--Node.js学习笔记系列
Node.js学习笔记系列总索引 Nodejs学习笔记(一)--- 简介及安装Node.js开发环境 Nodejs学习笔记(二)--- 事件模块 Nodejs学习笔记(三)--- 模块 Nodejs学 ...
- Node.js学习笔记(2):基本模块
Node.js学习笔记(2):基本模块 模块 引入模块 为了编写可维护的代码,我们把很多函数分组,分别放到不同的文件里,这样,每个文件包含的代码就相对较少,很多编程语言都采用这种组织代码的方式.在No ...
- Node.js学习笔记(1):Node.js快速开始
Node.js学习笔记(1):Node.js快速开始 Node.js的安装 下载 官方网址:https://nodejs.org/en/ 说明: 在Windows上安装时务必选择全部组件,包括勾选Ad ...
- Node.js学习笔记(4):Yarn简明教程
Node.js学习笔记(4):Yarn简明教程. 引入Yarn NPM是常用的包管理工具,现在我们引入是新一代的包管理工具Yarn.其具有快速.安全.可靠的特点. 安装方式 使用npm工具安装yarn ...
- Node.js学习笔记(一)
1.回调函数 node是一个异步事件驱动的平台,所以在代码中我们经常需要使用回调函数. 例: setTimeout(function(){ console.log('callback is calle ...
- Node.js学习笔记(一):快速开始
最近接了一个node项目,虽然最后顺利完成了,但是由于第一次实战,整个过程是赶出来的,许多地方一知半解.现在项目结束了,就静下心来系统地学一学,理一理,读书不忘拿笔,既然读书了,当然就要记点东西.一方 ...
- Node.js学习笔记(一)基础介绍
什么是Node.js 官网介绍: Node.js® is a JavaScript runtime built on Chrome's V8 JavaScript engine. Node.js us ...
- node.js学习笔记(三)——事件循环
要理解事件循环,首先要理解事件驱动编程(Event Driven Programming).它出现在1960年.如今,事件驱动编程在UI编程中大量使用.JavaScript的一个主要用途是与DOM交互 ...
随机推荐
- MySQL执行外部sql脚本文件命令是报错:unknown command
使用source导入外部sql文件: mysql> source F:\php\bookorama.sql; -------------- source F: -------------- ER ...
- 使用PHP得到所有的HTTP请求头
作者:老王 在PHP里,想要得到所有的HTTP请求头,可以使用getallheaders方法,不过此方法并不是在任何环境下都存在,比如说,你使用fastcgi方式运行PHP的话,就没有这个方法,所以说 ...
- LightOJ1197
题目链接:https://vjudge.net/problem/LightOJ-1197 题目大意: 给你 a 和 b (1 ≤ a ≤ b < 231, b - a ≤ 100000),求出 ...
- An easy problem(hdu2055)
输入格式:一个整型,然后循环输入一个字符加一个整型. 思考:首先用scanf_s()函数输入整型.然后一个大循环,用scanf_s()函数同时输入字符和整型.第一个scanf_s()函数后,后面还要输 ...
- PHP数组简单操作
1.数字索引数组 1.1创建一个数组 php中最常用的两个类型是:数组,字符串.数组也分为两种,一种是数字索引,一种是关键是索引,关键字索引有点像python中字典的意思.数字索引类型的数组的创建方法 ...
- mysql Invalid use of group function的解决办法
错误语句:SELECT s.SID, s.Sname, AVG(a.score)FROM student sLEFT JOIN sc a ON s.SID = a.SID WHERE AVG(a.sc ...
- day20 函数闭包与装饰器
装饰器:本质就是函数,功能是为其他函数添加新功能 原则: 1.不修改被装饰函数的源代码(开放封闭原则) 2.为被装饰函数添加新功能后,不修改被修饰函数的调用方式 装饰器的知识储备: 装饰器=高阶函数+ ...
- JavaScript之倔强的字符串
关于倔强的JavaScript字符串:不可以被修改 我们是字符串 我们的口号是:你可以消灭我,但是你不能改变我 JavaScript字符串是不可改变的,当真是这样的吗? 让我们来试验一下. var n ...
- Thunar左侧边栏不完全显示PLACES的解决
场景 我的笔记本装上系统时用的英文,安装中文之后,发现文件管理器的默认的几个文件夹 Desktop.Music.Videos.Downloads等都变成了中文,由于是新安装的系统,就重新生成 loca ...
- [PHP自动化-进阶]004.Snoopy VS CURL 模拟Discuz.net登陆
引言:采集论坛第一步就是要模拟登陆,由于各个站点登录表单各不相同,验证方式又是多种多样,所以直接提交用户名密码到登录页面就比较繁琐. 所以我们采用cookie来模拟登陆无疑是最佳捷径. 今天我们要处理 ...