• node.js


    1.下载:VirtualBox,装好ubuntu
    2.安装:(在终端一步步运行以下命令)
    sudo apt-get install g++ curl libssl-dev apache2-utils   
    sudo apt-get install git-core   
    git clone git://github.com/joyent/node.git     
    cd node  
    ./configure  
    make     
    sudo make install
    3.helloworld
    方法1:新建一件文件 helloworld.js,输入console.log('hello world'),打开终端(ctrl+alt+t),进入helloworld.js所在目录,执行一下命名 helloworld.js,如果执行成功你会看到终端输出 hello world.
    方法2:node -e "console.log('hello world')",可以把要执行的语句作为 node -e 的参数直接执行
    4.REPL模式
    运行无参的node将会进入REPL模式,会出现一个“>”,如果你执行函数,将会放回函数的返回值,如果你输入错误的指令,会提示错误打印堆栈,连续二次ctlr+c退出REPL模式.
    5.建立http服务器
    创建app.js文件,输入
      var http = require('http');
      http.createServer(function (req, res) {
        res.writeHead(200, {'Content-Type': 'text/plain'});
       res.end('Hello World ');
      }).listen(1337, "127.0.0.1");
      console.log('Server running at http://127.0.0.1:1337/');
    运行app.js
    打开浏览器访问:http://127.0.0.1:1337/
    你会看到hello world.
    代码逻辑:
    a. 全局方法require()是用来导入模块的,一般直接把 require() 方法的返回值赋值给一个变量,在 JavaScript 代码中直接使用此变量即可 。require("http") 就是加载系统预置的 http 模块
    b. http.createServer 是模块的方法,目的就是创建并返回一个新的web server对象,并且给服务绑定一个回调,用以处理请求。
    c. 通过 http.listen() 方法就可以让该 HTTP 服务器在特定端口监听。
    d. console.log就不用多说了,了解firebug的都应该知道,Node实现了这个方法。
    6.安装调试插件
    现在的node每次修改要重启才会生效,安装个插件会自动重启.
    除Node本身提供的API外,现在有不少第三方模块可极大的提高开发效率,npm就是Node的软件包管理器,可以用它安装所需软件包并发布自己为nodejs写的软件包。官网地址:npmjs.org
    安装只需要在终端写入一行代码:    
    curl http://npmjs.org/install.sh | sh  npm安装node扩展包同样是一行代码:  
    npm install <包名>    //例:sudo npm install -g supervisor (npm install express)  
    注:如果安装模块的过程中报域名错误的话,请清空缓存 >npm cache clean 或重启计算机即可。
    7.读取一个文件
      var fs = require('fs');
      fs.readFile('helloworld.js','tuf-8',function (err, data)) {
        if (err) throw err;
        console.log('successfully');
      console.log(data);
      });
      console.log('async');
    所谓的异步,大家应该都能想得到运行时会先打先显示"async",再显示"successfully".
    可以把回调函数拿出来,运行结果是一样的
     function readFileCallBack(err,data)
     {
       if (err)
      {
        console.error(err)
       throw err;
      }
      else
      {
        console.log('successfully');
       console.log(data); 
      }
     }
      var fs = require('fs');
      fs.readFile('helloworld.js','tuf-8',readFileCallBack);
     console.log('async');

    同步读取一个文件
      var fs = require('fs');
      data = fs.readFileSync('helloworld.js','tuf-8');
      console.log('successfully');
     console.log(data);

    8.理解Node的模块概念
    在Node中,不同的功能组件被划分成不同的模块。应用可以根据自己的需要来选择使用合适的模块。每个模块都会暴露一些公共的方法或属性。模块的使用者直接使用这些方法或属性即可,对于内部的实现细节就可以不用了解。除了Node本身提供的API外,开发人员也可以利用这个机制来将应用拆分成多个模块,以提高代码的可复用性。
    1.如何使用模块?
    在Node中使用模块是非常方便的,在 JavaScript 代码中可以直接使用全局函数 require() 来加载一个模块。
    在刚刚”Hello World"的例子中,require("http") 可以加载系统预置的 http 模块;模块名称以 "./" 开始的,如 require("./myModule.js") 用来加载与当前 JavaScript 文件同一目录下的 myModule.js 模块。
    2.自己如何开发模块?
    刚刚介绍使用require()导入模块的时候,模块名称以 "./" 开始的这种,就是自己开发的模块文件。需要注意的就是JS文件的系统路径。
    代码中封装了模块的内部处理逻辑,一个模块一般都会暴露一些公开的方法或属性给其他的人使用。模块的内部代码需要把这些方法或属性给暴露出来。
    3.来一套简单的例子。先创建一个模块文件如myModule.js,就一行代码
    console.log('Hi Darren.')  然后创建一个test.js文件,导入这个JS文件,
    来一个深点的例子,myModule.js,代码如下:
    ------------------------------------
    var name = "Darren";  
    this.location = "Beijing";  
    this.showLog = function()
    {     
     console.log('Hi Darren.')  
    };
    -----------------------------------
    test.js 代码
    -------------------------------------
    var myMymoudle = require("./myModule.js");
    myMymoudle.showLog();
    console.log(myMymoudle.name);
    console.log(myMymoudle.location);
    -------------------------------------
    结果高亮的地方很清楚的告诉我们,私有方法我们在模块以外是取不到的,所以是undefined。共有属性和共有方法的声明需要在前面加上 this 关键字。

    Node事件
    EventEmitter 类中的方法都与事件的产生和处理相关:
    1. addListener(event, listener) 和 on(event, listener) 这两个方法都是将一个监听器添加到指定事件的监听器数组的末尾
    2. once(event, listener) 这个方法为事件为添加一次性的监听器。该监听器在事件第一次触发时执行,过后将被移除
    3. removeListener(event, listener) 该方法用来将监听器从指定事件的监听器数组中移除出去
    4. emit(event, [arg1], [arg2], [...]) 刚刚提到过了。

    var events = require("events");
    var emitter = new events.EventEmitter();
    emitter.on("myEvent", function(msg) 
    {
    console.log(msg);
    });
    setTimeout(function()
    {
    	emitter.emit("myEvent", "Hello World."); 
    },1000) 

    简单的分析这段:(一秒后向控制台输出hello world)
    1. 使用require()方法添加了events模块并把返回值赋给了一个变量
    2. new events.EventEmitter()这句创建了一个事件触发器,也就是所谓的事件模块中的 EventEmitter 类的实例
    3. on(event, listener)用来为某个事件 event 添加事件处理方法监听器
    4. emit(event, [arg1], [arg2], [...]) 方法用来产生事件。以提供的参数作为监听器函数的参数,顺序执行监听器列表中的每个监听器函数。


    参考连接:
    node.js 初体验
    http://www.cnblogs.com/Darren_code/archive/2011/10/31/2207063.html
    新手如何快速入门node.js
    http://www.9958.pw/post/nodejs_lesson
    入门教程:
    http://www.w3school.com.cn/js/
    进阶
    https://developer.mozilla.org/zh-CN/
    https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide
    代码下载
    http://www.byvoid.com/project/node
    api文档
    http://nodejs.org/api/
    论坛
    http://cnodejs.org/
    安装包下载
    http://nodejs.org/download/

  • 相关阅读:
    C# webBrowser禁止在新窗口打开,强制在本窗口打开
    C# StatusStrip状态栏 例程
    iphone实现弹出框视图
    在iOS开发中使用FMDB
    XCode 4.2 新功能 Storyboard
    FMDB一个sqlite的封装
    Xcode 4的新特性
    sqlite加密SQLCipher
    跨iPhone应用程序的方便,模块化的代码共享:静态库和跨项目的引用
    Navicat for SQLite For Ma OS X
  • 原文地址:https://www.cnblogs.com/byfei/p/6389816.html
Copyright © 2020-2023  润新知