node.js 属于后台语言,后台语言还有php,java等。

优势:1.性能好   node.js VS php   86倍

2.跟前台JS配合方便

3.node.js便于前端学习

https://nodejs.org

Node.js 命令

1.切换盘符 e:

2.改变目录 cd 目录名

3.执行程序 node 文件名.js

Js能用的Node.js 都能用

node.js(自带许多模块可以参考node.js api)

node.js———服务器

http —— 协议

request   请求   输入-请求的信息

response 响应  输出-输出的信息

搭建简单的服务器:

const http = require('http'); //请求http模块
http.createServer(function(res,req) {
     //createServer(回调函数)用来创建服务器
           //  console.log("有人来了")
       res.write("abc");
       res.end();
     
     //监听//端口
}).listen(8080)
 
 
文件操作:fs — Flie Ssytem
 
同步vs异步
同步—一次一个
异步—多个操作可以同时进行,前一次的操作没完事,后一次也进行操作
 
//读写文件
readFile(文件名,function(err,data){})
writeFile(文件名,内容,function(err,data){})

服务器读写案例

const http = require('http');
const fs = require('fs');
http.createServer(function(req, res) {
//req.url=>'/index.html'
//读取=>'./www/index.html'
//'./www'+req.url
var file_name = './www' + req.url;
fs.readFile(file_name, function(err, data) {
if (err) {
res.write('404')
} else {
res.write(data)
}
res.end();
});
}).listen(8080)
 
请求方式:
1.get 数据在url中
2.post 数据不再url中
/////////////////////////////////////////////////////////////
req.url =>"/aaa?user=blur&pass=1234"
/aaa
user=blur
pass=1234
//////////////////////////////////////////////////////////////////
GET解析路径
1.自己切
2.querystring模块    xxx=xxxx&xx=xx
3.url模块                 aaa?xxx=xx&xxx=12
 
urlLib=require("url");
urlLib.parse(url,true); pathname
                                   query
POST解析路径
 
POST数据接收:Post 数据比GET大得多
POST 很大 __分段

const http = require('http');
const urlLib = require('url');
const querystring = require('querystring');
http.createServer(function(req, res) {
//Post-req
var str = ''; //接受数据
var i = 0;
req.on('data', function(data) {
console.log(`第${i++}次收到数据`)
str += data;
});
req.on('end', function() {
var POST = querystring.parse(str);
console.log(POST)
})
}).listen(8088)

综合案例

const http = require('http');
const fs = require('fs');
const urlLib = require('url');
const querystring = require('querystring');
http.createServer(function(req, res) {
//GET
const 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() {
const POST = querystring.parse(str);
})
/**
*
*/
console.log(url, GET, POST)
//文件请求
var flie_name = './www' + url;
fs.readFile(flie_name, function(err, data) {
if (err) {
res.write('404')
} else {
res.write(data)
}
res.end();
})
}).listen(6666);
 
以上是node的前奏基础知识
后续请继续关注

node.js学习之路(1)的更多相关文章

  1. node.js学习之路

    (非原创) 目录 Nodejs的介绍 15个Nodejs应用场景 Nodejs学习路线图 1. Nodejs的介绍 Node.js的是建立在Chrome的JavaScript的运行时,可方便地构建快速 ...

  2. 【入门必备】最佳的 Node.js 学习教程和资料书籍

    Web 开发人员对 Node.js 的关注日益增多,更多的公司和开发者开始尝试使用 Node.js 来实现一些对实时性要求高,I/O密集型的业务.这篇文章中,我们整理了一批优秀的资源,你可以得到所有你 ...

  3. 【温故知新】——BABYLON.js学习之路·前辈经验(二)

    前言:在上一篇随笔BABYLON.js学习之路·前辈经验(一)中回顾了组内同事们长时间在Babylon开发实践中的总结出的学习之路和经验,这一篇主要对开发中常见的一些功能点做一个梳理,这里只作为温故知 ...

  4. NODE.JS学习的常见误区及四大名著

    NODE.JS学习的常见误区及四大名著 前段时间由于不满于社区里很多人对于NODE.JS的种种误解而写了一篇文章名为: NODE.JS之我见:http://www.cnblogs.com/pugang ...

  5. Node.js学习系列总索引

    Node.js学习系列也积累了一些了,建个总索引方便相互交流学习,后面会持续更新^_^! 尽量写些和实战相关的,不讲太多大道理... Node.js学习笔记系列总索引 Nodejs学习笔记(一)--- ...

  6. node.js学习(1)

    新建便笺 3 node.js学习(1) 1)安装 http://nodejs.org/download/下载. 2)编写一个案例 var http=require("http"); ...

  7. 我的Node.js学习历程

    学习一门技术,每个人都有每个人的方法.我的方法很简单,做项目. 基本概念 在搭建一个node网站之前,还是要掌握一些基本的概念的,这里列举一下,具体的内容大家自己到网上去查: npm bower ex ...

  8. Node.js学习之TCP/IP数据通讯

    Node.js学习之TCP/IP数据通讯 1.使用net模块实现基于TCP的数据通讯 提供了一个net模块,专用于实现TCP服务器与TCP客户端之间的通信 1.1创建TCP服务器 在Node.js利用 ...

  9. Node.js学习起步

    Node.js学习: 简单的说 Node.js 就是运行在服务端的 JavaScript.Node.js 是一个基于Chrome JavaScript 运行时建立的一个平台.Node.js是一个事件驱 ...

随机推荐

  1. [转]html中meta作用

    meta是html语言head区的一个辅助性标签.几乎所有的网页里,我们可以看到类似下面这段的html代码:  <head>  <meta http-equiv="cont ...

  2. 使用SlidingDrawer(滑动式抽屉)实现抽屉效果

    SlidingDrawer隐藏屏外的内容,并允许用户通过handle以显示隐藏内容.它可以垂直或水平滑动,它有俩个View组成,其一是可以拖动的handle,其二是隐藏内容的View.它里面的控件必须 ...

  3. Node.js的事件轮询Event Loop原理

    Node.js的事件轮询Event Loop原理解释 事件轮询主要是针对事件队列进行轮询,事件生产者将事件排队放入队列中,队列另外一端有一个线程称为事件消费者会不断查询队列中是否有事件,如果有事件,就 ...

  4. 作业类型维护流程(CO)

    一.建立作业类型——kl01 目的: 藉由做作業類型執行生產報工 目錄路徑: 會計à成本控制à成本中心會計à主檔資料à作業類型à個別處理à KL01 - 建立 Transaction   Code: ...

  5. 串口使用和CSerial类

    1 串口通信的基本原理 串口通信中无论是写入串口还是读取串口,都是对缓冲区操作的.可以理解为写串口就是向输出缓冲区写入内容,读取串口就是从输入串口缓冲区读取内容.但是何时打开串口,何时发送数据,何时接 ...

  6. react-redux provider组件

    provider组件概念图   react-redux provider组件概念图 provider组件的作用 provider包裹在根组件外层,使所有的子组件都可以拿到state.示例: impor ...

  7. redis缓存服务器

    1.什么是redis? Redis 是一个基于内存的高性能key-value数据库. 2.使用redis的好处? 速度快,因为数据存在内存,类似hashmap,hashmap的优势就是查找和操作的时间 ...

  8. 实现文件上传功能(FileUpload组件)

    文件上传: 项目中经常用到文件上传. 自己实现文件上传,使用文件上传组件fileupload组件 1.指定表单类型为文件上传, enctype=”multipart/form-data” 2.提交方式 ...

  9. Leetcode之动态规划(DP)专题-1025. 除数博弈(Divisor Game)

    Leetcode之动态规划(DP)专题-1025. 除数博弈(Divisor Game) 爱丽丝和鲍勃一起玩游戏,他们轮流行动.爱丽丝先手开局. 最初,黑板上有一个数字 N .在每个玩家的回合,玩家需 ...

  10. webdriervAPI(多窗口切换)

    两个方法 driver.current_window_handle 获取当前窗口句柄 driver.window_handles 获取所有窗口句柄 from selenium import webdr ...