一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高级编程之我不测试

    # -*- coding: utf-8 -*-__author__ = 'Administrator'#测试驱动开发(高级编程处学习,第11章)#测试驱动开发也叫TDD, 是制造高质量软件的一种简单技 ...

  2. Android开发常用工具汇总

    Android开发常用工具汇总,本文章不断更新完善 一.数据库小工具Sqlite Developer  SQLite,是一款轻型的数据库,是遵守ACID的关系型数据库管理系统,它的设计目标是嵌入式的, ...

  3. ZigBee心电传输(一)

    第一次接触模拟的东西哈,也算是一次新的学习旅程以及对ZigBee的再一次探索吧. 首先是方案制定,以及采用芯片AD8232,这样节省了不少时间,把模拟的东西都搬到数字上了,不过还是需要学习不少模电知识 ...

  4. 关于C语言中的inline

    在c中,为了解决一些频繁调用的小函数大量消耗栈空间或是叫栈内存的问题,特别的引入了inline修饰符,表示为内联函数.栈空间就是指放置程式的局部数据也就是函数内数据的内存空间,在系统下,栈空间是有限的 ...

  5. React数据传递

    React基础概念 React是基于组件化的开发,通过组件的组合,让web应用能够实现桌面应用的效果. React更有利于单页应用的开发. 并非MVC框架,只能算是V 具有单项数据流的特点 优势:代码 ...

  6. 黑马程序员——String类

    ------<a href="http://www.itheima.com" target="blank">Java培训.Android培训.iOS ...

  7. (转) .NET实现Repeater控件+AspNetPager控件分页

    SqlConnection (.NET C#) 连接及分页 .net的访问数据机制决定了访问大量数据时会致使客户端机器消耗大量资源,因此有必要对数据进行分页显示,开发工具vs.net+sqlserve ...

  8. c#类初始化器

    其实类型初始化器只是一种语法糖这样写MyClass a=new MyClass{ filedOne="a" ,filedTwo="b" };会被编译器编译成和如 ...

  9. 事件监听:诀别Android繁琐的事件注册机制——view.setOnXXXXListener

    本版本为1.0,支持较少,使用不够方便.相关封装逻辑结构已升级至2.0,详情可参见:更完善的安卓事件监听实现 先简单扯两句这几天学习下来对java事件监听机制的一点感触.客观地讲,java的事件监听机 ...

  10. Spring中的WebDataBinder浅析

    Spring可以自动封装Bean,也就是说可以前台通过SpringMVC传递过来的属性值会自动对应到对象中的属性并封装成javaBean,但是只能是基本数据类型(int,String等).如果传递过来 ...