Node.js,Express,Mysql小结1

今天看了下Node.js,感觉还挺容易接受的,下面分享一下我的心得。


首先,Node.js提供了一个能让后台代码,比如链接数据库,页面跳转等功能变成完全由JS来写的环境。。


先下载下来吧  http://nodejs.org/


完了直接安装,步骤很简单,不详细介绍了。


先写一个Hello World:


创建一个文件 HELLO.js


console.log("Hello World!");

随笔把它放在哪个位置都行,比如c:\myTest\HELLO.js


然后打开cmd,定位到c:\myTest


执行 node HELLO.js;命令


OK,打印出Hello World! 就是如此简单。


那么Express又是什么呢?


相信大家一定用过ssh吧,就是JAVAEE的一个框架,Express也是一个框架,不过这个框架类似于ssh中的struts,主要提供的一个route功能,就是页面跳转!


这个不用下载,因为这个相当于node的一个模块或者说扩展。


如何安装呢?


还是刚才的c:\myTest,在里面新建一个文件


package.json


{
  "name": "helo-world",
  "version": "0.0.1",
  "private": true,
  "scripts": {
    "start": "node app"
  },
  "dependencies": {
    "express": "3.1.0",
    "ejs": "*",
    "mysql":"*"
  }
}

意思就是建了一个project名字叫helo-world,然后这个项目用了express,OK


打开cmd,定位c:\myTest,执行npm install命令,解释一下,这个命令会自动找到package.json文件然后执行它,完成后可以发现文件夹下多了一个node_modules的文件里

面有express,到这里这个含有express的项目已经建好了就是myText文件夹。


但是怎么运行呢,首先你得有一个app.js文件 类似于ssh里的WEB.XML文件


/**
 * Module dependencies.
 */


var express = require('express')
  , http = require('http')
  , path = require('path')
  , mysql = require('./db');


var app = express();


app.configure(function(){
  app.set('port', process.env.PORT || 3000);
  app.set('views', __dirname + '/views');
  app.set('view engine', 'ejs');
  app.use(app.router);
  app.use(express.static(path.join(__dirname, 'public')));
});


app.configure('development', function(){
  app.use(express.errorHandler());
});


var employeeProvider= new EmployeeProvider('localhost', 27017);


//Routes


//index
app.get('/', function(req, res){
  
});


//list employee
app.get('/employee/list', function(req, res) {
    mysql.query('select * from users', function(err, result) {
        if(!err){
            res.render('employee_new', {
			data: result
		});
        }
        
    });
});





app.listen(process.env.PORT || 3000);

代码的前几行,意思就是引入几个模块这些模块是node提供的,http和path模块


然后app这么变量是整个项目的变量,通过它可以设置项目的一些配置

app.router是不知道干嘛用的,但express.js的官方文件是这句可有可无,并且经过测试还真的是这样,不过还是写上吧。

比如设置监听的端口,base路径等。


app.set('view engine', 'ejs');

这段代码是说node需要一个页面渲染的模块,在node里通常有jade或者ejs。


以前用过spring mvc的都应该知道吧 页面渲染模块就是替代jsp的东西,要比jsp渲染的快,例如Velocity。。


ejs也是需要安装的,不过我们已经在package.jso写过了,所以已经和Express一块安装好了。


app.use(express.static(path.join(__dirname, 'public')));

这句代码就是说定义了一个public路径,这个路径下的文件是对外公开的,可以放一些css或者javascript文件。


app.set('views', __dirname + '/views');


指定了view的路径,然后就可以直接调用render(文件名)的方法来render啦。


app.configure('development', function(){
  app.use(express.errorHandler());
});

定义了项目字啊开发模式下要使用错误处理 errorHandler()这是express提供的,就相当于struts的errorAction一样!


app.get('/', function(req, res){
  req.send("Hi!");
});


就跟url挂钩了,这个方法接受类型是get,并且url为/的访问 提供两个参数req res 请求和相应,对于这段代码,返回hi的页面。


接下来该说怎么使用mysql了,当然mysql模块也是要安装的,不过我们已经安装好了,详见package.json文件


写一个db.js和seeting.js

var mysql = require('mysql'),
    settings = require('../settings');
var connection = mysql.createConnection({
    host : settings.host,
    port : settings.port,
    database : settings.db_name,
    user : settings.username,
    password : settings.password
});
connection.connect();
module.exports = connection;

module.exports = { 
  cookieSecret: 'myblog_mysql', 
  db_name: 'blog_mysql', 
  host: 'localhost',
  username: 'root',
  password: 'root'
}; 

这些文件都能看懂吧,说明一下我理解的module是一个关键字,相当于return,就是说明我这个文件返回也就是exports一个类型的数据,当别的文件调用时,可以直接使用,不用new!


app.get('/employee/list', function(req, res) {
    mysql.query('select * from users', function(err, result) {
        if(!err){
            res.render('employee_list', {
			data: result
		});
        }
        
    });
});

这个get方法就是接受路径是employee/list,然后调用mysql.query来查询数据,注意,数据是通过回调方法来取得的,可以看到大部分的node代码都是有回调函数,估计这和js是单线程有关吧


然后就是建一个employee_list的文件employee_list.ejs,


<% data.forEach(function(post, index){%>
<p><%= post.name %></p>
<%}%>

就和在jsp里写java代码一样!!


OK到这里,一个简单的用node连接数据库的demo就写完了,自我感觉不是很难,以后会更新更进一步的node和express的东西,希望多多支持!


express的文档http://expressjs.com/api.html

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章