Node.js快速开始

2013-01-12 阅读:

Windows下安装Node.js

  • Node.js官网下载Windows Binary node.exe
  • npm下载页面下载node包管理器npm-xxx.zip
  • 在期望安装的位置创建一个名称为Node的目录
  • 将下载的node.exe拷贝到Node目录中
  • 将下载的npm-xxx.zip解压缩到Node目录中
  • 新建环境变量NODE_HOME = Node目录
  • 新建环境变量NODE_PATH = %NODE_HOME%
  • NODE_HOME追加到系统的PATH环境变量中

安装完成的目录结构如下:

|--Node
   --node_modules
   --node.exe
   --npm.cmd

验证安装,打开一个新的命令行,输入npm ls -g会打印出node包信息

关于npm

npm是Node.js的包管理器。Node.js中的模块是指可以重用的代码库。

安装模块

本地安装(下载安装到当前目录)

npm install [module_name]

全局安装(下载安装到全局目录)

npm install [module_name] -g

搜索模块

npmjs网站上搜索模块

在package.json中指定依赖的模块

{
	"name": "prjname",
	"version": "1.0.0",
	"dependencies": {
		"express": "1.x.x"
	}
}

npm install将安装package.json中指定的依赖。

Url模块

var url = require('url');
var site = 'https://plus.google.com/u/0/';
var urlObj = url.parse(site);
console.log(urlObj.pathname);
console.log(urlObj.port);
console.log(urlObj.protocol);

Http模块

使用Node.js可以很容易的创建出Http服务端和客户端。

Http Server

//http-server.js
var http = require('http');
http.createServer(function (req, res) {
  res.writeHead(200, {
  		'Content-Type': 'text/html'
  	}
  );
  res.end('<h2>Hello World</h2>');
}).listen(1337, '127.0.0.1');
console.log('Server running at http://127.0.0.1:1337/');

命令行运行

node http-server.js

Http Client

http get请求示例:

//http-client.js
var http = require('http');
http.get("http://127.0.0.1:1337/", function(res) {
  console.log("Got response: " + res.statusCode);
}).on('error', function(e) {
  console.log("Got error: " + e.message);
});

Express

安装Express并体验

Express是Node.js的一个 Web框架,目前使用较广泛。

通过npm安装Express,这里在一个名称为hello-express目录中“本地”安装:

npm install express

安装完Express之后,hello-express目录下生成node_modules目录,里面已经下载好了express。

express命令会被安装到hello-express/node-modules/.bin目录中,因此使用下面的命令创建Express项目原型:

"node_modules/.bin/express"

命令行中会提示“destination is not empty, continue?”,因为我们希望直接在hello-express中创建项目,所以输入yes并回车。

会在hello-express目录中创建一个hello目录,这个目录中就是一个Express项目原型。以下是命令行输出的结果:

  create : .
  create : ./package.json
  create : ./app.js
  create : ./public/javascripts
  create : ./public/images
  create : ./public
  create : ./public/stylesheets
  create : ./public/stylesheets/style.css
  create : ./routes
  create : ./routes/index.js
  create : ./routes/user.js
  create : ./views
  create : ./views/layout.jade
  create : ./views/index.jade

  install dependencies:
    $ cd . && npm install

  run the app:
    $ node app

命令行输出结果的最后几行提示我们运行npm install安装依赖,然后运行node app就可以运行hello-expresss项目了。

express项目的目录结构

项目的目录结构如下:

hello-express
	--node_modules
	--public
	--routes
	--views
	--app.js
	--package.json
  • package.json - 用于描述应用程序的相关信息,同时定义了应用程序所依赖的Node模块
  • node_modules - 文件夹保存package.json中定义的并且已经安装的Node模块
  • public - 文件夹是公开给web的,里面存放静态资源,如样式、图片、前端的javascript
  • routes - 文件夹中存放路由
  • views - 文件夹存放应用程序的布局视图。views目录中是.jade文件,express使用的jade模板引擎生成html的。 jade是一个基于缩进的html模板引擎,具体使用可以参考官方指南
  • app.js - 是用来启动应用程序的主文件

路由(routes)

路由用来处理http请求。 在app.js注册一个处理对地址/hello的get请求的路由:

app.get('/hello', function(req, resp){
	resp.send('Hello World');
});

登录表单post请求的例子:

index.jade

extends layout

block content
	h2 login
	form(method='post', action='/login')
		div
			label Username:
			input(name='username')
		div
			label Password:
			input(name='password', type='password')
		div
			input(type='submit', value='login')

app.js

app.post('/login', function(req, resp){
	resp.send('username=' + req.body.username);
});

总结,获取请求中的参数值,参考这里:

  • req.params - 获取url path variable,如/user/:name,使用req.params.name
  • req.query - 获取url query-string,如/user?name=a,使用req.query.name
  • req.body - 获取请求体中内容,如post name=a,使用req.body.name

另外,应该参考express生成的原型项目中app.js中的内容和routes文件夹中的内容,组织好路由的代码结构,使其具有更好的维护性。

视图(views)

使用response的render方法渲染视图。

app.post('/login', function(req, resp){
	resp.render('result.jade', {username: req.body.username});
});
extends layout

block content
	h2 Welcome #{username}
标题:Node.js快速开始
本文链接:https://blog.frognew.com/2013/01/nodejs-quickstart.html
转载请注明出处。

目录