Node.js开发札记之一·入门篇

前言:

Node.js这个名字并不陌生。刚开始时,以为又是某个团体搞的JS类库。作为jQuery忠实追随者,当时还是比较关注这个异端的出现。后来发现,其实是服务器端的JS。用了J2EE那么多年了,没有心思再去搞这一套。还不如深入写下J2EE的架构什么的。而技术的革新的风暴还是席卷了整个IT界。鄙人再次了开启学习天赋。

环境搭建:

软件下载:

1. Node.js安装包

下载地址(详见官方博客:http://blog.nodejs.org 更新):

http://nodejs.org/dist/v0.11.15/node-v0.11.15-x86.msi(32位)

http://nodejs.org/dist/v0.11.15/x64/node-v0.11.15-x64.msi(64位)

软件安装:

1.     一路回车法安装

记住你的安装路径。鄙人的路径是D:\Program Files\nodejs(对于安 装路径不同的话,接下来涉及到的路径请自行脑补)

安装完毕后,和绝大多数的开源产品一样你得配置环境变量。

2.     设置环境变量

查看“系统变量”,应该有 "D:\ProgramFiles\nodejs;"。

查看“用户变量”,有“C:\Users\pc\AppData\Roaming\npm”。

没有的话自行加上。

3.     运行node.js

打开“所有程序”,打开“Node.js command prompt”。

Win8 环境的话 "Win+ R" 打开命令运行窗口。贴入下面命令也是一样的。

C:\Windows\System32\cmd.exe/k "D:\Program Files\nodejs\nodevars.bat"

最好写个bat文件放桌面免得麻烦。打开之后应该能看到一个黑屏如下:

他会告诉你,你的Node.js和Npm(Node Package Manager)工具已经安装好了。接下来Npm就是主角了。这东西相当于Java界中的Maven之类的角色,也就是包管理。有用过Maven的同学会觉得很亲切。弊端就是依赖网络。下小节会细讲这块。

环境弄好了就赶紧写个Hello World 来庆祝一下吧。

var http =require("http");
http.createServer(function(request,response) {
       response.writeHead(200, {
              "Content-Type":"text/plain"
       });
       response.write("Hello World");
       response.end();
}).listen(3000);
console.log('Serverrunning at http://127.0.0.1:3000');

控制台显示:

访问一下就能看到Hello World 了。

4.     Npm 使用

Npm,node包管理器。顾名思义就是帮我们下载类库的。在正式开讲之前先检查下各自的网络配置。鄙人长时间呆在内网环境。对于有网络依赖的项目第一时间想到的是设置代理。还有就是坑爹的GFW。下面两句配好npm的代理。

npm config set proxy=http://127.0.0.1:8087
npm config set registry=http://registry.npmjs.org

接下来安装一个开发方面比较重要的包—supervisor。

安装命令:npm install supervisor -g

出现上面信息且没有其他报错的话("304"状态码是因为我已经装过了)。supervisor就算装好了。npminstall [包名称] 这个命令是npm中最常用的命令。默认是安装在当前路径,加上-g参数表示安装到全局。

安装到当前路径,包会下载到node_modules文件夹里。

安装到全局会放公用路径,如鄙人的:C:\Users\pc\AppData\Roaming\npm\node_modules

全局包供所有项目都能使用,一般不做修改。如果对某个包有修改需求的话就不要放在全局域上了。还有一个插件式特性。如果不想通过网络下载的话,可以通过直接拷到node_modules目录下就行了。

话分两头,包管理这块先讲这么多。回头看看supervisor,为什么那么重要呢?接着往下看,supervisor相当node.js中的热部署插件。不装这个插件的话,每次修改都需要重启项目。supervisor其实就是个监控程序,每当你改了文件他就帮忙自动重启。

还是用我们刚刚写过的hello_world.js。把欢迎辞封装到函数里。

var http = require("http");
http.createServer(function(request, response) {
       response.writeHead(200,{
              "Content-Type":"text/plain"
       });
       response.write(doSomething());
       response.end();
}).listen(3000);
console.log('Server running at http://127.0.0.1:3000');

function doSomething(){
       return 'hello world!';
}
 

然后执行supervisor hello_world.js。如下图所示,控制台告诉我他已经在监控我的项目了。

然后我把欢迎辞改改。

function doSomething(){
       return 'Hi! Jack!';
}

再看看控制台和浏览器。果然帮我们重启了。这才是程序界的雷锋同志啊!

5.     调试工具

工欲善其事必先利其器。程序员最大厉害的技能就是抓Bug了。调试工具继热部署后成为鄙人第二个关注点。网上的教程很多,鄙人较为倾向于node-inspector调试工具。JavaScript本来就是一家,怎么忍心使用两种调试方式呢?Chrome V8 为我们提供了平台。

安装命令:npm install node-inspector -g

下载的东西有点多做好网速准备。这个包约为14.2 MB。不再赘述。

装好后调试我们的hello_world.js。执行node --debug hello_world.js

然后再另开一个命令行窗口,执行node-inspector

会提示我们去访问:http://127.0.0.1:8080/debug?port=5858

用chrome打开 http://127.0.0.1:8080/debug?port=5858

会发现一个熟悉的界面。样子和功能跟前端JS调试基本一致。

可能是因为使用的版本太高调试器只是部分功能兼容。

当前node-inspector的版本为:Node Inspector v0.8.3

6.     官方推荐框架

千呼万唤始出来,node.js唯一推荐官方框架express。此框架一出让我们轻松告别hello world 时代,一秒变得高大上。

安装命令:npm install express -g

npm install express-generator -g

安装好后,进入workspace新建一个名为node.express的项目。

执行:express node.express

生成express项目基本文件

进入node.express路径,执行:npm install

解决包依赖。express项目就基本搭好了。是不是觉得幸福来得太突然还没准备好呢?不得不说官方推荐的框架还是有花心思去做的。

执行:npm start

启动项目。

查看目录下的package.json 文件。可以看到express的入口为./bin/www文件。npm start 等同于 node ./bin/www。

{
  "name": "node.express",
  "version": "0.0.0",
  "private": true,
  "scripts": {
    "start": "node./bin/www"
  },
  "dependencies": {
    "body-parser": "~1.10.1",
    "cookie-parser":"~1.3.3",
    "debug": "~2.1.1",
    "express": "~4.11.0",
    "jade": "~1.9.0",
    "morgan": "~1.5.1",
    "serve-favicon":"~2.2.0"
  }
}

知道这个可以方便我们进行热部署。执行:supervisor ./bin/www

总结:

万分感谢能看到这里的童鞋。上面的内容基本涵盖了Node.js的入门内容。Node.js 作为一门新兴的语言。其特有的异步机制将优化我们的页面的加载速度和接口服务。预知后事如何,且听下回分解。

时间: 2024-12-20 23:45:40

Node.js开发札记之一·入门篇的相关文章

Node.js开发札记之二·页面篇

前言: 原本纠结于Web 模板,选了Handlebars.后来发现页面都是弱逻辑的,不支持复杂逻辑表达式.几乎要放弃之际,想起了Javascript中eval函数.虽然eval函数很强大,强大到可以"凭空"生成对象或执行代码,但总觉得他破坏了代码的优雅性.加之"eval"和"evil"(邪恶)长得挺像的.Eval函数的印象不太好,大多数时候将其当做"禁手".这时候反正也没有什么好办法了.通过Handlebars自定义函数使用e

Node.js开发入门—使用对话框ngDialog

做网站经常会遇到弹出对话框获取用户输入或弹出对话框让用户确认某个操作之类的情景,有一个基于AngularJS的扩展模块可以帮我们优雅地完成这类事情:ngDialog. ngDialog在github上提供了一个示例网页,演示了它的各种用法,在这里:https://github.com/likeastore/ngDialog/blob/master/example/index.html.ngDialog的github主页的readme也对常用的指令和服务做了较为详细的介绍,可以参考.我这篇就纯粹是

Node.js开发入门—notepad++ for Node.js

对于Node.js开发,论IDE的话,Webstorm是不二的选择,但它是收费的(可免费使用30天).一开始,我们先将就一下,使用notepad++来编写Node.js应用.这样做还有一大好处:没有关于Node.js的代码高亮和自动补全,可以更好地敦促我们使用在线API文档记忆各种类库API.死磕自己吧,enjoy it. notepad++的安装与配置 到"https://notepad-plus-plus.org/download/v6.8.2.html"这里下载吧,6.8.2版本

Node.js开发入门—使用AngularJS内置服务

在上一篇,"AngularJS简单示例"中演示了一个非常简单的使用Angular的小demo,那篇已经太长,原本要介绍的一些内容只好单另开篇了.这些内容,就是如何使用Angular服务. 我们还是基于"AngularJS简单示例"中的示例来改造一下.新的示例,能从Node.js+Express构造的服务器上获取管理菜单.为了实现这个,需要做几部分改造: 服务器提供adminMenu的下载功能,需要修改app.js,处理路由 修改Angular实现的控制器x-cont

Node.js开发入门—使用jade模板引擎

在"Node.js开发入门--Express安装与使用"里,我们曾经使用express generator创建了一个HelloExpress网站,express工具为我们生成了基本的目录结构.模板.stylesheet.routers等.虽然那只是一个简单的HelloWorld类的小东西,可里面包含的内容还是有些多了,为了更好的理解Express所支持的jade模板引擎的用法,我们这次提供一个手动创建的小网站,可以显示来访者的IP,并对访问进行计数. 安装jade npm instal

Node.js开发入门—引入UIBootstrap

很多Web管理系统的侧边菜单是可折叠的(手风琴样式),我们在前面两篇文章里的HTML模板,自己用div.css做了一些处理,可效果不好.所以我请来了一个前端UI框架,UI Bootstrap,来帮忙.别看它名字里带一个Bootstrap,但它并不依赖Bootstrap,而是用AngularJS实现的原生指令哦.我讨厌太多的依赖,这个我喜欢. 这篇我们以"Angular简单示例"里的AngularDemo为基础,我说到的目录什么的,都遵循express应用的默认目录结构. UI Boot

Node.js开发入门—语音合成示例

出于项目需要,搞了一个语音合成(TTS)的小示例,使用的是OKVoice. 我想在PC上测试,OKVoice的快速接入API可以实现我的目的,文档在这里:http://dev.okvoice.com/file.php. 直接上代码吧,okVoiceTts.js,内容如下: var http = require('http'); var fs =require('fs'); var crypto = require('crypto'); var util = require('util'); va

Node.js开发入门—Stream用法详解

Stream是Node.js中非常重要的一个模块,应用广泛.一个流是一个具备了可读.可写或既可读又可写能力的接口,通过这些接口,我们可以和磁盘文件.套接字.HTTP请求来交互,实现数据从一个地方流动到另一个地方的功能. 所有的流都实现了EventEmitter的接口,具备事件能力,通过发射事件来反馈流的状态.比如有错误发生时会发射"error"事件,有数据可被读取时发射"data"事件.这样我们就可以注册监听器来处理某个事件,达到我们的目的. Node.js定义了R

Node.js开发入门—Angular简单示例

在"使用AngularJS"中,我们提到了如何在Node.js项目中引入AngularJS,这次提供一个非常简单的示例,演示AngularJS里的指令.数据绑定.服务等内容. 我准备做Web后台管理系统,不同的管理员会有不同的权限,管理员登录后看到的菜单和他的权限有关,能看到什么,是动态生成的(类似RBAC).本文的示例从这个项目而来,当然,现在还是最简单的. 如果没有特别说明,后面我们用到的示例都使用express generator生成. Angular小demo 先搞起来吧. 第