博客
关于我
Node JS: < 二> Node JS例子解析
阅读量:792 次
发布时间:2023-02-16

本文共 4099 字,大约阅读时间需要 13 分钟。

目前,Node.js是在前端页面开发中十分受欢迎的,它是一套用来编写高性能网络的JavaScript工具包,在之前的博客中介绍了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进行进一步封装的框架,比如

  expressjs(地址:http://expressjs.com/),作为前端和后端开发者都建议对nodejs进行学习。

转载地址:http://enjfk.baihongyu.com/

你可能感兴趣的文章
NIFI从PostGresql中离线读取数据再导入到MySql中_带有数据分页获取功能_不带分页不能用_NIFI资料太少了---大数据之Nifi工作笔记0039
查看>>
nifi使用过程-常见问题-以及入门总结---大数据之Nifi工作笔记0012
查看>>
NIFI分页获取Mysql数据_导入到Hbase中_并可通过phoenix客户端查询_含金量很高的一篇_搞了好久_实际操作05---大数据之Nifi工作笔记0045
查看>>
NIFI分页获取Postgresql数据到Hbase中_实际操作---大数据之Nifi工作笔记0049
查看>>
NIFI同步MySql数据_到SqlServer_错误_驱动程序无法通过使用安全套接字层(SSL)加密与SQL Server_Navicat连接SqlServer---大数据之Nifi工作笔记0047
查看>>
Nifi同步过程中报错create_time字段找不到_实际目标表和源表中没有这个字段---大数据之Nifi工作笔记0066
查看>>
NIFI大数据进阶_FlowFile拓扑_对FlowFile内容和属性的修改删除添加_介绍和描述_以及实际操作---大数据之Nifi工作笔记0023
查看>>
NIFI大数据进阶_FlowFile生成器_GenerateFlowFile处理器_ReplaceText处理器_处理器介绍_处理过程说明---大数据之Nifi工作笔记0019
查看>>
NIFI大数据进阶_Json内容转换为Hive支持的文本格式_操作方法说明_01_EvaluteJsonPath处理器---大数据之Nifi工作笔记0031
查看>>
NIFI大数据进阶_Kafka使用相关说明_实际操作Kafka消费者处理器_来消费kafka数据---大数据之Nifi工作笔记0037
查看>>
NIFI大数据进阶_Kafka使用相关说明_实际操作Kafka生产者---大数据之Nifi工作笔记0036
查看>>
NIFI大数据进阶_NIFI的模板和组的使用-介绍和实际操作_创建组_嵌套组_模板创建下载_导入---大数据之Nifi工作笔记0022
查看>>
NIFI大数据进阶_NIFI监控功能实际操作_Summary查看系统和处理器运行情况_viewDataProvenance查看_---大数据之Nifi工作笔记0026
查看>>
NIFI大数据进阶_NIFI监控的强大功能介绍_处理器面板_进程组面板_summary监控_data_provenance事件源---大数据之Nifi工作笔记0025
查看>>
NIFI大数据进阶_NIFI集群知识点_认识NIFI集群以及集群的组成部分---大数据之Nifi工作笔记0014
查看>>
NIFI大数据进阶_NIFI集群知识点_集群的断开_重连_退役_卸载_总结---大数据之Nifi工作笔记0018
查看>>
NIFI大数据进阶_内嵌ZK模式集群1_搭建过程说明---大数据之Nifi工作笔记0015
查看>>
NIFI大数据进阶_外部ZK模式集群1_实际操作搭建NIFI外部ZK模式集群---大数据之Nifi工作笔记0017
查看>>
NIFI大数据进阶_实时同步MySql的数据到Hive中去_可增量同步_实时监控MySql数据库变化_操作方法说明_01---大数据之Nifi工作笔记0033
查看>>
NIFI大数据进阶_离线同步MySql数据到HDFS_01_实际操作---大数据之Nifi工作笔记0029
查看>>