zoukankan      html  css  js  c++  java
  • nodejs入门学习

    基础

    node.js是用c++编写的一个javascript运行环境,特点:事件驱动、异步I/0。作为服务器端的javascript解释器,Node是一个轻量高效的开发平台,用户构建响应快速、高度可扩展的web应用,它使用事件驱动和非阻塞的I/O模型,非常适合开发数据密集、对实时响应要求高的分布式应用。

    server.js //简单的http服务器

    var http = require('http');
    http.createServer(function(req, res) {
        res.writeHead(200, {'Content-Type': 'text/plain'});
        res.end('hello world
    ');
    }).listen(8888);
    console.log('server running at http://127.0.0.1');

    执行:node server.js

    npm

    查看已安装的node包:npm list [-g]
    安装node包:npm install pkgname[@ver] [-g]
    移除已安装node包:npm remove|uninstall pkgname [-g]
    获得帮助:npm help <command>
    更新已安装包:npm update pkgname
    支持express命令:npm install express-generator -g
    创建全局连接:npm link express

    模块

    main.js

    var hello = require('./hello');
    hello.world();

    hello.js

    exports.world = function() {
        console.log('hello world');
    }

    main1.js

    var Hello = require('./hello1');
    hello = new Hello();
    hello.setName('aaa');
    hello.sayHello();

    hello1.js

    function Hello() {
        var name;
        this.setName = function(myname) {
            name = myname;
        }
        this.sayHello = function() {
            console.log('hello ' + name);
        }
    }
    module.exports = Hello;

    事件

    event.js

    var EventEmitter = require('events').EventEmitter;
    var event = new EventEmitter();
    event.on('event1', function() {
        console.log('event1 occured.');
    });
    setTimeout(function() {
        event.emit('event1');
    }, 1000);

    event1.js

    var events = require('events');
    var emitter = new events.EventEmitter();
    emitter.on('event1', function(arg1, arg2) {
        console.log('listener1', arg1, arg2);
    });
    emitter.on('event1', function(arg1, arg2) {
        console.log('listener2', arg1, arg2);
    });
    emitter.emit('event1', 'aaa', 123);

    更多参考http://www.w3cschool.cc/nodejs/nodejs-event.html

    路由

    index.js

    var server = require('./server');
    var router = require('./router');
    server.start(router.route);

    server.js

    var http = require('http');
    var url = require('url');
    function start(route) {
        function onRequest(req, res) {
            var pathname = url.parse(req.url).pathname;
            console.log('request for ' + pathname + ' received.');
            route(pathname);
            res.writeHead(200, {'Conten-Type': 'text/plain'});
            res.write('hello, world');
            res.end();
        }
        http.createServer(onRequest).listen(8888);
        console.log('server has started.');
    }
    exports.start = start;

    router.js

    function route(pathname) {
        console.log('about to route a request for ' + pathname);
    }
    exports.route = route;

     文件系统

    fs1.js

    var fs = require('fs');
    fs.readFile('content.txt', function(err, data) {
        if (err) {
            console.error(err);
        } else {
            console.log(data);
        }
    });

    fs2.js

    var fs = require('fs');
    fs.readFile('content.txt', 'utf-8', function(err, data) {
        if (err) {
            console.error(err);
        } else {
            console.log(data);
        }
    });

    fs3.js

    var fs = require('fs');
    fs.open('content.txt', 'r', function(err, fd) {
        if (err) {
            console.error(err);
            return;
        }
        var buf = new Buffer(8);
        fs.read(fd, buf, 0, 8, null, function(err, bytesRead, buffer) {
            if (err) {
                console.error(err);
                return;
            }
            console.log('bytesRead: ' + bytesRead);
            console.log(buffer);
        });
    });

    更多参考资料

    http://nodejs.org/api/all.html

    https://cnodejs.org/getstart

  • 相关阅读:
    Linux服务器使用tar加密压缩文件
    ssh-copy-id使用非默认22端口
    Nginx日志分割脚本
    MySQL的yum源
    vSphere Client开启虚拟机提示:出现了常规系统错误: 由于目标计算机积极拒绝,无法连接。
    ESXi主机遗忘密码重置密码
    扩容swap交换分区空间
    ESXi上的固态硬盘识别为非SSD
    VMware Vcenter Server 6.0忘记密码
    Centos6与Centos7区别
  • 原文地址:https://www.cnblogs.com/feilv/p/4180572.html
Copyright © 2011-2022 走看看