目前,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的输出。
处理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同一个目录中。
上面的代码中演示了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进行进一步封装的框架,比如
我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。
我原创,你原创,我们的内容世界才会更加精彩!
【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】
微信公众号
TechTarget
官方微博
TechTarget中国
作者
相关推荐
-
AWS MEAN堆栈+JavaScript=快速搭建应用
开发人员在构建Web应用时有许多选择。市面上有无数的框架和语言可选,而像AWS这样的云平台可以方便地部署和扩展应用程序。
-
AWS Lambda服务功能增加VPC和Python支持
在众多寻求在服务器上运行代码又不想配置服务器的开发人员中,AWS Lambda已经是越来越普及了,而其一系列的新功能也拓展了其应用。
-
我在Ubuntu的Docker中写的Node.js程序能否在CentOS的Docker里面运行?
-
node.js和云平台的关系?