俗话说好记性不如烂笔头.这句话我现在是深有体会.以前学习过的知识,只要不长用,很快就忘了.之前使用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》
到这里,一个后台应用的初步开发环境就搭建完成了.可以尽情的发挥想象力和创造力了.哈哈
本人菜鸟一枚,写这篇博客的目的主要在于自己以后参考,如果能给各位网友带来一点点的好处,那就最好了.
写的不好,还请多多批评指教.
相关推荐
2. **操作系统**:大多数Web服务器运行在Linux系统上,如Ubuntu、CentOS等,因为它们提供了稳定且低消耗的运行环境。Windows Server也可作为Web服务器,但成本相对较高。 3. **编程语言与框架**:Web开发通常涉及...
在IT行业中,服务器搭建是构建网络服务的基础,尤其在Android应用开发中,服务器的作用尤为重要。本文将详细解析如何搭建一个支持Android应用的服务器,并涉及相关的数据库安装与配置。 首先,我们要理解服务器的...
在Ubuntu系统中搭建Node.js开发环境是一个重要的前置步骤,它对于想要开发基于Node.js应用程序的用户来说是必须掌握的技能。在开始搭建之前,需要了解Node.js是一个基于Chrome V8引擎的JavaScript运行环境,它允许...
标题中的“LESS&NODEJS环境搭建和LESS应用.pdf”指的是关于使用LESS预处理器和NODEJS环境构建的教程。LESS是一种CSS预处理器,它扩展了CSS的功能,如变量、嵌套规则、运算符和函数,使得CSS编写更加简洁和可维护。而...
【LESS概述】 LESS是一种预处理器语言,它扩展了CSS,为开发者提供了更多强大的功能,如变量、嵌套规则、运算符、函数、...这样,就成功地搭建了一个基于LESS和NODEJS的开发环境,并可以开始进行项目的开发和调试。
在本文中,我们将深入探讨如何在Linux环境下搭建和操作POS(Point of Sale)收银系统。POS系统在商业环境中扮演着至关重要的角色,它能够帮助商家处理销售交易、管理库存和跟踪客户信息。在这个名为“pos.rar_LINUX ...
这个工具让开发者能够在虚拟化环境中快速搭建一套预配置好的开发环境,避免了在本地系统上手动安装和配置各种组件的繁琐过程。以下是关于 Vagrant-MEAN 及其相关技术的知识点: 1. **Vagrant**: - Vagrant 是一个...
**三、开发环境搭建** 成功利用XDMA进行PCIE开发的关键在于正确的环境配置。这包括: - **Vivado工具** - Xilinx的集成设计环境,用于创建、综合和实现FPGA设计,以及配置XDMA IP核。 - **Linux系统** - 提供了...
在这个场景中,我们将探讨如何在Azure云平台上的Ubuntu虚拟机上搭建一个运行Node.js(Express)应用并连接MongoDB数据库的环境,以及如何通过GitHub实现持续集成和持续部署(CI/CD)。 1. **Azure虚拟机**:Azure是...
本《Linux网站建设技术指南》将深入探讨如何利用Linux环境搭建、管理和优化网站,为网页制作提供强大的支持。 首先,我们需要了解Linux的基础知识。Linux是一种自由且开放源码的操作系统,它基于Unix,拥有丰富的...
Linux是一种开源操作系统,它的内核被许多发行版如Ubuntu、CentOS等采用。Linux提供了命令行界面,用户可以通过各种命令进行系统管理、文件操作及程序执行。熟悉Linux命令行对于开发者来说是必备技能,因为它提供了...
为了进一步学习和参与项目,开发者需要熟悉Node.js环境的搭建,理解JavaScript语法,以及可能涉及到的相关库和框架。 总的来说,BlendEdx-backend是一个基于JavaScript的后端系统,利用ImageMagick处理图像操作,...
Web端的开发则采用Express和Mongoose框架,通过后端框架Express搭建可靠高性能的互联网移动学习平台,而Mongoose作为一款对象建模工具,用于MongoDB数据库的数据处理和对象关系模型的交互。 服务器端的开发主要采用...
Linux操作系统由于其开源和灵活性,是搭建MySQL服务器的首选平台。推荐使用64位版本的CentOS或Ubuntu,其中Oracle提供的UEK内核也是不错的选择,因为它针对数据库操作进行了优化。对于文件系统,建议使用xfs或ext4,...
这包括选择合适的服务器环境(如Linux发行版如Ubuntu或CentOS)、配置Web服务器(如Apache或Nginx)、安装和配置数据库服务、设置SSL证书以实现HTTPS加密连接、以及优化服务器性能(如调整内存使用、负载均衡等)。...
DigitalOcean的Droplets提供多种操作系统镜像,包括Ubuntu、Debian、CentOS等,并支持一键安装各种开发环境和应用服务,如LAMP(Linux、Apache、MySQL、PHP)或MEAN(MongoDB、Express、AngularJS、Node.js)栈。...