一.开始使用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. java核心技术学习笔记之一程序设计概述

    Java 核心技术之一程序设计概述 一.   Java语言的特点 简单行 :取经于C++,排除了C++不常用的指针.结构等,增加垃圾回收. 面向对象:与C++不同是单继承,但是可以继承多接口.完全面向 ...

  2. HDU 5773 The All-purpose Zero(树状数组)

    [题目链接] http://acm.hdu.edu.cn/showproblem.php?pid=5773 [题目大意] 给出一个非负整数序列,其中的0可以替换成任意整数,问替换后的最长严格上升序列长 ...

  3. STC15?MSP430?ARM?DSP?

    自从大学毕业以来,发现属于自己的时间越来越少,每天忙于工作,导致在大学学到的东西都好生疏,特别是大一刚开始学的模电,单片机等,现在才慢慢的抓起来,然后在这个多核处理器流行的时代,单片机貌似快过时了,但 ...

  4. IronJs 无相关源?

    在工作中用到了IronJs  一切正常 就是 在启动项目的时候 报错说无相关源,将取消引用之后 就可以正常运行 如果不取消引用需要重新启动~ 是这个样子滴~ 说明: 在编译向该请求提供服务所需资源的过 ...

  5. WIN7下OC开发环境的搭建

    折腾了一天,才搭建好OC的开发环境,用于OC学习.其中折腾劲儿我也是醉了.感谢我的破联想Ideapad Y470 坚持到了最后,感谢我的固态,感谢CCAV. 用到的工具及下载地址: 1.MAC10.1 ...

  6. 腾讯云部署Flask应用

    由于新浪云现在不免费了.而且云豆也用完了.所以去腾讯云申请了个学生云主机,一元一个月. 不过部署开发环境还是有点麻烦的,搞了好几天,终于部署成功了! 下面说部署过程: 我云主机用的是 Ubuntu 1 ...

  7. 手机测试Android程序

    手机测试Android程序   上传者:sanpi329     我也要“分享赚钱” 2014/7/9 关注(23) 评论(0)   声明:此内容仅代表网友个人经验或观点,不代表本网站立场和观点.   ...

  8. python初探-copy

    python中,数据的拷贝有以下三种形式:赋值.浅copy和深copy.根据类型的不同,可以把数据分成以下两类:字符串和数字为一类,其他(包括列表.元祖.字典...)为一类. 在python中有池的概 ...

  9. 使用 dotnet watch 开发 ASP.NET Core 应用程序

    使用 dotnet watch 开发 ASP.NET Core 应用程序 原文:Developing ASP.NET Core applications using dotnet watch作者:Vi ...

  10. PCB的整个加工流程

    1 MI:制作生产流程卡,指导产线如何去生产出所需要的pcb.2 内层:PCB,除了最便宜的单层板,简单的双层板,有时候需要使用4层 6层 8层,以实现复杂的连 接关系和高密度,再就是减少干扰或者降低 ...