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 作为一门新兴的语言。其特有的异步机制将优化我们的页面的加载速度和接口服务。预知后事如何,且听下回分解。

 

 

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。