zoukankan      html  css  js  c++  java
  • node入门笔记

    一、Node简介

    node是一个基于v8引擎的JavaScript运行环境。

    二、全局对象

    setTimeout
    setInterval
    clearTimeout
    clearInterval
    console
    //当前目录下的文件
    console.log(__dirname);
    //当前文件名
    console.log(__filename);
    三、模块
    app.js
    //模块
    var obj = require('./count.js');
    console.log(obj.arr);
    console.log(obj.adder(3,2));
    console.log('there is ' + obj.arr.length + ' fruits in the packet');

    count.js

    var arr = ['apple', 'banana', 'orange'];
    
    var adder = function(a,b) {
        return `this result is ${a+b}`;
    }
    
    /* module.exports.arr = arr;
    module.exports.adder = adder; */
    
    //等价于,这里exports出了一个对象
    module.exports = {
        arr: arr,
        adder: adder
    }

    四、事件

    //事件核心库
    var events = require('events');
    //新增事件
    var myEmitter = new events.EventEmitter();
    //给事件绑定函数
    myEmitter.on('someEvent', function(message) {
        console.log(message);
    })
    //触发事件
    myEmitter.emit('someEvent', 'the event was emmited');
    //导入一个工具库
    var util = require('util');
    
    var Person = function(name) {
        this.name = name
    }
    
    //继承所有Person的事件
    util.inherits(Person, events.EventEmitter);
    
    var xiaoming = new Person('xiaoming');
    var lili = new Person('lili');
    var lucy = new Person('lucy');
    
    var Person = [xiaoming, lili, lucy];
    //绑定事件
    Person.forEach(person => {
        person.on('speak', message => {
            console.log(person.name + ' said ' + message);
        })
    });
    //触发事件
    xiaoming.emit('speak','hi');
    lili.emit('speak','hello');
    lucy.emit('speak','nihao');

    五、读写文件(同步、异步)

    var fs = require('fs');
    //同步读取文件
    var readMe = fs.readFileSync('./test1/readMe.txt','utf8');
    //同步写文件
    fs.writeFileSync('writeMe.txt', readMe);
    //异步读取文件
    fs.readFile('./test1/readMe.txt','utf8', function(err,data){
        console.log(data);
    });
    //异步写文件
    fs.writeFile('writeMe2.txt', readMe,function(err,data){
        console.log('data is copyed');
    });

    六、创建和删除文件

    //创建文件
    fs.mkdir('stuff',function(){
        fs.readFile('readMe.txt', 'utf8',function(err,data){
            fs.writeFile('./stuff/writeMe.txt',data,function(){
                console.log('copy successfully');
            })
        })
    });
    
    //删除文件
    fs.unlink('readMe.txt',function(){
        console.log('this file is deleted');
    });

    七、流和管道

    ls => 查看当前目录下的文件

    ls | grep xx => 查看当前目录下是否含有xx文件

    var fs = require('fs');
    var myReadStream = fs.createReadStream(__dirname + '/test1/readMe.txt', 'utf8');
    var myWriteStream = fs.createWriteStream(__dirname + '/test1/writeMe.txt','utf8');
    var data = '';
    myReadStream.on('data', function(chunk) {
        //data += chunk;
        myWriteStream.write(chunk);
    })
    
    myReadStream.on('end', function() {
        //console.log(data);
    })
    var fs = require('fs');
    var myReadStream = fs.createReadStream(__dirname + '/test1/readMe.txt', 'utf8');
    var myWriteStream = fs.createWriteStream(__dirname + '/test1/writeMe.txt','utf8');
    
    var writeData = 'hello world';
    myWriteStream.write(writeData);
    myWriteStream.end();
    myWriteStream.on('finish', function() {
        console.log('finished');
    })
    //用管道实现复制文件
    myReadStream.pipe(myWriteStream);

    八、web服务器

     创建一个本地的服务器:

    var http = require('http');
    
    var server = http.createServer(function(request, response) {
        response.writeHead(200, { 'Content-Type': 'text/plain'});
        //response.write('Hello from out application');
        response.end('Hello from out application');
    })
    
    server.listen(3000, '127.0.0.1');
    传入纯文本:
    var http = require('http');
    
    var onRequest = function(request, response) {
        response.writeHead(200, { 'Content-Type': 'text/plain'});
        //response.write('Hello from out application');
        response.end('Hello world');
    }
    
    var server = http.createServer(onRequest);
    server.listen(3000, '127.0.0.1');
    console.log('Server started at ls port:3000');
    传入json对象:
    var http = require('http');
    
    var onRequest = function(request, response) {
        response.writeHead(200, { 'Content-Type': 'text/json'});
        //response.write('Hello from out application');
        var myObj = {
            name: 'sasbfhad',
            job: 'coder',
            age: '21'
        };
        response.end(JSON.stringify(myObj));
    }
    
    var server = http.createServer(onRequest);
    server.listen(3000, '127.0.0.1');
    console.log('Server started at ls port:3000');

    传html:

    var http = require('http');
    var fs = require('fs');
    var onRequest = function(request, response) {
        response.writeHead(200, { 'Content-Type': 'text/html'});
        //response.write('Hello from out application');
        var myReadStream = fs.createReadStream(__dirname + '/shiyan.html', 'utf8');
        myReadStream.pipe(response);
    }
    
    var server = http.createServer(onRequest);
    server.listen(3000, '127.0.0.1');
    console.log('Server started at ls port:3000');

    封装:

    app.js

    var server = require('./server');
    
    server.startServer();

    server.js

    var http = require('http');
    var fs = require('fs');
    function startServer() {
        var onRequest = function(request, response) {
            response.writeHead(200, { 'Content-Type': 'text/plain'});
            //response.write('Hello from out application');
            var myReadStream = fs.createReadStream(__dirname + '/shiyan.html', 'utf8');
            myReadStream.pipe(response);
        }    
    
        var server = http.createServer(onRequest);
        server.listen(3000, '127.0.0.1');    
        console.log('Server started at ls port:3000');
    }
    
    module.exports.startServer = startServer;
  • 相关阅读:
    source命令
    bash中单引号与双引号的总结
    鸟哥的linux私房菜学习笔记3
    鸟哥的linux私房菜学习笔记2
    /usr/sbin/atd 和 /etc/init.d/atd有什么区别
    Linux中/etc/fstab /etc/mtab /proc/mounts这三个文件的分析与比较
    服务器本机不能登陆的解决
    有用的博客
    推荐几个好用的PHP集成开发环境
    ANDROID开发笔记(二)
  • 原文地址:https://www.cnblogs.com/bbcfive/p/10221834.html
Copyright © 2011-2022 走看看