node.js-1

来源:互联网 发布:四叠半神话大系 知乎 编辑:程序博客网 时间:2024/06/04 20:01

在linux下新建一个文件 如hello.js

用vi打开文件(编辑器随便)

在在文件中输入console.log('hello node.js');

完成后保存

在用node编译源文件,你将在控制台得到   hello  node.js

这就是第一个node程序

显然大家都可以知道console必定包含了想标准输出写入的操作。

例如刚刚用的console.log,它是我们最常用的输出指令类似于c中的printf 、c++中的cout以及java中的System.out.println等

当然node也可以接受任意多个参数,支持%d、%s变量引用。

例如:

//新建一个consolelog.js

在文件中像c一样把printf改成console.log

    console.log('%s : %d‘,’Age‘,25);

你就可以在控制台得到    Age : 25   (ps:是不是感觉和C一样用?)

-----------------------------------------------

node.js命令行工具

用node --help可以查看

前面提到过用node console.js直接晕洗脚本文件,还用一种输出hello node.js的方式 如:

$ node -e "console.log('hello node.js");"可以得到和上面一样运行node node.js的结果

我们可以把要执行的语句作为node -e的参数直接执行


使用node的RERL(read-eval-print loop即输入-求值-输出循环)模式

在终端输入node就会进入REPL模式

可以看到提示符变成了>。进入后就输入命令,按回车结束。node.js会解析并执行命令。

如果在REPL中执行一个函数,会显示这个函数的返回值,如果没有返回值的华会显示.当然如果你输入了错误的指令,REPL会立即显示错误输出调用栈。在任何时候连续两次ctrl+c会直接退出node.js的REPL模式


建立HTTP服务器

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

创建HTTP服务器实例:

//app.js

   var http=require('http');

  http.createServer(function(req,res){

       res.writeHead(200,{'Content-Type':text/html'});

       res.write('<h1>node.js</h1>');

      res.end('<p>hello node.js</p>');

     }).listen(3000);

    console.log("HTTP Server is listening at port 3000.");

保存后大功告成

在终端输入node app.js

打开浏览器输入http://127.0.0.1:3000你将得到你第一个http服务器(ps:我这出现了问题,开启后访问一直连接不上,只用我在终端关闭的时候,页面才出来,刷新后又连接不上了。无伤大局,继续--come on)


介绍一个用于调试node.js的工具  supervisor,无重启刷新,解决开发中的调试问题


回调函数

实例:

//readfile.js

var fs=require('fs');

fs.readFile('file.txt','utf-8',function(err,data){

       if(err){

           console.error(err);

      }

     else{

           console.log(data);

      }

});

console.log('end.');

这里使用的是异步的方式,这种方式不容易被理解,从输出的结果就可以看出,终端先输出的是end.然后才输出的文件内容。这就是异步。

当然,我们也可以采取同步的方式

//readfileync.js

var fs=require('fs');

fs.readFileSync('file.txt','utf-8');

           console.log(data);

           console.log('end.');

这样的话输出的就先是文档的内容再输出end。相比较可以看出,定义回调函数在其中起了很大的作用。
从readFile的参数中我们可以看出,第一个参数是文件名,第二个是编码,第三个便是回调函数,当然此处的回调函数是一个匿名的函数,我们完全可以申明一个方法,将它作为readFile的第三个参数;

实例如:

//readfilecallback.js

function readFileCallBack(err,data)

{

       if(err){

           console.error(err);

          }

        else{

            console.log(data);

           }

}

var fs=requier('fs');

 fs.readFile('file.txt','utf-8',readFileCallBack);

console.log('end.');

fs.readFile所做的工作是将异步的I/O请求发送给了操作系统,然后立即返回并执行后面的语句,执行玩以后进入时间循环监听时间。当fs收到I/O请求完成的事件时。时间循环会主动调用回调函数以完成后续工作。

//node.js中,并不是所有的API都支持提供了同步和异步版本。node.js不鼓励使用同步I/O.






















原创粉丝点击