一,开篇分析 所谓缓冲区Buffer,就是 "临时存贮区" 的意思,是暂时存放输入输出数据的一段内存。 JS语言自身只有字符串数据类型,没有二进制数据类型,因此NodeJS提供了一个与String对等的全局构造函数Buffer来提供对二进制数据的操作。除了可以读取文件得到Buffer的实例外,还能够直接构造,例如:代码如下:var buffer = new Buffer([ 0x68, 0x65, 0x6c, 0x6c, 0x6f ]) ; Buffer与字符串类似,除了可以用.length属性得到字节长度...
一,开篇分析 文件系统模块是一个简单包装的标准 POSIX 文件 I/O 操作方法集。可以通过调用 require("fs") 来获取该模块。文件系统模块中的所有方法均有异步和同步版本。 (1),文件系统模块中的异步方法需要一个完成时的回调函数作为最后一个传入形参。 (2),回调函数的构成由调用的异步方法所决定,通常情况下回调函数的第一个形参为返回的错误信息。 (3),如果异步操作执行正确并返回,该错误形参则为null或者undefined。如...
一,开篇分析 从今天开始,我们来深入具体的模块学习,这篇文章是这个系列文章的第三篇,前两篇主要是以理论为主,相信大家在前两篇的学习中, 对NodeJS也有一个基本的认识,没事!!!趁热打铁,让我们继续将NodeJS进行到底,好了废话不多说,直接进入今天的主题 “Net模块” ,那么”Net“应该如何理解那? 它是做什么用的那?(Net模块可用于创建Socket服务器或Socket客户端。NodeJS 的数据通信,最基础的两个模块是 Net 和 Htt...
一,开篇分析 这篇属于扩展知识篇,因为在下面的文章中会用到数据库操作,所以今天就来说说它(Mongodb模块)。 (1),简介MongoDB是一个基于分布式文件存储的数据库。由C++语言编写。旨在为WEB应用提供可扩展的高性能数据存储解决方案。MongoDB是一个高性能,开源,无模式的文档型数据库,是当前NoSql数据库中比较热门的一种。MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据...
一,开篇分析 首先“Http”这个概念大家应该比较熟悉了,它不是基于特定语言的,是一个通用的应用层协议,不同语言有不同的实现细节,但是万变不离其宗,思想是相同的, NodeJS作为一个宿主运行环境,以JavaScript为宿主语言,它也有自己实现的一套标准,这篇文章我们就一起来学习一下 “Http模块” 。但是作为前提来说, 希望大家可以先阅读一下官网提供的api,有一个前置了解,这样就方便多了,以下是Http部分的api概览:代码如下...
一,开篇分析 这篇文章把这三个模块拿来一起说,原因是它们各自的篇幅都不是很长,其次是它们之间存在着依赖关系,所以依次介绍并且实例分析。废话不多说了,请看下面文档: (1),"Url模块"来个小栗子: 代码如下:var url = require(url);var queryUrl = "http://localhost:8888/bb?name=bigbear&memo=helloworld" ;console.log(typeof url.parse(queryUrl)) ;console.log(url.parse(queryUrl)) ;运行结果: 代码如下:object...
一,开篇分析 流是一个抽象接口,被 Node 中的很多对象所实现。比如对一个 HTTP 服务器的请求是一个流,stdout 也是一个流。流是可读,可写或兼具两者的。 最早接触Stream是从早期的unix开始的, 数十年的实践证明Stream 思想可以很简单的开发出一些庞大的系统。 在unix里,Stream是通过 "|" 实现的。在node中,作为内置的stream模块,很多核心模块和三方模块都使用到。 和unix一样,node stream主要的操作也是.pipe(),使用者可以...
希望大家能够坚持看下去我这系列的文章,这也是对我的最大的鼓励与支持,让我们共同进步,以文会友,相互帮助。好了直接进入今天的主题, 什么是“Connect”,中间件又当如何理解,带着问题来看今天的文章。如何理解 "中间件" ? 我的理解是这样的,中间件就是类似于一个过滤器的东西,在客户端和应用程序之间的一个处理请求和响应的的方法。 如果把一个http处理过程比作是污水处理,中间件就像是一层层的过滤网。每个中间件在http处...
一,开篇分析 大家好,今天这篇文章主要是对"Connect"中间件以及相关辅助中间件,做一个源码分析系列,我想上一篇文章大家也看了, 介绍了使用方式及用途,而这篇也是出于本人的兴趣,让读者对其有一个更深入的认识,如在分析阶段有什么不正确的地方,请大家多多指教, 好了!老规矩然我们进入正题。先来看一个例子,结合会用引入分析,如下:代码如下:var connect = require("./lib/connect") ;var app = connect.createServer() ...
缓冲(buffer)模块 js起初就是为浏览器而设计的,所以能很好的处理unicode编码的字符串,但不能很好的处理二进制数据。这是Node.js的一个问题,因为Node.js旨在网络上发送和接收经常是以二进制格式传输的数据。比如:- 通过TCP连接发送和接收数据;- 从图像或者压缩文件读取二进制数据;- 从文件系统读写数据;- 处理来自网络的二进制数据流 而Buffer模块为Node.js带来了一种存储原始数据的方法,于是可以再js的上下文中使用二进制...
url模块 处理HTTP请求时url模块使用率超高,因为该模块允许解析URL、生成URL,以及拼接URL。首先我们来看看一个完整的URL的各组成部分。代码如下:href-----------------------------------------------------------------host path--------------- ----------------------------http: // user:pass @ host.com : 8080 /p/a/t/h ?query=string #hash----- --------- -------- ---- -------- ------------- ----...
前提: 安装好node.js、Python2.7与visual studio 2013。 过程: 首先安装GYP项目生成工具,npm install -g node-gyp 。 建立test目录,这是我们的工作目录,在此目录下再建一个src目录,用来存放C++源代码,另新建一个名为binding.gyp的文本文件,这是gyp的项目文件,内容如下:代码如下: {targets:[{target_name:hello,sources:[src/hello.cc]}] }再写一个简单的hello.cc,内容如下:#include using namespace v8;Handle Hello(...
什么是VM? VM模块是NodeJS里面的核心模块,支撑了require方法和NodeJS的运行机制,我们有些时候可能也要用到VM模板来做一些特殊的事情。 通过VM,JS可以被编译后立即执行或者编译保存下来稍后执行(JavaScript code can be compiled and run immediately or compiled, saved, and run later.) VM模块包含了三个常用的方法,用于创建独立运行的沙箱体制,如下三个方法 vm.runInThisContext(code, filename); 此方法用于创建一个独...
如何用C++和node交互,在node的程序中,如果有大数据量的计算,处理起来比较慢,可以用C++来处理,然后通过回调(callback的形式),返回给node。先回顾一下正统的用 C++ 开发 native 模块的方法#include #include using namespace v8; // 这里是 hello 函数的 C++ 实现部分 Handle Method(const Arguments& args) { HandleScope scope; return scope.Close(String::New("world")); } // 这里是模块的初始化函数,必须有 vo...
目标 建立一个 lesson4 项目,在其中编写代码。 代码的入口是 app.js,当调用 node app.js 时,它会输出 CNode(https://cnodejs.org/ ) 社区首页的所有主题的标题,链接和第一条评论,以 json 的格式。 输出示例:[{"title": "【公告】发招聘帖的同学留意一下这里","href": "http://cnodejs.org/topic/541ed2d05e28155f24676a12","comment1": "呵呵呵呵"},{"title": "发布一款 Sublime Text 下的 JavaScript 语法高亮插件","href":...