希望大家能够坚持看下去我这系列的文章,这也是对我的最大的鼓励与支持,让我们共同进步,以文会友,相互帮助。好了直接进入今天的主题, 什么是“Connect”,中间件又当如何理解,带着问题来看今天的文章。如何理解 "中间件" ? 我的理解是这样的,中间件就是类似于一个过滤器的东西,在客户端和应用程序之间的一个处理请求和响应的的方法。 如果把一个http处理过程比作是污水处理,中间件就像是一层层的过滤网。每个中间件在http处...
一,开篇分析 大家好,今天这篇文章主要是对"Connect"中间件以及相关辅助中间件,做一个源码分析系列,我想上一篇文章大家也看了, 介绍了使用方式及用途,而这篇也是出于本人的兴趣,让读者对其有一个更深入的认识,如在分析阶段有什么不正确的地方,请大家多多指教, 好了!老规矩然我们进入正题。先来看一个例子,结合会用引入分析,如下:代码如下: var connect = require("./lib/connect") ; var app = connect.createServe...
一,开篇分析 文件系统模块是一个简单包装的标准 POSIX 文件 I/O 操作方法集。可以通过调用 require("fs") 来获取该模块。文件系统模块中的所有方法均有异步和同步版本。 (1),文件系统模块中的异步方法需要一个完成时的回调函数作为最后一个传入形参。 (2),回调函数的构成由调用的异步方法所决定,通常情况下回调函数的第一个形参为返回的错误信息。 (3),如果异步操作执行正确并返回,该错误形参则为null或者undefined。如...
一,开篇分析 这篇文章把这三个模块拿来一起说,原因是它们各自的篇幅都不是很长,其次是它们之间存在着依赖关系,所以依次介绍并且实例分析。废话不多说了,请看下面文档: (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)) ;运行结果: 代码如下...
一,开篇分析 从今天开始,我们来深入具体的模块学习,这篇文章是这个系列文章的第三篇,前两篇主要是以理论为主,相信大家在前两篇的学习中, 对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概览:代码如下...
nodejs的功能块大都以模块的形式存在的。 通常会有一个统一入口index.js,然后调用不同的模块来完成我们需要的功能。 我们先来看看怎么把server.js变成一个模块让 index.js 主文件使用。代码如下: var http = require("http"); ... http.createServer(...);“http” 是nodejs自带的模块,我们在我们的代码中请求它并把返回值赋给一个本地变量。 我们可以用这个变量来调用 http 模块所提供的公共方法的对象,变量名不是固定的,你完...
archiver是一个在nodejs中能跨平台实现打包功能的模块,可以打zip和tar包,是一个比较好用的三方模块。 使用前先安装archiver模块。代码如下: npm install archiver建立一段代码代码如下: var archiver = require(archiver); var fs = require(fs); //被打包文件 var files = [ files/001.png, files/002.png ]; var zipPath = test.zip; //创建一最终打包文件的输出流 var output = fs.createWriteStream(zipPath); //生成a...
Javascript自诞生以来,曾经没有人拿它当做一门编程语言。在Web 1.0时代,这种脚本语言主要被用来做表单验证和网页特效。直到Web 2.0时代,前端工程师利用它大大提升了网页上的用户体验,JS才被广泛重视起来。在JS逐渐流行的过程中,它大致经历了工具类库、组件库、前端框架、前端应用的变迁。Javascript先天就缺乏一项功能:模块,而CommonJS规范的出现则弥补了这一缺陷。本文将介绍CommonJS规范及Node的模块机制。 在其他高级语言...
JavaScript 规范(ECMAScript)没有定义一套完善的能适用于大多数程序的标准库。CommonJS 提供了一套 JavaScript 标准库规范。Node 实现了 CommonJS 规范。 模块基础 在 Node 中,模块和文件是一一对应的。我们定义一个模块:代码如下: // circle.js var PI = Math.PI; // 导出函数 area exports.area = function(r) { return PI * r * r; } // 导出函数 circumference exports.circumference = function(r) { return ...
N久之前的一个坑——用 Node.js 来重构 NBUT 的 Online Judge,包括评测端也得重构一遍。(至于什么时候完成大家就不要关心了,(/‵Д′)/~ ╧╧总之我们现在要做的其实简而言之就是——用C/C++来实现 Node.js 的模块。 准备工作工欲善其事,必先~~耍流氓~~利其器。 node-gyp首先你需要一个 node-gyp 模块。在任意角落,执行:代码如下: $ npm install node-gyp -g 在进行一系列的 blahblah 之后,你就安装好了。 Python然后...
温故而知新,可以为湿矣首先请大家记住这个 V8 的在线手册——http://izs.me/v8-docs/main.html。还记得上次的 building.gyp 文件吗?代码如下: { "targets": [ { "target_name": "addon", "sources": [ "addon.cc" ] } ] } 就像这样,举一反三,如果多几个 *.cc 文件的话就是这样的: "sources": [ "addon.cc", "myexample.cc" ] 上次我们把俩步骤分开了,实际上配置和编译可以放在一起的: $ n...
诚然,之前处理都是使用内置的process.agrv ,这个能work,但是不好使,于是tj大神给写了一个,my god,完全的高大上: 1、安装代码如下: npm install commander2、option 解析 Options with commander are defined with the .option() method, also serving as documentation for the options. The example below parses args and options from process.argv, leaving remaining args as the program.args array which were not con...
NPM是一个Node包管理和分发工具,已经成为了非官方的发布Node模块(包)的标准。有了NPM,可以很快的找到特定服务要使用的包,进行下载、安装以及管理已经安装的包。NPM常用的命令有: (1)$ npm install moduleNames 安装Node模块 注意事项:如果在使用模块的时候不知道其名字,可以通过http://search.npmjs.org网站按照 索引值找到想要的模块。npm也提供了...