设为首页 收藏本站
查看: 321|回复: 0

[经验分享] 使用Express4.x搭建开发环境(linux--ubuntu)

[复制链接]

尚未签到

发表于 2016-3-28 06:42:02 | 显示全部楼层 |阅读模式
  俗话说好记性不如烂笔头.这句话我现在是深有体会.以前学习过的知识,只要不长用,很快就忘了.之前使用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",你将看到如下信息:
DSC0000.png
 到这里我们完成了使用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')});
});
  访问首页得到如下效果:
DSC0001.png
 关于"connect-flash"的详细信息,参考github《connect-flash》
  
  
  到这里,一个后台应用的初步开发环境就搭建完成了.可以尽情的发挥想象力和创造力了.哈哈
  
  本人菜鸟一枚,写这篇博客的目的主要在于自己以后参考,如果能给各位网友带来一点点的好处,那就最好了.
  写的不好,还请多多批评指教.
  
  
  
  
  
  
  
  
  
  
  
  

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.iyunv.com/thread-196393-1-1.html 上篇帖子: LINUX shell中不可以见字符输入和验证 下篇帖子: linux下导入、导出mysql数据库命令(转载)
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表