今天看瞭下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