node 基础精简
Node
创建node应用
- 引入require模块 var http = require("http");
- 创建服务器 http.createServer()
绑定端口: .listen()
request, response 参数来接收和响应数据
至此完成了一个可以工作的服务器
REPL(交互式解释器)
表示一个电脑环境,类似window和Linux;可以进行运算,_用来获取上一次的结果;
常用命令:
Ctrl + c 退出当前终端
Ctrl + c 两次 or Ctrl + d 退出repl
Tab 列出当前命令
.help 列出使用命令
.break or .clear退出多行表达式
.save filename - 保存当前的 Node REPL 会话到指定文件
.load filename - 载入当前 Node REPL 会话的文件内容。
回调函数
Node的异步变成的直接体现就是回调
Eg:文件的同步读取与异步读取
异步读取(readFile)文件的时候由操作系统在后台进行读取,不会阻碍下面的代码执行。
同步读取(readFileSync)的时候会阻碍下面的代码执行;
事件循环
Node单线程单进程,但支持回调和并发。
- 引入event模块 var events = require(‘event’);
- 创建eventEmitter模块 var eventEmitter = events. EventEmitter()
- 绑定事件处理程序 eventEmitter.on(‘eventName’,eventHandler)
- 触发事件 eventEmitter.emit(‘eventName’)
EventEmitter
异步 I/O 操作在完成时都会发送一个事件到事件队列;
在使用的时候在对象中继承它,原因有:
1.首先,具有某个实体功能的对象实现事件符合语义,事件的监听和发生应该是一个对象的方法。
2.其次 JavaScript 的对象机制是基于原型的,支持 部分多重继承,继承 EventEmitter 不会打乱对象原有的继承关系。
Buffer
专门存放二进制数据的缓存区
创建buffer类:
1.Buffer.alloc(size[, fill[, encoding]]): 返回一个指定大小的 Buffer 实例,如果没有设置 fill,则默认填满 0
2.Buffer.allocUnsafe(size): 返回一个指定大小的 Buffer 实例,但是它不会被初始化,所以它可能包含敏感的数据
3.Buffer.allocUnsafeSlow(size)
4.Buffer.from(array): 返回一个被 array 的值初始化的新的 Buffer 实例(传入的 array 的元素只能是数字,不然就会自动被 0 覆盖)
5.Buffer.from(arrayBuffer[, byteOffset[, length]]): 返回一个新建的与给定的 ArrayBuffer 共享同一内存的 Buffer。
6.Buffer.from(buffer): 复制传入Buffer 实例的数据,并返回一个新的 Buffer 实例
7.Buffer.from(string[, encoding]):返回一个被 string 的值初始化的新的 Buffer 实例
还有许多读取写入长度和JSON方法就不一一列举了
Stream
所有的 Stream 对象都是 EventEmitter 的实例.
从流中读取数据:
var fs = require(‘fs’)
- 创建可读流:fs.createReadStream()
- 设置编码: .setEncoding()
- 处理事件流: data、on、error
写入流:
var fs = require(‘fs’);
- 创建可写流: fs.createWriteStream()
- 写入数据: .write(data,’UTF-8’)
- 标记末尾: .end()
管道流:
1.创建可读流
2.创建可写流
3.read.pipe(write)
链式流:
通过连接输出流到另外一个流并创建多个流操作链的机制
模块系统
把一个对象封装在模块中 module.export = function(){ }
函数
与JS的函数差不多
全局对象
Node的全局对象时global,所有全局变量都是它的属性;
全局变量:
在最外层定义的变量;
全局对象的属性;
隐式定义的变量(未定义直接赋值的变量)。
一些具体的全局变量和方法在使用的时候积累
常用工具
util 常用的函数集合
util.inspect()----将任意对象转化为字符串
文件系统(fs)
异步和同步
异步的方法函数最后一个参数为回调函数,回调函数的第一个参数包含了错误信息。
打开文件 .open()
获取文件信息 .stat()
写入文件 .writeFile()
== 对于文件的操作
GET / POST请求
GET请求:
请求直接被嵌入在路径中,URL是完整的请求路径,包括了?后面的部分
url.parse()解析URL中的参数
POST请求:
内容全部的都在请求体中
Express框架
Express官网: http://expressjs.com/
Express4.x API 中文版: Express4.x API Chinese
Express4.x API:http://expressjs.com/zh-cn/4x/api.html
node 基础精简的更多相关文章
- BAT 前端开发面经 —— 吐血总结      前端相关片段整理——持续更新       前端基础精简总结    Web Storage      You don't know js
		BAT 前端开发面经 —— 吐血总结 目录 1. Tencent 2. 阿里 3. 百度 更好阅读,请移步这里 聊之前 最近暑期实习招聘已经开始,个人目前参加了阿里的内推及腾讯和百度的实习生招聘, ... 
- node基础篇二:模块、路由、全局变量课堂(持续)
		今天继续更新node基础篇,今天主要内容是模块.路由和全局变量. 模块这个概念,在很多语言中都有,现在模块开发已经成为了一种潮流,它能够帮助我们节省很多的时间,当然咱们的node自然也不能缺少,看下例 ... 
- node基础-文件系统-文件写操作
		文件操作频率最高的就是读跟写.nodejs的文件的读取API在<node基础-文件系统-读取文件>里已经简单介绍过,本文就简单介绍下nodejs的文件写API. nodejs的文件操作均提 ... 
- node基础知识
		Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境,是一个可以让 JavaScript 运行在服务器端的平台 Node.js 使用了一个事件驱动.非阻塞式 I/O ... 
- Node基础篇(文件操作)
		文件操作 相关模块 Node内核提供了很多与文件操作相关的模块,每个模块都提供了一些最基本的操作API,在NPM中也有社区提供的功能包 fs: 基础的文件操作 API path: 提供和路径相关的操作 ... 
- node基础01:简要介绍
		1.node vs php 优点 性能高(机制问题) 开发效率高(省了不少优化的事) 应用范围广(可以开发桌面系统,electron框架) 缺点 新,人少 中间件少 IDE不完善 2.node的劣势和 ... 
- Node基础:域名解析DNS(ok)
		写在前面 Nodejs学习手册,基础总结之DNS模块.对从事web开发的同学来说,DNS解析再熟悉不过,在nodejs中也有一个模块可以完成dns解析的工作,使用非常简单.直接进入主题. 域名解析:d ... 
- node基础 --全局
		全局对象: global:永远使用var 定义变量以避免引入全局变量; process:所有全局执行上下文的内容都在process对象中: 模块和包: 模块:一个Node.js 文件就是一个模块,这个 ... 
- Vue.js 运行环境搭建详解(基于windows的手把手安装教学)及vue、node基础知识普及
		Vue.js 是一套构建用户界面的渐进式框架.他自身不是一个全能框架——只聚焦于视图层.因此它非常容易学习,非常容易与其它库或已有项目整合.在与相关工具和支持库一起使用时,Vue.js 也能完美地驱动 ... 
随机推荐
- mpeg文件格式分析
			MPEG-1流比特层次结构分析总结 1.简要介绍Mpeg 2.Mpeg-1数据流分析 2.1视频序列层(VideoStream) 2.2画面组层(GOP) 2.3画面层(Pictures) 2.4片层 ... 
- 从不同的角度分析Flex的优缺点
			从不同的角度分析Flex的优缺点 技术角度: (1)具备了RIA时代富客户端的优点(C/S+B/S) (2)支持多种服务器语言(JAVA..NET.PHP)及主流框架(Spring.Hibernate ... 
- Windows10 + Matlab2013 mex C++ 调用gsl
			最前面啰嗦一句,matlab默认编译c的编译器有点奇怪,会出现引用.h却找不到相应函数的问题,解决方法是把.c全部都改成.cpp!血的教训! 下面进入正题~~ 由于Matlab调用的C函数中引用了GS ... 
- 我们web前端常用的一些Array对象及应用
			1. Array.filter() filter() 方法创建一个新数组, 其包含通过所提供函数实现的测试的所有元素. ES6: 2.Array.prototype.find() find() 方法返 ... 
- jquery回调函数的一个案例
			1.引言 今天在学习<jQuery基础教程>在学习编写插件的时候,书中说利用回调函数来当参数,会极大的提高程序的灵活性.对回调函数很陌生.研究了一下给的示例程序.感觉对回调函数有了基本的了 ... 
- Communications link failure异常解决
			一,异常现象 com.bill99.inf.ibatis.DBException: queryForList error::sqlId=orgOrderAssetsMapping.queryModel ... 
- form表单的action提交写到js中来,同时onclick事件也写在js中来。其action也可以通过ajax来提交的。
			1,html脚本 <body> <div style="display: none;"> <form id="submitForm" ... 
- 深度学习——卷积神经网络 的经典网络(LeNet-5、AlexNet、ZFNet、VGG-16、GoogLeNet、ResNet)
			一.CNN卷积神经网络的经典网络综述 下面图片参照博客:http://blog.csdn.net/cyh_24/article/details/51440344 二.LeNet-5网络 输入尺寸:32 ... 
- 在MyEclipse 10中配置tomcat田服务器时出现的问题以及解觉办法
			今天刚刚重装电脑,为了实训的一个项目要使用到MyEclipse开发工具但是在配置服务器之后运行时出现了问题 错误:java.lang.UnsupportedClassVersionError: org ... 
- Angular通过订阅观察者对象实现不同组件中数据的实时传递
			在angular官方定义中,组件直接的数据交换只要在父子直接传递,但是我们在项目中经常需要在各种层级之间传递数据,下面介绍关于订阅可观察对象实现的数据传递. 首先定义一个服务app.sevice.ts ... 
