今天看了下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!");
});
接下來該說怎麼使用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