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关键字。相关文章推荐
- Reverse Nodes in k-Group
- nodejs中express入口文件及supervisor插件问题
- Swap Nodes in Pairs
- Remove Nth Node From End of List
- nodejs支持ssi实现include shtml页面
- <LeetCode><Easy> 19 Remove Nth Node From End of List
- LeetCode解题报告--Swap Nodes in Pairs
- [leetcode] Swap Nodes in Pairs
- assert()断言函数以及NODEBUG用法总结
- hadoop nameNode 无法启动
- 使用 AngularJS & NodeJS 实现基于 token 的认证
- nodejs 计算内存使用率
- Reverse Nodes in k-Group
- 使用node.js的bodyParser中间件读取post数据解析
- Node.js 都应用在什么项目上?这些项目为什么选择 Node.js?
- NodeJS优缺点及适用场景讨论
- 让Node模块在浏览器运行----browserify
- NodeManager启动不起来
- [Cool Node.js] 题记
- Nodejs正则表达式函数之match、test、exec、search、split、replace