一Node.js开始学习了!  
  1) 输出hellow worlds
   a.建一个js文件 hello.js 写 console.info('hellow world !!!');
   进入终端 cd node 目录 然后 node d:/nodejs/www/hello.js 回车
   b. node -e "console.info('hello word !!')"
   c.使用node的REPL模式
    node
     console.info('hello world ');
    CTRL+C退出repl模式
  2)简单的了解一下,node.js运行模式。
   Node.js 所有的异步 I/O  操作在完成时都会发送一个事件到事件队列。
   
   Node.js 在什么时候会进入事件循环呢?答案是 Node.js  程序由事件循环开始,到事件循
   环结束,所有的逻辑都是事件的回调函数,所以 Node.js  始终在事件循环中,程序入口就是
   事件循环第一个事件的回调函数。事件的回调函数在执行的过程中,可能会发出 I/O  请求或
   直接发射(emit )事件,执行完毕后再返回事件循环,事件循环会检查事件队列中有没有未
   处理的事件,直到程序结束。
  3)阻塞模式:
   什么是阻塞(block)呢?线程在执行中如果遇到磁盘读写或网络通信(统称为 I/O  操作),
   通常要耗费较长的时间,这时操作系统会剥夺这个线程的 CPU  控制权,使其暂停执行,同
   时将资源让给其他的工作线程,这种线程调度方式称为 阻塞。当  I/O  操作完毕时,操作系统
   将这个线程的阻塞状态解除,恢复其对CPU 的控制权,令其继续执行。这种 I/O  模式就是通
   常的同步式 I/O (Synchronous I/O )或阻塞式 I/O  (Blocking I/O)。 
  4)异步io/非阻塞io
   异步式 I/O  (Asynchronous I/O)或非阻塞式 I/O  (Non-blocking I/O)则针对
   所有 I/O  操作不采用阻塞的策略。当线程遇到 I/O  操作时,不会以阻塞的方式等待 I/O  操作
   的完成或数据的返回,而只是将 I/O 请求发送给操作系统,继续执行下一条语句。当操作
   系统完成 I/O  操作时,以事件的形式通知执行 I/O  操作的线程,线程会在特定时候处理这个
   事件。为了处理异步 I/O ,线程必须有 事件循环,不断地检查有没有未处理的事件,依次予
   以处理。
  5)模块与包的管理:
   Node.js 提供了 require 函数来调用其他模块,而且模块都是基于文件的,机制十分简单。
   Node.js 提供了 exports   和  require  两个对象,
   其中 exports 是模块公开的接口,require 用于从外部获取一个模块的接口,即所获取模块的  exports  对象。
  例1: 
   //module.js
 
   var  name;
   
   exports.setName =  function (thyName) {
     name = thyName;
   };
   
   exports.sayHello = function () {
     console.log('Hello ' + name);
   };
   在同一目录下创建 getmodule.js ,内容是:
   //getmodule.js
   var  myModule = require('./module');  
   myModule.setName('BYVoid');
   myModule.sayHello();
  例2:
   有时候我们只是想把一个对象封装到模块中,例如:
   //hello.js
 
   function  Hello() {
     var  name;
     
     this.setName =  function (thyName) {
    name = thyName;
     };
     
     this.sayHello = function () {
    console.log('Hello ' + name);
     };
   };
   
   module.exports = Hello;
   
   //gethello.js
   
   var  Hello = require('./hello');
   
   hello =  new  Hello();
   hello.setName('BYVoid');
   hello.sayHello();
   事实上,exports  本身仅仅是一个普通的空对象,即 {} ,它专门用来声明接口,本质上是通过它为模块闭包的内部建立了一个有限的访问接口。
   Node.js 的包是一个目录,其中包含一个 JSON  格式的包说明文件 package.json 。严格符
   合 CommonJS 规范的包应该具备以下特征:
     package.json 必须在包的顶层目录下; 
     二进制文件应该在 bin  目录下; 
     JavaScript 代码应该在 lib  目录下; 
     文档应该在 doc  目录下; 
     单元测试应该在 test  目录下。
  
  
  6) http请求:
   a.连接:
    var http = require('http');
    //创建服务
    /*
    * @param request  请求
    * @param response 响应
    */
    http.createServer(function(request,response){
    //head头
    response.writeHead(200,{'Content-Type':'text/html'});
    response.write('<h1>this is song xiuxuan </h1>');
    //结束
    response.end('<p>hellow world</p>');
    
    }).listen(8080);
    console.info('HTTP server is listening  at port 8080');
   b.由于开启了8080事件监听,node.js的进程是不会断开的,也就是说修改代码后不会立即看到结果.
    
    所以要安装一个supervisor热布署:
     D:\nodejs>npm install -g supervisor
     npm http GET https://registry.npmjs.org/supervisor
     npm http 200 https://registry.npmjs.org/supervisor
     npm http GET https://registry.npmjs.org/supervisor/-/supervisor-0.5.5.tgz
     npm http 200 https://registry.npmjs.org/supervisor/-/supervisor-0.5.5.tgz
     C:\Users\y400\AppData\Roaming\npm\node-supervisor -> C:\Users\y400\AppData\Roami
     ng\npm\node_modules\supervisor\lib\cli-wrapper.js
     C:\Users\y400\AppData\Roaming\npm\supervisor -> C:\Users\y400\AppData\Roaming\np
     m\node_modules\supervisor\lib\cli-wrapper.js
     supervisor@0.5.5 C:\Users\y400\AppData\Roaming\npm\node_modules\supervisor

开心菜鸟系列学习笔记--------初探Nodejs(了解篇)的更多相关文章

  1. 开心菜鸟系列学习笔记------javascript(5)

    一.this的关系    1)全局代码中的this    2)函数代码中的this在函数代码中使用this时很有趣,这种情况很难且会导致很多问题. 这种类型的代码中,this值的首要特点(或许是最主要 ...

  2. 开心菜鸟系列学习笔记-------javascript(3)

    一.原型链:     1)Object 是一个属性的集合,并且都拥有一个单独的原型对象.,这个原型对象object可以是一个object或者null值 2)不过一般来说,我们会使用__内部属性名__下 ...

  3. 开心菜鸟系列学习笔记------------javascript(6)

    一.作用域链            1)函数的生命周期:            函数的生命周期分为创建和激活阶段(调用时),让我们详细研究它.            作用域链与一个执行上下文相关,变量 ...

  4. 开心菜鸟系列学习笔记------javascript(4)

    一.全局上下文中的变量对象:        1)全局对象(Global object) 是在进入任何执行上下文之前就已经创建了的对象:这个对象只存在一份,它的属性在程序中任何地方都可以访问,全局对象的 ...

  5. 开心学习系列学习笔记-----nodejs缺点

    不支持故障恢复   不知你是否在调试的过程中注意,当程序有错误发生时,整个进程就会结束,需要重  新在终端中启动服务器.这一点在开发中无可厚非,但在产品环境下就是严重的问题  了,因为一旦用户访问时触 ...

  6. 开心菜鸟系列----函数作用域(javascript入门篇)

      1 <!DOCTYPE html>   2 <html>   3 <script src="./jquery-1.7.2.js"></ ...

  7. 开心菜鸟系列----变量的解读(javascript入门篇)

                       console.info(         console.info(window['weiwu'])          console.info(window. ...

  8. 进阶之初探nodeJS

    一.前言 在"初探nodeJS"随笔中,我们对于node有了一个大致地了解,并在最后也通过一个示例,了解了如何快速地开启一个简单的服务器. 今儿,再次看了该篇随笔,发现该随笔理论知 ...

  9. MVA Universal Windows Apps系列学习笔记1

    昨天晚上看了微软的Build 2015大会第一天第一场演讲,时间还挺长,足足3个小时,不过也挺震撼的.里面提到了windows 10.Microsoft edge浏览器.Azure云平台.Office ...

随机推荐

  1. PYTHON线程知识再研习G--线程间通信Event

    很多时候,线程之间会有互相通信的需要.常见的情形是次要线程为主要线程执行特定的任务,在执行过程中需要不断报告执行的进度情况.前面的条件变量同步已经涉及到了线程间的通信(threading.Condit ...

  2. C#中使用SendMessage在进程间传递数据的实例

    原文:C#中使用SendMessage在进程间传递数据的实例 1 新建解决方案SendMessageExample 在解决方案下面新建三个项目:CopyDataStruct,Receiver和Send ...

  3. How to run Tomcat without root privileges? 常规用户使用tomcat的80端口

    How to run Tomcat without root privileges? 1. The best way is to use jsvc, available as part of the  ...

  4. 为什么新建的管理员账号权限没有Administrator大?

    Administrator是超级管理员,UAC不用确认,跟关了一样. 新建隶属于administrator组的用户,可以关掉UAC. 控制面板>系统和安全>操作中心>更改用户帐户控制 ...

  5. 支持多文件上传,预览,拖拽,基于bootstra的上传插件fileinput 的ajax异步上传

    首先需要导入一些js和css文件 <link href="__PUBLIC__/CSS/bootstrap.css" rel="stylesheet"&g ...

  6. Laravel-高级篇-Auth-数据迁移-数据填充

    (慕课网_轻松学会Laravel-高级篇_天秤vs永恒老师_http://www.imooc.com/learn/702) 一.生成Auth所需文件 在Artisan控制台输入以下命令 php art ...

  7. CF Zepto Code Rush 2014 B. Om Nom and Spiders

    Om Nom and Spiders time limit per test 3 seconds memory limit per test 256 megabytes input standard ...

  8. hdu 3056 病毒侵袭持续中 AC自己主动机

    http://acm.hdu.edu.cn/showproblem.php?pid=3065 刘汝佳的模板真的非常好用,这道题直接过 学到: cnt数组记录单词出现次数 以及map存储单词编号与字符串 ...

  9. JavaScript 滚动页面到指定元素位置

    页面评论功能,当评论较多时,有时须要滚动到评论头部. 能够使用scrollTop方法,加上一点延时动画(animate),可訪问在线演示,代码大体例如以下: <html> <scri ...

  10. SDK命令行操作

    * 使用前需要先在path中添加Android SDK的环境变量,跟Java JDK的配置相同 我当前目录如下:F:\Program\Android SDK\tools:F:\Program\Andr ...