Node.JS——服务器端的js语言
shiny 写于 2011-04-19 09:06:33. 后端那些事
简介Node.JS是服务器端运行的js。同类产品还有CommonJS,都是启动于2009年的服务器端js的实现。其中CommonJS的一些思想对前端JS框架(函数库)亦有影响。 特色和PHP不同的是,node.js提供的http服务并不需要apache/IIS来提供,你可以在js里指定监听的端口。此外node.js仍保持了js的本色,事件驱动、无阻塞是node.js的特色,使用V8引擎,保障了较好的性能。甚至可以用于HTTP长连接。当然,对于php程序员编写node.js的时候最大的障碍也是对node.js事件驱动机制的理解,尽管可能熟练编写js。 数据库node.js连接mysql仍旧是阻塞、需要等待mysql服务器的反应的,但是连接mongoDB是立即返回,得到数据后触发回调函数。一个Node.js读取mongoDB并输出json数据 的demo
index.js
JavaScript代码- var express = require('express');
- var app = express.createServer();
- var db = require('./tea/db');
- db.open({dbName:'comments'});
- app.get('/',function(req,res){
- db.findOne('comments',{},function(records){
- res.send(records);
- });
- });
- app.listen(8001);
/tea/index.js
JavaScript代码
- var tea = exports;
- tea.hello = function(){
- console.log('hello world');
- }
/tea/db.js
JavaScript代码
- var mongo = require('mongodb');
- var tea = tea || {};
- tea.db = exports;
- tea.db.server = '127.0.0.1';
- tea.db.port = 27017;
- tea.db.db = null;
- tea.db.dbName = '';
- tea.db.collection = '';
- tea.db.open = function(mongoInfo,callback){
- this.dbName = mongoInfo.dbName;
- if(!this.db) this.db = new mongo.Db(mongoInfo.dbName, new mongo.Server('127.0.0.1', 27017, {}), {});
- this.db.open(function(err,db){
- this.db = db;
- if(callback) callback(db);
- });
- return this;
- };
- tea.db.find = function(collection,query,callback,isFindOne){
- this.db.collection(collection, function(err, collection) {
- var func = isFindOne ? 'findOne' : 'find';
- collection[func](query,function(err,cursor){
- if(!isFindOne) {
- cursor.toArray(function(err,items){
- if(callback) callback(items);
- });
- }else{
- if(callback) callback(cursor);
- }
- });
- });
- }
- tea.db.findOne = function(collection,query,callback){
- this.find(collection,query,callback,1);
- }
- tea.db.close = function(){
- if(tea.db.db) tea.db.db.close();
- }
- tea.db.hello = function(){
- console.log('Hello World');
- }
本文采用Creative Commons协议,复制本文需遵守三点:1、保留署名(链接);2、非商业性使用;3、再次创作的作品必须以相同的许可协议发布。