node新总结

链接

工具
node-dev文档
node.js之fs模块
nodejs文件操作模块FS(File System)常用函数简明总结

文章
File system 包含查找文件升级版
async.js 接口文档以及测试用例
async笔记(一)——collections
Nodejs异步流程控制Async

demo集合
async_demo

node常用工具库


node文件内容替换

Replace a string in a file with nodejs

var fs = require('fs')
fs.readFile(someFile, 'utf8', function (err,data) {
  if (err) {
    return console.log(err);
  }
  var result = data.replace(/string to be replaced/g, 'replacement');

  fs.writeFile(someFile, result, 'utf8', function (err) {
     if (err) return console.log(err);
  });
});

 node.js常用模块


Node.js实现在目录中查找某个字符串及所在文件


[nodejs取得当前执行路径]
process.cwd()

# Nodejs下如何判断文件夹的存在以及删除文件夹下所有的文件
var folder_exists = fs.existsSync(‘./cache‘); 
 if(folder_exists == true) {  
  var dirList = fs.readdirSync(‘./cache‘);
  dirList.forEach(function(fileName) 
   {  fs.unlinkSync(‘./cache/‘ + fileName);
    });
 }

异步
在Node.js中实现文件复制的方法和实例

var gulp = require('gulp');
var del = require('del');
var fs = require( 'fs' );
var stat = fs.stat;
var template = require( 'art-template' );

/**
 * 直接进行编译
 * @param  {[type]} src [description]
 * @return {[type]}     [description]
 */
var compile = function( src ){
    // 读取目录中的所有文件/目录
    // 异步加载
    /*fs.readdir( src, function( err, paths ){
        if( err ){
            throw err;
        }
        paths.forEach(function( path ){
            var _src = src + '/' + path,
                readable, writable;       
            stat( _src, function( err, st ){
                if( err ){
                    throw err;
                }
                // 判断是否为文件
                if( st.isFile() ){
                    // 编译
                    if ( /\.html$/.test(_src) ) {
                        var filePath = _src.replace(/\.html$/g, '');
                        var html = template( filePath, data);
                        fs.writeFile( filePath + '.html', html); 
                    }
                } else if(st.isDirectory()){
                    compile(_src);
                }
            });
        });
    });*/

    // 同步加载
    var paths = fs.readdirSync(src);
    paths.forEach(function( path ){
        var _src = src + '/' + path;     
        stat( _src, function( err, st ){
            if( err ){
                throw err;
            }
            // 判断是否为文件
            if( st.isFile() ){
                // 编译
                if ( /\.html$/.test(_src) ) {
                    var filePath = _src.replace(/\.html$/g, '');
                    var dataPath = filePath.replace(/\/pages\//,'/data/');
                    var isexist = fs.existsSync(dataPath + '.json');
                    if(isexist){
                        var data = require(dataPath + '.json');
                        var html = template( filePath, data);
                        fs.writeFileSync( filePath + '.html', html);     
                    }
                }
            } else if(st.isDirectory()){
                compile(_src);
            }
        });
    });
};

gulp.task('copy', function() {
    return gulp.src(['./src/**'])
        .pipe(gulp.dest('./dist'));    
});

gulp.task('compile', ['copy'], function() {
    return compile('./dist');
});

gulp.task('del', ['compile'], function() {
    del(['./dist/public', './dist/data']);
});

gulp.task('default', ['del']);

利用nodejs排序文件

code

nodejs忽略某些文件
NodeJS readdirSync ignore common patterns (i.e. '.svn', '.git', '.DS_Store', 'thumbs.db')

code

readfile会覆盖内容,appendfile可以实现内容叠加

appendfile

node stream学习

代码见github提交nodemodules
@2017-05-06 22:28