Node.js,Express,Mysql小結1

今天看瞭下Node.js,感覺還挺容易接受的,下面分享一下我的心得。

 

首先,Node.js提供瞭一個能讓後臺代碼,比如鏈接數據庫,頁面跳轉等功能變成完全由JS來寫的環境。。

 

 

完瞭直接安裝,步驟很簡單,不詳細介紹瞭。

 

先寫一個Hello World:

 

創建一個文件 HELLO.js

 

 

console.log(Hello World!);

隨筆把它放在哪個位置都行,比如c:myTestHELLO.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,執行node 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這麼變量是整個項目的變量,通過它可以設置項目的一些配置

 

比如設置監聽的端口,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){%>

<%= post.name %>

<%}%>
就和在jsp裡寫java代碼一樣!!

 

 

OK到這裡,一個簡單的用node連接數據庫的demo就寫完瞭,自我感覺不是很難,以後會更新更進一步的node和express的東西,希望多多支持!

 

express的文檔https://expressjs.com/api.html

發佈留言