一.开始使用Node.js编程
 
        1.hello world
 
        好了,让我们开始实现第一个 Node.js 程序吧。打开你常用的文本编辑器,在其中输入:  

       console.log('Hello World'); 
        将文件保存为 helloworld.js,打开终端,进入 helloworld.js 所在的目录,执行以下命令:  
       node helloworld.js 
        如果一切正常,你将会在终端中看到输出  Hello World。console  是 Node.js 提供的控制台对象,其中包含了向标准输出写 
入的操作,如 console.log、console.error 等。console.log 是我们最常用的输出 指令,它和 C 语言中的 printf 的功能类似,也可以接受任意多个参数,支持 %d、%s 变 量引用,例如:  
        //consolelog.js
console.log('%s: %d', 'Hello', 25)
        
        2.Node.js命令行工具
 
        输入  node --help 可以看到详细的帮助信息。
        其中显示了 node 的用法,运行 Node.js 程序的基本方法就是执行 node script.js, 其中 script.js是脚本的文件名。
        除了直接运行脚本文件外,node --help 显示的使用方法中说明了另一种输出 Hello World 的方式:  
        $ node -e "console.log('Hello World');"
Hello World
        我们可以把要执行的语句作为 node -e 的参数直接执行。 
        REPL (Read-eval-print loop),即输入—求值—输出循环。如果你用过 Python,就会知 道在终端下运行无参数的 python 命令或者使用 Python IDLE 打开的 shell,可以进入一个即 时求值的运行环境。Node.js 也有这样的功能,运行无参数的  node  将会启动一个 JavaScript  的交互式 shell。
        如果你执行了一个函数,那么 REPL 还会在下面显示这个函数的返回 值,上面例子中的 undefined 就是 console.log 的返回值。如果你输入了一个错误的 指令,REPL 则会立即显示错误并输出调用栈。在任何时候,连续按两次 Ctrl + C 即可推出  Node.js 的 REPL 模式。
        
        3.建立Http服务器
        
        Node.js 是为网络而诞生的平台,但又与 ASP、PHP 有很大的不同,究竟不同在哪里呢? 如果你有 PHP 开发经验,会知道在成功运行 PHP 之前先要配置一个功能强大而复杂的 HTTP  服务器,譬如 Apache、IIS 或 Nginx,还需要将 PHP 配置为HTTP 服务器的模块,或者使用  FastCGI 协议调用 PHP 解释器。这种架构是“浏览器  HTTP 服务器  PHP 解释器”的组织 方式,而Node.js采用了一种不同的组织方式,如图3-1 所示。
        我们看到,Node.js 将“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("<h1>Hello,world</h1>");
}).listen(3000);
console.log("Http Server is listening at port 3000");
        接下来运行 node app.js命令,打开浏览器访问 http://127.0.0.1:3000
        如果你有 PHP 开发经验,会习惯在修改 PHP 脚本后直接刷新浏览器以观察结果,而你 在开发 Node.js 实现的 HTTP 应用时会发现,无论你修改了代码的哪一部份,都必须终止  Node.js 再重新运行才会奏效。这是因为 Node.js 只有在第一次引用到某部份时才会去解析脚 本文件,以后都会直接访问内存,避免重复载入,而 PHP 则总是重新读取并解析脚本(如 果没有专门的优化配置)。Node.js的这种设计虽然有利于提高性能,却不利于开发调试,因 为我们在开发过程中总是希望修改后立即看到效果,而不是每次都要终止进程并重启。  supervisor 可以帮助你实现这个功能,它会监视你对代码的改动,并自动重启 Node.js。
        使用方法很简单,首先使用 npm 安装 supervisor: 
        $ npm install -g supervisor 
        如果你使用的是 Linux 或 Mac,直接键入上面的命令很可能会有权限错误。原因是 npm 需要把 supervisor 安装到系统目录,需要管理员授权,可以使用  sudo npm install -g  supervisor 命令来安装。 
        接下来,使用 supervisor 命令启动 app.js:
        $ supervisor app.js
         当代码被改动时,运行的脚本会被终止,然后重新启动。
        

Node.js学习笔记3(快速入门)的更多相关文章

  1. Node.js学习笔记(1):Node.js快速开始

    Node.js学习笔记(1):Node.js快速开始 Node.js的安装 下载 官方网址:https://nodejs.org/en/ 说明: 在Windows上安装时务必选择全部组件,包括勾选Ad ...

  2. 系列文章--Node.js学习笔记系列

    Node.js学习笔记系列总索引 Nodejs学习笔记(一)--- 简介及安装Node.js开发环境 Nodejs学习笔记(二)--- 事件模块 Nodejs学习笔记(三)--- 模块 Nodejs学 ...

  3. Node.js学习笔记(2):基本模块

    Node.js学习笔记(2):基本模块 模块 引入模块 为了编写可维护的代码,我们把很多函数分组,分别放到不同的文件里,这样,每个文件包含的代码就相对较少,很多编程语言都采用这种组织代码的方式.在No ...

  4. Node.js学习笔记(4):Yarn简明教程

    Node.js学习笔记(4):Yarn简明教程. 引入Yarn NPM是常用的包管理工具,现在我们引入是新一代的包管理工具Yarn.其具有快速.安全.可靠的特点. 安装方式 使用npm工具安装yarn ...

  5. 一点感悟:《Node.js学习笔记》star数突破1000+

    写作背景 笔者前年开始撰写的<Node.js学习笔记> github star 数突破了1000,算是个里程碑吧. 从第一次提交(2016.11.03)到现在,1年半过去了.突然有些感慨, ...

  6. Node.js学习笔记(3):NPM简明教程

    Node.js学习笔记(3):NPM简明教程 NPM常用操作 更新NPM版本 npm install npm -g -g,表示全局安装.我们可以指定更新版本,只需要在后面填上@版本号即可,也可以输入@ ...

  7. Node.js学习笔记(一):快速开始

    最近接了一个node项目,虽然最后顺利完成了,但是由于第一次实战,整个过程是赶出来的,许多地方一知半解.现在项目结束了,就静下心来系统地学一学,理一理,读书不忘拿笔,既然读书了,当然就要记点东西.一方 ...

  8. Node.js学习笔记(2) - Node.js安装及入门hello world

    今天来简单的记录一下Node.js的安装配置以及简单的入门 一.Node.js的安装 1.windows下的安装 windows下的安装很简单,只需要去官网http://nodejs.org中,找到w ...

  9. Node.js学习笔记(一)

    1.回调函数 node是一个异步事件驱动的平台,所以在代码中我们经常需要使用回调函数. 例: setTimeout(function(){ console.log('callback is calle ...

随机推荐

  1. easyui使用总结

    (一)datagrid 1.jquery的easyui中的datagrid刷新时的问题 在你的页面里增加2个class样式:           .datagrid-mask{ opacity:0; ...

  2. Kate Spade_百度百科

    Kate Spade_百度百科 Kate Spade

  3. start stack

    Start OpenStack Services After launching your stack by Devstack, you maybe stop some services or reb ...

  4. geometry(简单数学题)

    geometry  Accepts: 324  Submissions: 622  Time Limit: 2000/1000 MS (Java/Others)  Memory Limit: 6553 ...

  5. Tomcat从零开始(十)Loader

    第十课: 不知不觉就10篇blog了,说实话,我是第一次更这么长时间的Blog. 嗯,今天说说Loader,在以前的课程中,也就是内个能使用最初级的servlet的那一节,我们使用了URLClassL ...

  6. 跟我一起学extjs5(19--模块记录的拖放删除、拖放复制新增)

    跟我一起学extjs5(19--模块记录的拖放删除.拖放复制新增)         网页其中的拖放(drag-drop)是比較有趣的操作,extjs5中非常好的封装了拖放的动作,也有各种类来支持,可是 ...

  7. findbugs的ant脚本实践

    <?xml version="1.0" encoding="UTF-8"?> <project name="codeCheck&qu ...

  8. 如何得到Sessionid的值

    当用户向一个网站请求第一个页面时,用户会话启动.当第一个页面被请求时,web服务器将asp.net_sessionID  cookie添加进用户的浏览器.可以使用newsession属性探测新会话的启 ...

  9. SqlServer 2015修改表时出现“save changes is not permitted…”的解决方法

    使用SqlServer 2015的过程中,会出现如下情况: 在修改完表字段名或是类型后点击保存时会弹出一个对话框,且无法保存已做的修改.对话框内容大致如下: Saving changes is not ...

  10. 移动端开发(四):swiper.js

    swiper.js中文网:http://www.swiper.com.cn/ 文档结构 swiper.jquery.js    是需要引用jquery.js 或者 zepto.js 时,只需直接引用该 ...