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

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