开始nodejs+express的学习+实践(4)

1.nodejs中fs文件系统模块学习css

主要了解node对文件的操做,咱们能够大概总结针对文件系统的大体操做有什么?html

1.文件打开node

2.文件关闭web

3.文件读取app

4.文件写入异步

5.删除文件学习

6.移动文件测试

7复制文件ui

7.建立目录编码

8.删除目录

......

等等吧!确定还好不少,咱们知道node是异步非阻塞处理,这些操做除了咱们概念中同步方式确定还会有异步方式,也就是同一个处理会有2个方法共选择。

fs模块手册地址:http://nodejs.cn/doc/nodejs/fs.html 里面介绍了全部处理,咱们在项目下作测试操做。

不少都是对文件的操做,而咱们的项目是web形式,除了读取能够把读取的数据显示出来,其余的结果状况咱们须要到目录去查看。

==咱们加入路由,get的“/fs”处理,咱们的引擎页面fs.html,咱们把fs的处理放在路由下,只要访问地址,就会执行咱们的fs操做,对应查看就好了。

fs.html

<!DOCTYPE html>
<html>
  <head>
    <title>fs</title>
    <link rel='stylesheet' href='/stylesheets/style.css' />
  </head>
  <body>
    <h1>fs</h1>
  </body>
</html>

路由index.js加入:

    app.get('/fs',  function(req, res){
        res.render('fs');
    });

访问时,里面要写入fs的操做,咱们运行,地址转到“http://localhost:1234/fs”,会看到“fs”。

我么先在app.js同级建立文件夹“fs”,里面放入1.txt,2.txt,3.txt,1为空,二、3随便写一些数据,提供文件处理操做。

 

1..路由修改:

    app.get('/fs',  function(req, res){
        res.render('fs');
        fs.appendFile('./fs/1.txt', 'data to append', 'utf8', function(){});
    });

往1.txt写数据,编码utf8,咱们重启运行,而后查看1.txt内容:

 结论:fs.appendFile(file, data[, options], callback),参数1要写入那个文件,2写入数据内容,可指定编码,默认utf-8,3回调处理。

咱们要根据测试目录修改file位置,咱们是方法fs目录下。

同步不演示了,和异步同理。

2.路由修改

fs.chmod(path, mode, callback) 文件权限修改,

3.路由修改

    app.get('/fs',  function(req, res){
        fs.exists("./fs", function(exists){
            res.render('fs', { res:exists });
        });
    });

判断路径是否存在,咱们把结果输出到页面,fs.html:

<!DOCTYPE html>
<html>
  <head>
    <title>fs</title>
    <link rel='stylesheet' href='/stylesheets/style.css' />
  </head>
  <body>
    <h1>fs</h1>
    <h1><%= res %></h1>
  </body>
</html>

重启,运行,

改为不存在的路径,测试会输出false。

    app.get('/fs',  function(req, res){
        fs.exists("./ff", function(exists){
            res.render('fs', { res:exists });
        });
    });

fs.exists(path, callback) 路径是否存在判断,回调会返回true或者false

4.路由修改

    app.get('/fs',  function(req, res){
        fs.mkdir("./fs/me", function(){
            res.render('fs', { res:exists });
        })
    });

测试,结果建立目录

fs.mkdir(path[, mode], callback)  会判断建立目录是否存在,咱们是在fs下建立me目录

5.路由修改

    app.get('/fs',  function(req, res){
        fs.readFile('./fs/2.txt', 'utf8', function(err, data){
            if (err) throw err;
            res.render('fs', { res:data });
        });
    });

咱们测试,运行

 

中文乱码,好吧,以为中文会出问题,咱们把2.txt打开,改成utf-8保存,测试运行:

会发现,中文正常显示了。

fs.readFile(file[, options], callback)  回调会返回读取的结果。

6.路由修改

    app.get('/fs',  function(req, res){
        fs.rename("./fs/1.txt", "./fs/me/11.txt", function(){})
    });

移动方法能够修更名称,测试运行。

 

所在目录和名称都被修改了,这个是异步处理,同步的同样。

fs.rename(oldPath, newPath, callback) 参数1指定要移动文件路径,2执行移动到的位置和新名字。

7.路由修改

    app.get('/fs',  function(req, res){
        fs.rmdir("./fs/te", function(){})
    });

咱们在fs下建立te文件夹

运行后发现被删除,当咱们要删除me目录,发现是不可行的,由于me下存在文件,说明删除目录只能删除空目录。

fs.rmdir(path, callback) 删除目录方法,不过只能删除空目录。

8.路由修改

    app.get('/fs',  function(req, res){
        fs.unlink("./fs/2.txt", function(){})
    });

运行,咱们会发现2.txt被删除,文件删除方法。

fs.unlink(path, callback) 参数1,删除文件路径。

9.路由修改

    app.get('/fs',  function(req, res){
        fs.writeFile('./fs/me/1.txt', 'read me','utf8', function (err) {
            if (err) throw err;
        });
    });

写入内容,不存在会新建文件,而且写入,

咱们运行,会发现me下建立了1.txt而且写入了内容,

fs.writeFile(file, data[, options], callback)

除了这些还有不少操做,能够百度文件打开结合读取或者写入的处理。不过咱们经常使用的就是:

1.移动文件(上传表单)

2.删除文件(删除信息删除图片)

3.文件和目录是否存在(防止错误发生)

4.建立目录(针对每一个用户建立单一目录保存内容)2.nodejs中crypto加密模块学习

2.nodejs中crypto加密模块学习

crypto模块做为加密模块,针对web开发,主要就是密码的加密处理。

crypto手册地址:http://nodejs.cn/doc/nodejs/crypto.html

index.js路由文件先引入crypto,与引入fs模块同理

var crypto = require('crypto');

路由加入:

    app.get('/crypto',  function(req, res){
        res.render('crypto', { res:"crypto" });
    });

crypto.html:

<!DOCTYPE html>
<html>
  <head>
    <title>crypto</title>
    <link rel='stylesheet' href='/stylesheets/style.css' />
  </head>
  <body>
    <h1><%= res %></h1>
  </body>
</html>

地址:http://localhost:1234/crypto 会看见crypto几个大字。

咱们引用加密和使用md5加密:

    app.get('/crypto',  function(req, res){
        var pass="admin";
        var md5 = crypto.createHash('md5');
        var mpass=md5.update(pass).digest('hex');
        var rmpass=mpass.substring(2);
        res.render('crypto', { res:pass,resm:mpass,resrm:rmpass });
    });

crypto.html,显示三种结果:

<!DOCTYPE html>
<html>
  <head>
    <title>crypto</title>
    <link rel='stylesheet' href='/stylesheets/style.css' />
  </head>
  <body>
    <h1><%= res %></h1>
    <h1><%= resm %></h1>
    <h1><%= resrm %></h1>
  </body>
</html>

咱们运行查看结果:

 

1是为加密内容

2是加密的内容

3是加密后进行裁剪的内容

咱们在加密后在作裁剪是不固定操做的,咱们从第3位开始,一样也能够从其余位置,更难猜出密码。

3.nodejs中全局对象的学习

手册地址:http://nodejs.cn/doc/nodejs/globals.html

咱们加入路由

    app.get('/globals',  function(req, res){
        res.render('crypto', { res:"globals" });
    });

globals.html:

<!DOCTYPE html>
<html>
  <head>
    <title>globals</title>
    <link rel='stylesheet' href='/stylesheets/style.css' />
  </head>
  <body>
    <h1><%= res %></h1>
  </body>
</html>

运行:http://localhost:1234/globals,看见globals几个大字。

咱们输出几个全局对象内容,看看结果,修改路由文件:

    app.get('/globals',  function(req, res){
        res.render('globals', { res:__dirname+":"+__filename });
    });

 

结果:

index.js所在的目录和目录+名称。

相关文章
相关标签/搜索