Nodejs

作者: 小子加油 | 来源:发表于2016-09-13 09:17 被阅读0次

    nodejs的模块


    1. require():导入一个模块
    2. exports():导出一个模块
    3. exports()与module.exports()区别
      所有的exports收集到的属性和方法,都赋值给了 Module.exports。当然,这有个前提,就是Module.exports本身不具备任何属性和方法。如果,Module.exports已经具备一些属性和方法,那么exports收集来的信息将被忽略。

    代码1:

    a.js

    exports.li = function(){
        console.log('Hello node!');
    };
    

    b.js

    var mo = require('./a.js');
    mo.li();
    

    代码2:
    a.js

    function a(){
        console.log('Hello node!');
    }
    module.exports = a;
    

    b.js

    var mo = require('./a.js');
    mo();
    

    nodejs文件操作


    Node.js 文件系统(fs 模块)模块中的方法均有异步和同步版本,例如读取文件内容的函数有异步的 fs.readFile() 和同步的 fs.readFileSync()
    异步的方法函数最后一个参数为回调函数,回调函数的第一个参数包含了错误信息(error)。
    建议大家是用异步方法,比起同步,异步方法性能更高,速度更快,而且没有阻塞。

    1. 异步和同步:

    input.txt

    测试文本hello world!
    

    file.js

    var fs = require('fs');
    // 异步读取
    fs.readFile('input.txt', function (err, data) {
      if (err) {
         return console.error(err);
      }
      console.log("异步读取: " + data.toString());
    });
    
    // 同步读取
    var data = fs.readFileSync('input.txt');
    console.log("同步读取: " + data.toString());
    console.log("程序执行完毕。");
    

    运行结果:

    $ node file.js 
    同步读取: 测试文本hello world!
    程序执行完毕。
    异步读取: 测试文本hello world!
    

    2.打开文件

    文件打开方式:

      r 以读取模式打开文件。如果文件不存在抛出异常。
      r+   以读写模式打开文件。如果文件不存在抛出异常。
      rs   以同步的方式读取文件。
      rs+  以同步的方式读取和写入文件。
      w    以写入模式打开文件,如果文件不存在则创建。
      wx   类似 'w',但是如果文件路径存在,则文件写入失败。
      w+   以读写模式打开文件,如果文件不存在则创建。
      wx+  类似 'w+', 但是如果文件路径存在,则文件读写失败。
      a 以追加模式打开文件,如果文件不存在则创建。
      ax   类似 'a', 但是如果文件路径存在,则文件追加失败。
      a+   以读取追加模式打开文件,如果文件不存在则创建。
      ax+  类似 'a+', 但是如果文件路径存在,则文件读取追加失败。
    

    代码:

    var fs = require('fs');
    //异步打开文件
    console.log('准备打开文件');
    fs.open('input.txt','r+',function(err,fd){
        if(err){
            return console.err(err);
        }
        console.log('文件打开成功');
    })
    

    3.获取文件信息(判断是否为文件)

    var fs = require("fs");
    console.log("准备打开文件!");
    fs.stat('input.txt', function (err, stats) { 
        if (err) {
           return console.error(err);
         } 
        console.log(stats);
        console.log("读取文件信息成功!"); 
        // 检测文件类型 console.log("是否为文件(isFile) ? " + stats.isFile()); 
        console.log("是否为目录(isDirectory) ? " + stats.isDirectory());
    });
    

    4.写入文件
    file.js

    var fs = require("fs");
    console.log("准备写入文件");
    fs.writeFile('input.txt', '我是通过写入的文件内容!',  function(err) {
        if (err) {
           return console.error(err);
         }
         console.log("数据写入成功!");
         console.log("--------我是分割线-------------")
         console.log("读取写入的数据!");
         fs.readFile('input.txt', function (err, data) {
            if (err) {
               return console.error(err);
            }
            console.log("异步读取文件数据: " + data.toString());
         });
    });
    

    运行结果

    $ node file.js 
     准备写入文件数据写入成功!
    --------我是分割线-------------
    读取写入的数据!
    异步读取文件数据: 我是通过写入的文件内容
    

    5.读取文件

    var fs = require("fs");
    var buf = new Buffer(1024);
    console.log("准备打开已存在的文件!");
    fs.open('input.txt', 'r+', function(err, fd) {
       if (err) {
           return console.error(err);
       } 
       console.log("文件打开成功!");
       console.log("准备读取文件:");
       fs.read(fd, buf, 0, buf.length, 0, function(err, bytes){
           if (err){
              console.log(err);
           }
           console.log(bytes + "  字节被读取");
           // 仅输出读取的字节
           if(bytes > 0){
               console.log(buf.slice(0, bytes).toString());
           }
       });
    });
    

    nodejs的IO键盘交互


    var readline = require('readline');
    const rl = readline.createInterface({
        input:process.stdin,
        output:process.stdout
    });
    rl.setPrompt('请和键盘交互:');
    rl.prompt();
    rl.on('line',(line)=>{
        var str = line.trim();
        console.log('你输入的是:'+str);
        rl.prompt();
    }).on('close',()=>{
        console.log('exit');
        process.exit(0);
    });
    

    nodejs的URL判断渲染模板


    var http = rquire('http');
    var fs = require('fs');
    var urlapi = require('url');
    http.createServer(function(request,response){
        //解析请求的url
        var url = urlapi.parse(request.url);
        console.log(url.pathname);
        console.log(request.url);
    }).listen(3000,'127.0.0.1');
    

    nodejs实现IO键盘交互或浏览器输入交互
    nodejs判断url请求渲染2个简单的模板
    写3个静态的页面,首页,列表页,详情页

    相关文章

      网友评论

          本文标题:Nodejs

          本文链接:https://www.haomeiwen.com/subject/floyettx.html