俗话说好记性不如烂笔头.这句话我现在是深有体会.以前学习过的知识,只要不长用,很快就忘了.之前使用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》
到这里,一个后台应用的初步开发环境就搭建完成了.可以尽情的发挥想象力和创造力了.哈哈
本人菜鸟一枚,写这篇博客的目的主要在于自己以后参考,如果能给各位网友带来一点点的好处,那就最好了.
写的不好,还请多多批评指教.
相关推荐
NVM-Express-Base-Specification-2_0-2021.06.02-Ratified-5.pdf
Addison.Wesley.PCI.Express.System.Architecture.eBook
$ git clone git@github.com:passport/express-3.x-http-digest-example.git $ cd express-3.x-http-digest-example $ npm install 启动服务器。 $ node server.js 使用curl发送经过身份验证的请求。 $ curl -v ...
This interface is optimized for Enterprise and Client solid state drives, typically attached as a register level interface to the PCI Express interface. Note: During development, this specification ...
$ git clone git@github.com:passport/express-3.x-http-basic-example.git $ cd express-3.x-http-basic-example $ npm install 启动服务器。 $ node server.js 使用curl发送经过身份验证的请求。 $ curl -v --...
本示例演示了如何使用 3.x和通过使用用户名...$ cd express-3.x-local-with-flash-example $ npm install 启动服务器。 $ node server.js 打开Web浏览器并导航到以查看实际示例。 使用用户名jack和密码secret登录。
$ git clone git@github.com:passport/express-3.x-http-basic-and-digest-example.git $ cd express-3.x-http-basic-and-digest-example $ npm install 启动服务器。 $ node server.js 使用curl使用HTTP Basic...
NVM-Express-Base-Specification-2_0-2021.06.02-Ratified-4 The NVM Express (NVMe) interface allows host software to communicate with a non-volatile memory subsystem. This interface is optimized for all ...
node.js开发之南 上面的微博实例,他用的是express 3.x已经过时,这个是最新的express 4.x,走过路过,不要错过
M.2规范完整版PCI-Express-M.2-Specification-Rev1.1
NVM-Express-TCP-Transport-Specification-2021.06.02-Ratified-1.pdf
全栈开发样板 - 使用Express.js作为后端,React.js作为前端
The NVM ExpressTM (NVMeTM) interface allows host software to communicate with a non-volatile memory subsystem. This interface is optimized for ...register level interface to the PCI Express interface.
Express.js-in-Action-code, "Express.js in Action"的代码我写的一本小书 这是本书中的代码,,Express.js,,。我提供了一个带有 node ( 安装于 nvm ) 。Express应用程序生成器和MongoDB的虚拟机。 要使用它,请...
1x1 11b g n 无线局域网 PCI Express Half Mini Card 适配器_6.20.55.55_2015-12-19 19 25 29
顺丰-V2.1.7.jar
Node.js-Express4.x-React-Glup- 使用说明 1.npm install 2.npm install --save-dev gulp 3.npm install superviesor 4.新开一个窗口执行gulp,然后开始开发吧!
NoteExpress 2.9.8.5668试用期破解,方法 1、安装NoteExpress 2.9.8.5668 2、安装Registry.Trash....4、破解NoteExpress:运行替换后的TrashRegFull.exe,将关于Armadillo的所有注册表信息删除即可,可无限制使用2个月
Express 4.x - API 中文离线手册.mhtml
express4.X框架中使用socket.io