`

使用Express4.x搭建开发环境(linux--ubuntu)

阅读更多

俗话说好记性不如烂笔头.这句话我现在是深有体会.以前学习过的知识,只要不长用,很快就忘了.之前使用Express搭建环境做过一个小demo,过了两三个月没用,现在又全部还回去了.今天使用Express4.x搭建公司网站的开发环境,真是处处碰壁,到处翻资料,浪费了不少时间.所以在这里记录下一使用Express4.x搭建开发环境的大概步骤,内容包括:

    * 使用Express生成工程

    * 使用mongoose连接mongoDB数据库

    * 配置express-session

    * 配置connect-flash

 

1: 使用Express自动生成工程

开始创建工程之前,必须得安装有node和Express,具体安装方式,参见《使用 nvm 管理 Node》,《 Express 应用生成器》在这里就不赘述了.

 

从终端进入到工作空间路径,执行命令:

 

$ express appName  

 "appName"代表你的工程名称.执行命令后,正常情况下,你会看到如下输出:

 

 

   create : bokeyanshi
   create : bokeyanshi/package.json
   create : bokeyanshi/app.js
   create : bokeyanshi/public
   create : bokeyanshi/public/stylesheets
   create : bokeyanshi/public/stylesheets/style.css
   create : bokeyanshi/routes
   create : bokeyanshi/routes/index.js
   create : bokeyanshi/routes/users.js
   create : bokeyanshi/views
   create : bokeyanshi/views/index.jade
   create : bokeyanshi/views/layout.jade
   create : bokeyanshi/views/error.jade
   create : bokeyanshi/bin
   create : bokeyanshi/bin/www

   install dependencies:
     $ cd bokeyanshi && npm install

   run the app:
     $ DEBUG=bokeyanshi:* ./bin/www

   create : bokeyanshi/public/javascripts
   create : bokeyanshi/public/images

 然后进入工程根路径,安装依赖:

 

 

$ cd appName
$ npm install

 正常安装完成后,可以通过如下命令启动应用:

 

 

$ node ./bin/www

 或者

$ debug=appName ./bin/www

 使用Express4.x创建的工程,启动时不会在控制台输出任何信息.启动后,通过浏览器访问"localhost:3000",你将看到如下信息:


 到这里我们完成了使用Express4.x创建并启动应用.

通过上述方式启动应用,不会监测文件变化.在开发过程中如果服务不会监测文件变化并自动加载的话,开发人员会非常痛苦.因为你每修改一次,都需要手动关闭服务再启动服务,然后调试查看效果.

在Express3.x上,我们使用supervisor来监测文件变化,而这里,我使用nodemon.具体信息和使用参考《使用nodemon监控Express4代码变化自加载

 

 

2: 使用mongoose连接数据库

首先确保你本机上已经安装了mongoDB数据库。安装方法可谓是多种多样,我这里提供一种命令安装方式。参考《Install MongoDB on Ubuntu》通过这种方式安装mongoDB,数据库会开机自启动,不需要你手动去启动它。再也不需要担心数据库没有启动了。哈哈哈。

 

好,言归正传,接下来我们安装mongoose,在工程根路径下运行命令:

$ npm install mongoose --save

 使用参数"--save"会自动将安装包的信息写入到"package.json"文件中,再也不需要你手动去管理了,很方便吧.

下面通过一个例子来演示如何连接和使用数据库.其中使用到的文件夹和文件名称只是示例,使用中可根据具体情况命名.

 

在工程根路径下新建一个"db.js"文件,内容为:

var mongoose = require('mongoose');

module.exports = {
    mongoose: mongoose,
    connect: mongoose.connect('mongodb://localhost/dbName')
};

 创建文档数据模型:

在工程根路径下新建"models"文件夹,在"models"文件夹中新建"test.js"文件,内容为:

var db = require('../db.js');

var TestSchema = db.mongoose.Schema({
    name : {type: String, unique: true},
    content : String
});

module.exports = db.connect.model('tests',TestSchema);

其中"tests"是指定的数据库集合名称. 

到这里,我们就可以在需要的地方操作集合"tests"了.

例如我们在"routes/index.js"文件中向"tests"集合保存一条数据:

var express = require('express');
var router = express.Router();
var Test = require('../models/test');

/* GET home page. */
router.get('/', function(req, res, next) {
    var test = {
        name: "hello",
        content: "this is a demo."
    };
    new Test(test).save(function(err) {
        if(err) {
            console.log(err);
            res.end("保存失败");
        }else{
            console.log("数据保存成功.");
            res.render('index', { title: 'Express' });
        }
    });
});

module.exports = router;

 通过浏览器访问首页,会看到后台打印出:

数据保存成功.
GET / 200 421.665 ms - 170
GET /stylesheets/style.css 304 3.319 ms - - 

进入数据库查看,会看到如下信息:

$ mongo
MongoDB shell version: 2.6.7
connecting to: test
> show dbs
admin          (empty)
beta_jimi_edu  0.078GB
cnybh          0.078GB
dbName         0.078GB
local          0.078GB
> use dbName
switched to db dbName
> show collections
system.indexes
tests
> db.tests.find();
{ "_id" : ObjectId("551aa4e32b75c4597f12ee32"), "name" : "hello", "content" : "this is a demo.", "__v" : 0 }
> 

 到这里,我们的数据库就连接好了.

关于mongoose的详细信息,参考github《mongoose

 

3: 配置express-session

安装express-session:

$ npm install express-session --save

然后在"app.js"文件中添加如下代码:

var session = require('express-session');

app.use(session({
cookie: {maxAge: 6000},
secret: 'test'
}));

  关于session的具体配置,参考github《express-session

 

4:配置connect-flash

在使用connect-flash之前需要先配置session否则会报错。

安装connect-flash:

$ npm install connect-flash --save

 在"app.js"文件中添加如下代码:

var flash = require('connect-flash');

app.use(flash());

 到此,就可以在任何想要返回信息的地方使用"req.flash('message','this is a message for you.');"来传递信息了.

 

例如,我想访问首页时,如果出现错误,就跳转到error页面,并显示错误信息:

router.get('/', function(req, res, next) {
    if(true) {
        req.flash('error','error message.');
        res.redirect('/error');
    }else{
        res.render('index', { title: 'Express' });
    }
});

router.get('/error',function(req,res) {
    res.render('index',{title: req.flash('error')});
});

 访问首页得到如下效果:


 关于"connect-flash"的详细信息,参考github《connect-flash

 

 

到这里,一个后台应用的初步开发环境就搭建完成了.可以尽情的发挥想象力和创造力了.哈哈

 

本人菜鸟一枚,写这篇博客的目的主要在于自己以后参考,如果能给各位网友带来一点点的好处,那就最好了.

写的不好,还请多多批评指教.

 

 

 

 

 

 

 

 

 

 

 

 

  • 大小: 5.1 KB
0
0
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics