首页 > 基础设施 > 正文

前端页面开发Node JS案例详解

2012-09-14 14:28:13  来源:IT168

摘要:Node.js是在前端页面开发中十分受欢迎的,之前我们介绍了Node JS的基本知识,本文主要通过一个实际的Node JS案例进行解读,帮助大家更好的理解Node JS。
关键词: Node JS

    目前,Node.JS是在前端页面开发中十分受欢迎的,它是一套用来编写高性能网络服务器的JavaScript工具包,在之前的“前端页面开发之Node.JS初学者指南”文章中,我们介绍了Node JS的基本知识,本文主要通过一个实际的案例进行解读。要求本文的阅读对象为有一定Javascript和其他开发语言基础的读者。


    Hello World例子


    我们依然来实现大家都十分熟悉的hello world例子,我们尝试在控制台打印hello world的字样,首先编写hello.JS文件,然后编写如下代码:


    console.log(‘Hello World’);


    然后我们在命令行下,在hello.JS文件所在的文件夹中,执行如下命令:


    Node hello.JS


    这个时候就可以看到‘Hello World’的输出。


    建立一个HTTP 服务器


    下面,我们尝试编写一个简单的http服务器,只不过功能十分简单而已,代码如下:


    // 引入http模块


    var http = require(“http”);


    // 调用createServer方法创建http web服务器


    // request参数代表所有发送到服务端的请求


    // response 参数代表服务端向浏览器端发送的所有内容


    http.createServer(function (request, response) {


    // request的监听事件,当有请求发送到服务端时触发


    request.on(“end”, function () {


    // 向客户端浏览器写入HTTP的头部信息


    response.writeHead(200, {


    'Content-Type': 'text/plain'


    });


    // 返回给浏览器端数据


    response.end(‘Hello HTTP!’);


    });


    // 在8080端口监听


    })。listen(8080);


    上面的注释已经写的很清楚了,理解也容易,将这个文件保存为http.JS


    后同样在命令下执行:


    Node http.JS


    并且通过浏览器访问:http://localhost:8080,就会在页面中看到Hello HTTP的输出。[page]
    处理URL参数


    现在我们来看下如何处理url参数,代码如下:


    var http = require(“http”),


    // 必须引入url模块处理url参数


    url = require(“url”);


    http.createServer(function (request, response) {


    request.on(‘end', function () {


    var _get = url.parse(request.url, true)。query;


    response.writeHead(200, {


    'Content-Type': 'text/plain'


    });


    response.end('Here is your data: ' + _get['data']);


    });


    // Listen on the 8080 port.


    })。listen(8080);


    在上面的代码中,首先引入了url的模块,这个模块用来处理url传递的参数,并且用变量var _get获得传入的完整URL,通过url.parse方法,将url的参数转变为对象,然后通过_get['data']获得传入的URL参数,将上面的代码保存为get.JS,命令行下运行


    NodeJS get.JS


    并在浏览器中输入如下地址:


    http://localhost:8080/?data=hello


    则会在浏览器中发现输出:Here is your data:hello


    对文件的读写


    对于文件的读写,同样要引入fs这个核心模块,读和写文件分别使用的是fs.readFile()和fs.writeFile()方法,代码例子如下:


    var http = require(“http”),


    fs = require(“fs”);


    request.on(“end”, function () {


    //读文件


    fs.readFile(“test.txt”, 'utf-8', function (error, data) {


    response.writeHead(200, {


    'Content-Type': 'text/plain'


    });


    data = parseInt(data) + 1;


    //将data变量写到test.txt中去


    fs.writeFile('test.txt', data);


    // 显示该网页更新了多少次


    response.end('This page was refreshed ' + data + ' times!’);


    });


    });


    })。listen(8080)


    将上面的代码保存为file.JS,在运行前,先创建一个test.txt文件,并且同样保存在跟file.JS同一个目录中。[page]
    上面的代码中演示了fs.readFile()和fs.writeFile()两个方法,每次当服务器收到客户的请求后,将从test.txt文件中读取数据,并且加1,然后又同样更新这个test.txt文件,其中fs.readFile()接受三个参数,一个是需要读取的文件名,一个是编码格式,最后是回调处理方法。而WriteFile()则很简单这里是两个参数,一个是写入的目的文件名称,另外是需要写入的数据。


    现在在命令行下运行上面的代码


    Node file.JS


    打开浏览器,运行http://localhost:8080,并且进行刷新,会发现好像出现了错误喔,因为数字增加了2,而不是1,但其实这个不是错误,因为第一次的连接是浏览器自动发起的,每次访问这个地址,都是实际上是两个请求发送到服务端,让我们在代码中修正下:


    var http = require(“http”),


    fs = require(“fs”);


    http.createServer(function (request, response) {


    request.on(‘end', function () {


    if (request.url == '/’) {


    fs.readFile(‘test.txt', 'utf-8', function (error, data) {


    response.writeHead(200, {


    'Content-Type': 'text/plain'


    });


    data = parseInt(data) + 1;


    fs.writeFile('test.txt', data);


    response.end('This page was refreshed ' + data + ' times!’);


    });


    } else {


    // 指示文件不存在


    response.writeHead(404);


    response.end();


    }


    });


    })。listen(8080);


    如何访问数据库


    接下来我们简单看下Node.JS如何连接数据库。首先为了访问比如mysql这样的数据库,必须安装类哭Node-mysql,本文中选择的是mysql@2.0.0-alpha2的版本,直接在控制台执行:


    npm install mysql@2.0.0-alpha2


    就可以安装成功了,接下来看下有关的访问代码:


    var http = require(‘http’),


    //增加mysql类库


    mysql = require(“mysql”);


    // 创建mysql连接,设置用户名,密码,连接数据库名


    var connection = mysql.createConnection({


    user: “root”,


    password: “”,


    database: “db_name”


    });


    http.createServer(function (request, response) {


    request.on(‘end', function () {


    // 查询数据表


    connection.query('SELECT * FROM your_table;', function (error, rows, fields) {


    response.writeHead(200, {


    'Content-Type': 'x-application/JSon'


    });


    // 数据以JSon形式返回


    response.end(JSON.stringify(rows));


    });


    });


    })。listen(8080);


    使用这个类库去连接数据库是十分容易的,在上面的代码中,只是简单设置了查询,而在实际的应用中,可能还需要加上检查各类异常的代码。并且注意要设置返回的Content-type为x-application/JSon格式,并且使用JSON.stringify()方法去将数据转为JSon格式。


    最后,将文件保存为mysql.JS,并且执行Node mysql.JS,在浏览器中输入


    http://localhost:8080,则会可以在浏览器中可以看到返回的JSon数据。


    小结


    本文简单介绍了Node.JS的概念和基本知识,让读者对Node.JS有一个大概的初步认识,事实上,Node.JS还在不断发展之中,也有一些对Node.JS进行进一步封装的框架。


第三十四届CIO班招生
国际CIO认证培训
首席数据官(CDO)认证培训
责编:zhangyexi

免责声明:本网站(http://www.ciotimes.com/)内容主要来自原创、合作媒体供稿和第三方投稿,凡在本网站出现的信息,均仅供参考。本网站将尽力确保所提供信息的准确性及可靠性,但不保证有关资料的准确性及可靠性,读者在使用前请进一步核实,并对任何自主决定的行为负责。本网站对有关资料所引致的错误、不确或遗漏,概不负任何法律责任。
本网站刊载的所有内容(包括但不仅限文字、图片、LOGO、音频、视频、软件、程序等)版权归原作者所有。任何单位或个人认为本网站中的内容可能涉嫌侵犯其知识产权或存在不实内容时,请及时通知本站,予以删除。