美文网首页
nodejs+express+express-handlbars

nodejs+express+express-handlbars

作者: 逗留 | 来源:发表于2017-07-19 11:32 被阅读66次

npm在package.json文件中管理项目的依赖项以及项目的元数据。要创建这个文件,最简单的办法是运行npm init:它会问一系列的问题,然后为你生成一个package.json文件帮你起步,如下图

安装express:

npm install --save express

(--save用于更新package.json)

因为node_modules随时都可以用npm重新生成,所以我们不会把这个目录保存在我们的代码库中

创建一个.gitignore文件:

# ignore packages installed by npm

node_modules

# put any other files you don't want to check in here,

# such as .DS_Store (OSX), *.bak, etc.

创建配置文件config.js:

创建入口文件server.js:

var app = require('express')();

//配置文件

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

//禁用Express的X-Powered-By头信息

app.disable('x-powered-by');

//添加通用中间件

//请求体中间件

app.use(require('body-parser')());

//静态资源目录(存放css、js、图片文件等静态资源)

app.use(express.static(__dirname +'/public'));

//设置端口号(如果配置了环境端口,会优先选择)

app.set('port', process.env.PORT || config.port);

//视图模版设置

var handlebars=require('express-handlebars').create({

defaultLayout:'main',//默认公共模版

extname:'.hbs',//文件后缀名

helpers:require('./helper.js').helpers()//辅助函数

});

app.engine('hbs',handlebars.engine);

app.set('view engine','html');

//监听端口

app.listen(app.get('port'),function(){

console.log('Express started on http://localhost:'+app.get('port') +'; press Ctrl-C to terminate.');

});

//如果需要使用子域名,可以使用vhost(npm install --save vhost)

//创建子域名"admin"......它应该出现在所有其他路由之前varadmin = express.Router();

app.use(vhost('admin.*', admin));

//创建admin的路由;它们可以在任何地方定义admin.get('/',function(req, res){

res.render('admin/home');

});

admin.get('/users',function(req, res){

res.render('admin/users');

});

//路由分组

require('./routers.js')(app);

// 定制404页面

app.use(function(req, res){

res.type('text/plain');

res.status(404);

res.send('404 - Not Found'+config.name);

});

// 定制500页面

app.use(function(err, req, res, next){

console.error(err.stack);

res.type('text/plain');

res.status(500);

res.send('500 - Server Error');

});

创建路由分组文件routers.js:

默认忽略了大小写或反斜杠,并且在进行匹配时也不考虑查询字符串

//引入控制器

var home = require('./controllers/home.js');

var about = require('./controllers/about.js');

//提供接口

module.exports = function(app){

//home

app.get('/',home.home);

//about

app.get('/about',about.about)

//带参数的路由

app.get('/abou/:city/:name',about.city);

//正则表达式路由

1.用同一个路由处理/和/home

app.get('/(home)?, home.home');

2.完整的正则表达式

app.get(/crazy|mad(ness)?|lunacy/,function(req,res){});

//因为路由的本质也是中间件,所以还可以这样写

app.get('/about',function(req,res,next){

if (...) return next();//走向下一个中间件,这里就是about.about

return res.send('...');//结束返回,不会向下走,render,json一样

}, about.about);

}

创建控制器文件home.js、about.js:

exports.home = function(req,res,next){

res.render('home', {

title: '主页',//传递参数

layout:null,//不使用默认模版

//还可以重写辅助方法...

})

}

exports.about = function(req,res,next){...}

创建数据库主文件db.js:

npm install --save mongoose

var mongoose=require('mongoose');

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

//连接数据库

mongoose.connect(config.db,{server: {poolSize:20, socketOptions:{keepAlive:1}}},function(err) {if(err) {process.exit(1);}});

require('./admin/coal');

exports.Coal=mongoose.model('Coal');//导出模型

...

//如果使用云托管,MongoLab:https://npmjs.org/package/mongodb

然后将数据库凭证添加到config.js文件里:

mongo: {

development: {connectionString: 'your_dev_connection_string',},

production: {connectionString: 'your_production_connection_string',},

}

//连接

var opts = {server: {socketOptions: { keepAlive: 1 }}};

switch(app.get('env')){

case 'development':

mongoose.connect(credentials.mongo.development.connectionString, opts);break;

case 'production':

mongoose.connect(credentials.mongo.production.connectionString, opts);break;

default:throw newError('Unknown execution environment: ' + app.get('env'));

}

创建模型文件:

var helper=require('../helper.js');//封装数据库公共方法

var mongoose=require('mongoose');

var CoalSchema=new mongoose.Schema({

supplier: String,

water: {type:String,default:'123'//默认值}

});

CoalSchema.statics.getCoal=function(callback){this.find(callback);}

//导出

module.exports=mongoose.model('Coal',CoalSchema);

不写了,太多了。。。

相关文章

  • nodejs+express+express-handlbars

    npm在package.json文件中管理项目的依赖项以及项目的元数据。要创建这个文件,最简单的办法是运行npm ...

网友评论

      本文标题:nodejs+express+express-handlbars

      本文链接:https://www.haomeiwen.com/subject/rzztpttx.html