最近在做一个文件升级的功能,需要从下载服务器中指定目录下的文件.在学习了zlib后发现这个模块达不到这个功能 在查找资料后发现后发现 archiver 模块很好用,不过我也发现大部分中文资料没有如果查询压缩进度,所以在此分享一下: archiver的github地址: https://github.com/archiverjs/node-archiver API文档地址: https://archiverjs.com/docs/ 压缩等级说明: var archive = archiver('z…
去除目录结构加上 --strip-components N 如: 压缩文件eg.tar 中文件信息为 src/src/src/eg.txt 运行 tar -xvf eg.tar --strip-components 1 结果:src/src/eg.txt 如果运行  tar -xvf eg.tar --strip-components 3 解压结果为: eg.txt 在解压的时候,如果想指定解压目录,可以加参数-C 目标目录 如: 如我们解压eg.tar, 该文件在/data/src下面,如果需…
最近项目中存在的问题头疼脑热了好一会. 我先简单说明下问题是由,使用$timeOut循环调用的时候由于页面存在异步加载会出现反复执行循环反复调用$timeOut,怎么清除跳出循环都不管用.于是查到了如下方法,可能理解上稍有偏差但是事实证明是管用的. 在angular中,如需使用$timeOut需要通过注入service的方式在控制器中依赖注入这里就不多说了. function fnTime (x){ if( x<100 ){ x--; var time = $timeOut( function(…
深入理解Node.js中的垃圾回收和内存泄漏的捕获 文章来自:http://wwsun.github.io/posts/understanding-nodejs-gc.html Jan 5, 2016 对于Node.js而言,通常被抱怨最多的是它的性能问题.当然这并不意味着Node.js在性能方面就比其他技术表现的都更差, 因此开发者有必要清晰的理解Node.js是具体如何工作的的.由于这个技术有一个非常扁平的学习曲线, 如果要跟踪Node.js的运行,通常都比较复杂,因此你需要提前理解它的运行…
今天做项目中遇见一个压缩问题,我的目录结构是树形菜单,文件在服务器存储是平面存储,没有目录结构,所以在下载指定目录的时候要构建目录结构,如下: 当我右键点击下载b目录文件夹的时候要Download  b 目录下的所有文件,并且有目录结构,实现如下: public static void CreateZip(List<string> directories, List<string> filenames, string zipFileName, string dir) { using…
Node.js中的URL 什么是URL URL是Uniform Location Resource的缩写,翻译为"统一资源定位符",也就是描述资源位置的固定表示方法.被URL描述的资源可以位于互联网上,也可以位于本地. URL的组成结构 基本URL包含模式(或者成为协议),服务器名(或IP地址),路径和文件名. 第一部分:协议 通过协议,可以获取打开URL的方式,最常见的协议是http,从网上查到的协议如下: http 超文本传输协议 https 用安全套接字层传送的超文本传输协议 f…
概要 __dirname 总是指向被执行 js 文件的绝对路径 在 /d1/d2/myscript.js 文件中写了 __dirname, 它的值就是 /d1/d2 . ./ 会返回你执行 node 命令的路径,例如你的工作路径. 有一个特殊情况是在 require() 中使用 ./ 时,这时的路径就会是含有 require() 的脚本文件的相对路径. 例如 假设有如下目录结构 /dir1 /dir2 pathtest.js 在 pathtest.js 中,有如下代码 var path = re…
Sequelize是一个基于promise的关系型数据库ORM框架,这个库完全采用JavaScript开发并且能够用在Node.JS环境中,易于使用,支持多SQL方言(dialect),.它当前支持MySQL,.MariaDB.SQLite.PostgreSQL.Sql Server 数据库. 目前在Node.js中,Sequelize的关注度较高,用的也较多. 因为是基于promise规范,在调用后的处理上不再是callback方式,而是统一的链式调用方式,调用直观,易读. 那么就先用起来吧,…
node.js中如何向客户端发送COOKIE呢?有如下两个方案: 一.使用response.writeHead,代码示例: //设置过期时间为一分钟 var today = new Date(); var time = today.getTime() + 60*1000; var time2 = new Date(time); var timeObj = time2.toGMTString(); response.writeHead({ 'Set-Cookie':'myCookie="type=…
为了解决这个阻塞问题,JavaScript严重依赖于回调,这是在长时间运行的进程(IO,定时器等)完成后运行的函数,因此允许代码执行经过长时间运行的任务. downloadFile('example.com/weather.json', function(err, data) { console.log('Got weather data:', data); }); 但是,问题来了,回调地狱 虽然回调的概念在理论上是巨大的,但它可能导致一些真正令人困惑和难以阅读的代码. 想象一下,如果你需要在回…
在前端学习过程中,涉及到路径的问题非常多,相对路径,绝对路径等.有时候明明觉得没问题,但是还是会出错.或者说线下没问题,但是到了线上就出现问题,因此弄懂路径问题,非常关键.我们需要知道为什么这个地方既可以使用相对路径,又可以使用绝对路径,为什么有些地方只能使用绝对路径. 一.Node.js中加载模块的路径设置 const myClass = require('./myclass') 上面这段代码是我们在使用Node.js中经常会使用到的代码-引入模块.我们都知道如果加载的是核心模块,直接requ…
本文转自:https://www.cnblogs.com/kongxianghai/p/5582661.html Sequelize是一个基于promise的关系型数据库ORM框架,这个库完全采用JavaScript开发并且能够用在Node.JS环境中,易于使用,支持多SQL方言(dialect),.它当前支持MySQL,.MariaDB.SQLite.PostgreSQL.Sql Server 数据库. 目前在Node.js中,Sequelize的关注度较高,用的也较多. 因为是基于promi…
一.win下安装redis https://github.com/MicrosoftArchive/redis/releases 下载Redis-x64-3.2.100.zip,然后解压,放到自定义目录. 然后打开命令行工具,进入到该目录下,运行安装redis服务. redis-server.exe --service-install redis.windows-service.conf --loglevel verbose 然后就可以启动redis服务了 redis-server --serv…
一个是前端技术,一个是后端技术 浏览器中的 JavaScript ECMAScript  语言基础,如语法.数据类型结构.一些内置对象 BOM(Browser Object Model)  一些操作页面元素的方法 DOM(Document Object Model) 一些操作浏览器的方法 Node.js 中的 JavaScript ECMAScript Node 为 JavaScript 提供的服务器级别的 API…
进程,你可以把它理解成一个正在运行的程序.node.js中每个应用程序都是进程类的实例对象. node.js中有一个 process 全局对象,通过它我们可以获取,运行该程序的用户,环境变量等信息. 一.process 对象 console.log('可执行文件绝对路径', process.execPath); console.log('版本号', process.version); console.log('依赖库的版本号', process.versions); console.log('运…
node.js中为我们提供了fs文件系统模块,实现对文件或目录的创建,修改和删除等操作. fs模块中,所有的方法分为同步和异步两种实现. 有 sync 后缀的方法为同步方法,没有 sync 后缀的方法为异步方法. 一.文件的整个读取 const fs = require('fs'); //参数一表示读取的文件 //参数二表示读取的配置,{encoding:'null', flag:'r'} //encoding 表示编码方式 //flag 表示文件系统标志 //如果没有指定参数二中的encodi…
首先下载express模块,命令行输入 npm install express 1.node.js中express模块创建服务端 在js代码同文件位置新建一个文件夹(www_root),里面存放网页文件等,就可以在浏览器中访问了 var express = require("express"); var path = require("path"); var app = express(); //目录 (当前目录下的www_root目录) app.use(expre…
node.js中使用CommonJS规范实现模块功能,一个单独的文件就是一个单独的模块.通过require方法实现模块间的依赖管理. 通过require加载模块,是同步操作. 加载流程如下: 1.找到需要加载的模块文件. 2.判断是否缓存过,如果没有,则读取模块文件的内容. 3.把读取到的内容,封装在一个函数里运行. (function (exports, require, module, __filename, __dirname) { //模块的代码实际上在这里 }); 4.返回 modul…
在Node.js中操作文件系统 在Node.js中,使用fs模块来实现所有有关文件及目录的创建,写入及删除操作.在fs模块中,所有对文件及目录的操作都可以使用同步与异步这两种方法.比如在执行读文件操作时,可以使用readFile与readFileSync方法.在所有这些方法中,方法名中具有Sync后缀的方法均为同步方法,而不具有Sync后缀的方法均为异步方法.两者的区别是:在使用同步方法执行操作结束之前,不能执行后续代码.比如如下: var fs = require(“fs”); var dat…
Node.js中http-server的使用 使用阿里的npm镜像 国外的npm太慢了.查看一下自己使用的源: npm config get registry 应该显示https://registry.npmjs.org/.这回改成阿里的: npm config set registry https://registry.npm.taobao.org 不过在npm publish时要记得切回去 安装http-server http-server是一个基于Node.js的简单零配置命令行HTTP服…
玩node.js,不玩后台那就是杀鸡牛刀,今天没事整理一下以前开发node.js后台的心得 1.首先安装node.js以及cnpm,在这儿我就不说了,看我node.js中的另一篇文章node.js的安装和配置 安装express框架: sudo cnpm install express -g 全局安装express, 之后再安装express生成器,用下面语句就能安装 sudo cnpm install -g express-generator 此时你就可以输入 express -v 查看你所安…
Node.js中的不安全跳转如何防御详解 导语: 早年在浏览器大战期间,有远见的Chrome认为要运行现代Web应用,浏览器必须有一个性能非常强劲的Java引擎,于是Google自己开发了一个高性能的开源的Java引擎,名字叫V8.在2009年,Ryan正式推出了基于Java语言和V8引擎的开源Web服务器项目,命名为Node.js. 对于任何web开发人员来说,不安全或未经验证的重定向都是重要的安全考虑因素.Express为重定向提供了本地支持,使它们易于实现和使用.Express是一种保持最…
Cookie和Session在Node.JS中的实践(三) 前面作者写的COOKIE篇.SESSION篇,算是已经比较详细的说明了两者间的区别.机制.联系了.阅读时间可能稍长,因为作者本身作图也做了不短时间,都是为了能形象的把COOKIE和SESSION的运行原理描述出来,但花点时间去阅读理解他们是值得的.因为这个技术点虽然小,但涉及到前后端交互,无论是做前端还是后台,都需要懂.不然,只会遭同事鄙视--所以,为了不被鄙视,还是好好读多点书,充实自己. 如果还未搞懂COOKIE和SESSION的,…
本章中你将会学到如何在node.js中使用neo4j图形数据库. 当你想存储或者查询和数据紧密关联的数据的时候,图形数据库很有用. neo4j是一个可有效存储,处理和查询你数据模型中紧密相连的元素的数据库. neo4j有很强大且灵活的数据模型,你可以使用其来表示你真实的,易变结构的信息,且不失真. 使用内置的REST API来和Neo4j通讯 Neo4j数据库有内在的HTTP REST接口,我们可以使用其直接和Neo4j数据库交接(interface). 你需要简单的使用POST向一个HTTP…
在php,C++中都有命名空间的概念,命名空间主要是用来解决引入文件存在函数,类,变量重名的问题,在node.js中,没有命名空间这么复杂的概念,在node中,有模块的概念,也就是将功能性的代码都放在一起.然后引入,在本文件中使用.这种不会出现函数名,变量重名问题,在引入的模块中,都是以导入的方式注册的.看下面的例子: //circle.js var pi = 3.14; //计算圆的周长 exports.circle = function(r) { return 2 * pi * r; } /…
[摘要] 官网博文翻译,nodejs中的定时器 示例代码托管在:http://www.github.com/dashnowords/blogs 原文地址:https://nodejs.org/en/docs/guides/event-loop-timers-and-nexttick 如果你常年游走于Nodejs中文网,可能已经错过了官方网站上的第一手资料,Nodejs中文网并没有翻译这些非常高质量的核心文章,只提供了中文版的API文档(已经很不容易了,没有任何黑它的意思,我也是中文网的受益者),…
目录 Event Loop 是什么? Event Loop 基本解释 事件循环阶段概览 事件循环细节 timers pending callbacks poll阶段 check close callbacks setImmediate( )和setTimeout( ) proess.nextTick( ) 理解 process.nextTick() 为什么会允许这种情况存在? process.nextTick( )对比setImmediate( ) 为什么使用process.nextTick()…
在 Node.js 中处理大 JSON 文件 场景描述 问题一: 假设现在有一个场景,有一个大的 JSON 文件,需要读取每一条数据经过处理之后输出到一个文件或生成报表数据,怎么能够流式的每次读取一条记录? [ {"id": 1}, {"id": 2}, ... ] 问题二: 同样一个大的 JSON 文件,我只读取其中的某一块数据,想只取 list 这个对象数组怎么办? { "list": [], "otherList": […
node.js中模块和包 什么是模块 如何创建并加载模块 1. 创建模块 2. 单次加载 3. 覆盖 exports 如何创建一个包 1. 作为文件夹的模块 2. package.json 如何使用包管理器 1. 获取一个包 2. 本地模式和全局模式 3. 创建全局链接 什么是模块 模块是 Node.js 应用程序的基本组成部分,文件和模块是一一对应的.换言之,一个 Node.js 文件就是一个模块,这个文件可能是 JavaScript 代码.JSON 或者编译过的 C/C++ 扩展. 如何创建…
通常情况下,在Node.js中我们可以通过underscore的extend或者lodash的merge来合并两个对象,但是对于像下面这种复杂的对象,要如何来应对呢? 例如我有以下两个object: var obj1 = { "name" : "myname", "status" : 0, "profile": { "sex":"m", "isactive" : tr…