您的位置:首页 > Web前端 > Node.js

Node.js代码总结

2015-10-17 16:36 609 查看
Node.js是一个服务器端的Javascript解析器。在node中,不同的功能组件被划分成不同的模块。

命令

全局模块的默认安装位置npm root -g查看全局模块的默认搜索路径$node>global.module.paths

事件

Nodejs采用事件驱动的方式,所有能够产生事件的对象都是事件模块中的EventEmitter类的实例。var events = require("events");  var emitter = new events.EventEmitter();  emitter.on("myEvent",function(msg) {    console.log(msg);  });  emitter.emit("myEvent","Hello World.");
new events.EventEmitter()  创建了一个事件触发器
addListener(event,listener) 和 on(event,listener) 这两个方法都是将一个监听器添加到指定事件的监听器数组的末尾。
once(event,listener) 这个方法为事件为添加一次性的监听器。该监听器在事件第一次触发时执行,过后将被移除。
removeListener(event,listener) 该方法用来将监听器从指定事件的监听器数组中移除出去。emit(event,[arg1],[arg2],[...]) 方法用来产生事件。以提供的参数作为监听器函数的参数,顺序执行监听器列表中的每个监听器函数。所有数据流都是EventEmitter的实例,因此可以产生各种不同的事件。可读流主要会产生以下事件:data 当读取到流中的数据时,此事件被触发end 当流中没有数据可读时,此事件被触发error 当读取数据出现错误时,此事件被触发close 当流被关闭时,,此事件被触发,可是并不是所有流都会触发这个事件。(例如,一个连接进入的HTTP request流就不会触发'close'事件。)

文件系统

Node 中的fs 模块用来对本地文件系统进行操作。使用require('fs')访问这个模块。所有的方法都提供了异步和同步两种方式。异步操作的版本都会使用一个回调方法作为最后一个参数。当操作完成的时候,该回调方法会被调用。而回调方法的第一个参数总是保留为操作时可能出现的异常。如果操作正确成功,则第一个参数的值是null 或 undefined 。同步操作的版本的方法名称则是在对应的异步方法之后加上一个Sync 作为后缀。当使用异步版本时不能保证执行顺序。在繁重的任务中,使用这些函数的异步版本.同步版本会阻塞进程,直到完成处理,也就是说会暂停所有的连接.删除文件
var fs = require('fs');
fs.unlink('./myModule.js',function (err) {
if (err) throw err;
});

网络

 var http = require('http');
  http.createServer(function (req,res) {
    res.writeHead(200,{'Content-Type': 'text/plain'});
   res.end('Hello World\n');
  }).listen(1337,"127.0.0.1");
http.createServer 创建并返回一个新的web server对象,并且给服务绑定一个回调,用以处理请求。通过http.listen() 方法就可以让该 HTTP 服务器在特定端口监听。

连接Mysql数据库

var mysql = require(‘mysql‘);
var connect = mysql.createConnection({
host:‘localhost‘,
user:‘root‘,
password:‘1993‘,
database:‘test‘,
port:3306
});
connect.connect();
connection.query(selectSQL,function(err,rows,fields) {
if (err) throw err;
console.log("SELECT ==> ");
for (var i in rows) {
console.log(rows[i]);
}

});
connect.end(); //end()方法在queries都结束后执行。end()方法可以接受一个回调函数,query执行出错后,错误返回给回调函数的err参数。
connect.destory(); //不接受回调函数, 立即结束
问题  Error:Cannot find module 'mysql'
1.设置全局模块根目录NODE_PATH=“E:\nodejs\node_modules”。
2.若没有设置全局模块根目录,那么执行js的目录必须有依赖的modules。
(1)直接在执行js的目录下npm install xxx。
(2)在执行js的目录下,创建package.json文件,把需要的modules加进去,然后执行npm install。
Connection Options
charset  字符集,默认为UTF8_GENERAL_CI
connectTimeout  连接超时,单位毫秒,默认不限制
multipleStatements  是否许一个query中有多个MySQL语句 ,默认为false
数据库基本操作
var  userAddSql =
'INSERT INTO userinfo(Id,UserName,UserPass) VALUES(0,?,?)'
;
[/code]
var  userAddSql_Params = [
'Wilson'
,
'abcd'
];
[/code]
connection.query(userAddSql,userAddSql_Params,function (err,result){});
result中包含affectedRows(受影响的行数)、insertId(插入的主键ID)。根据这些信息可以方便进行后续操作。
删改
v var userModSql =
'UPDATE userinfo SET UserName = ?,UserPass = ? WHERE Id = ?'
;
[/code]
var userModSql_Params = [
[code]'钟慰'
,
'5678'
,
1
];
[/code]
  connection.query(userModSql,userModSql_Params,function (err,result) {});
[/code]
[/code]
var  userGetSql =
'SELECT * FROM userinfo'
;
[/code]
  connection.query(userGetSql,function (err,result) {});
[/code]
[/code]
var  userDelSql =
'DELETE FROM userinfo'
;
[/code]
  connection.query(userDelSql,function (err,result) {});
[/code]

常用模块和方法

加载模块var module = require('modulename');var module = require('./modulename.js'); 用来加载与当前js文件同一目录下的js模块。模块中的私有属性和方法在模块以外无法访问。公共属性和公共方法的声明需要在前面加上this关键字。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: