Express.js

来自tomtalk
跳转至: 导航搜索

expressjs

Express是一款基于Node.js的高性能高级Web框架。

相关资源
用npm安装express
$cd /usr/local/lib
$npm install express
按照程序猿和攻城狮们的惯例,来个Hello World:
var express = require('/usr/local/lib/node_modules/express');
var app = express.createServer();
 
app.get('/', function(req, res){
    res.send('Hello World');
});
 
app.listen(3000);


使用mysql数据库的例子
//mysql
var Client = require('/usr/local/lib/node_modules/mysql').Client;
var client = new Client();
 
client.user = 'user';
client.password = 'password'; 
client.query('USE tiny_shop'); 
 
 
//express
var express = require('/usr/local/lib/node_modules/express');
var app = express.createServer(); 
app.listen(3000);
 
 
//action
app.get('/', function(req, res){
    res.send('Hello World');
});
 
app.get('/mysql', function(req, res){ 
    client.query('SELECT * FROM tags', function selectCb(err, results, fields) {   
        if (err) {   
            throw err;  
        }   
 
        var data = ''; 
        for (var i=0; i<results.length; i++) {    
            var firstResult = results[i];
            data += 'id: ' + firstResult['id']+'tag: ' + firstResult['tag']; 
        }   
 
        res.send(data); 
    }); 
});


如何系统地学习 Express JS?

先从基础说起吧,Node.js使用javascript语言,所以JS的语法、特性及OO肯定要先掌握了,再学习node的api,特别需要领会事件驱动及异步编程的思想,这算是一个很大的转变,Node主要用于网络应用,所以网络编程内容多看下。

express是一个基于node的web框架(集成web服务器+mvc),当然其实不用框架,使用node自己弄一个web服务器和mvc框架也不是很麻烦(Node为网络而生,当然强大的不止这点),但是有优秀的express,封装了很多常用功能,推荐用。

学习express肯定是先把api过一遍,文档中的简单例子都试试,但这肯定是不够的,要深入了解还是得看源码,express主要依赖connect(基于node的http服务器框架,提供大量的中间件帮助用户构建强大灵活的web server),所以深入connect也是有必要的。

connect https://github.com/senchalabs/connect

使用express生成一个空白网站

express命令的使用
Usage: express [options]
 
Options:
 
-h, --help          output usage information
-V, --version       output the version number
-s, --sessions      add session support
-e, --ejs           add ejs engine support (defaults to jade)
-J, --jshtml        add jshtml engine support (defaults to jade)
-h, --hogan         add hogan.js engine support
-c, --css           add stylesheet  support (less|stylus) (defaults to plain css)
-f, --force         force on non-empty directory
生成网站
$ express  myapp
 
   create : myapp
   create : myapp/package.json
   create : myapp/app.js
   create : myapp/public
   create : myapp/public/javascripts
   create : myapp/public/images
   create : myapp/public/stylesheets
   create : myapp/public/stylesheets/style.css
   create : myapp/routes
   create : myapp/routes/index.js
   create : myapp/views
   create : myapp/views/layout.jade
   create : myapp/views/index.jade
 
   install dependencies:
     $ cd myapp && npm install
 
   run the app:
     $ node app

按照提示执行命令就可以了。打开http://localhost:3000/ 显示的是views/index.jade文件,有两行express的简短文字宣告。

express响应get示例

第一步:请参考下面的地址,把express跑起来。

http://www.tomtalk.net/wiki/Nodejs#.E4.BD.BF.E7.94.A8express.E7.94.9F.E6.88.90.E4.B8.80.E4.B8.AA.E7.A9.BA.E7.99.BD.E7.BD.91.E7.AB.99

第二步:编辑下面三个文件的内容,加入相应代码。

app.js 处理路由
app.get('/signup', routes.signup);
routes/index.js 获取get参数
exports.signup = function(req, res){
  res.render('signup', { title: 'Express', username: req.query.username, email: req.query.email });
};
views/signup.jade 输出get提交的值
extends layout
 
block content 
 
  h1 Node.js菜鳥筆記-註冊
 
  <form id="signup" method="GET" action="/Signup">
  <label>使用者名稱:</label><input type="text" id="username" name="username" /><br>
  <label>電子郵件:</label><input type="text" id="email" name="email" /><br>
  <input type="submit" value="註冊我的帳號" /><br>
  </form>
 
  h1 #{username}
  h1=email

怎样让express自动重新加载修改过的js文件?

如果能自动重加载js的话, 开发会快捷很多. 我现在每次都要先ctrl+c停止, 然后再启动node, 很不方便.

你需要的是:

  • node-dev
  • nodemon
  • forever

具体参见:https://github.com/joyent/node/wiki/modules#wiki-restarting