首页 > Web开发 > 详细

nodeJs入门笔记(一)

时间:2015-10-25 00:52:15      阅读:384      评论:0      收藏:0      [点我收藏+]

node将"HTTP服务器"这一层抽离,直接面向浏览器用户

如PHP运行之前先要配置一个功能强大而复杂的HTTP 服务器,譬如Apache、IIS 或Nginx,还需要将PHP 配置为HTTP 服务器的模块,或者使用FastCGI 协议调用PHP 解释器。这种架构是“浏览器 — HTTP 服务器 —  PHP 解释器”的组织方式

node最大的特点是异步I/O,  众所周知也就是单线程 ,相对于例PHP多线程来说, 不会阻塞,例如 当线程遇到I/O操作时候,不会等待I/O操作完成或数据返回,而只是将I/O请求发送给操作系统,而在继续执行下一句.反之同理,多线程就是阻塞,阻塞了咋办?就多开一条线程执行 坏处?(请自行百度) 下面这两张图更加的清晰理解

多线程:

技术分享

 

单线程

技术分享

下面上今晚学到的东西

var http = require("http"); //创建http模块

http.createServer(function(req,res){
    res.writeHead(200,{Content-Type : text/html});
    res.write("<h1>hellow Node.js</h1>");
    res.end("<p>node</P>");
}).listen(3000);//创建端口
console.log("运行成功")

入门写烂的语句 也就是创建node的核心模块http

创建模版 node提供了exports和require两个对象.

exports是模块的公开借口 require是获取模块的接口 用法很简单

//module.js
var name;
exports.tagname = function(a){
    name = a;
}
exports.tagtable = function(){
    console.log("I am "+name)
}
//getmodule
var get = require("./module");

get.tagname("LEE"); 
get.tagtable();

正如所示 输出的是LEE

不过这都是单向加载的 例如

var get = require("./module");

get.tagname("LEE");

var get = require("./module");

get.tagname("LEE2");

get.tagtable();

输出的是LEE2 因为都是指向同一个变了 第二个的覆盖了第一个 所以是LEE2

 

有时候把代码写好一点就是这样

function Hello(){
    var name; 
    this.setName = function(thyName) { 
        name = thyName; 
    }; 

    this.sayHello = function() { 
        console.log(Hello  + name); 
    }; 
}; 
module.exports = Hello; 
var Hello = require(./hello)
hello = new Hello();
hello.setName(Lee); 
hello.sayHello(); 

输出的"Lee" ;

把今晚学的东西总结下,自己也更加清晰了解了模块

 

继续成长中....

  

  

 

nodeJs入门笔记(一)

原文:http://www.cnblogs.com/lee-iekiller/p/4908036.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!