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 也能完美地驱动 ...
随机推荐
- Oracle连接出错(一)
1.错误描述 java.sql.SQLException: ORA-0064:error occurred at recursive SQL level 1. ORA-06153:unable to ...
- IO网络模型
多路处理模型MPM MPM是Apache2引入的一个概念,就是将结构模块化.把核心任务处理作为一个可插拔的模块,使其能针对不同的环境进行优化 在这个情况下,就诞生出了处理模式的概念 Prefork 实 ...
- 觉得OpenStack的网络复杂?其实你家里就有同样一个网络
当你想了解OpenStack的Neutron网络,打开下面这张图的时候,心里一定是崩溃的,看起来这些模块连在一起很复杂,但其实和你家里的网络很像,看不出来?看我来慢慢解析. 其实这个网络的样子更像是我 ...
- Bzoj3930: [CQOI 2015] 选数 & COGS2699: [CQOI 2015] 选数加强版
题面 Bzoj COGS加强版 Sol 非加强版可以枚举AC这里不再讲述 设\(f(i)\)表示在\([L, H]\)取\(N\)个,\(gcd为i\)的方案数 \(F(i)=\sum_{i|d}f( ...
- [USACO5.4]奶牛的电信Telecowmunication
裸的最小割,拆点时要考虑清楚到底是怎么连 如果之前i->i+n,之后又x->y+n,显然出不了解 所以可以改为i+n->i 如果要输出方案 考虑每一个一个点,如果删去这个点,最小割变 ...
- .net白盒测试
很久没写博客了,刚好这段时间空闲,做点记录 前提:最近部门需要白盒测试的工具,在网上也搜索了很多资料,国内很少有类似的资料(很少公司.net代码进行白盒测试),最后在国外(FQ)网站查找到了部分资料 ...
- angular中$q.all用法
$q.all是用于执行多个异步任务进行回调,它可以接受一个promise的数组,或是promise的hash(object).任何一个promise失败,都会导致整个任务的失败. 例1:接受一个pro ...
- webstorm修改工具栏主题
** 操作如图所示 **
- 网页提示错误(net::ERR_EMPTY_RESPONSE)
突然个别网页打不开,报上面的错,本来还以为是网页的问题,结果发现是自己的电脑的问题..因为从别的设备上可以打开相同网页. 1.运行→regedit→进入注册表, 在 HKEY_LOCAL_MACHIN ...
- IIS支持PHP文件解析
打开IIS程序映射 添加模块映射 请求路径为:*.php 模块为:FastCgiModule 可执行路径选择 php-cgi.exe 名称随意写