i am come back after few days
in this days i have try to create a MVC system in node.js and after few days i have successful
i have use lot's of mvc in node but does not simple so then i have decide to developed new mvc, it simple
MVC is a nice structure in computer science in this structure anybody can create a application using small bit of coding, it's nice and reuse of code
ok what is MVC : it's just a structure
M: model
V: View
C: controller
in M(model) we will connect to database and take or manipulate data with database,
in V(view) it's only for design where programmer can define application presentation how it will look like
in C(controller) it's a heart of application where all process will done, actually C get or set data from M and M take/give data from/to database and send to C as C's requirement and C create a data structure and send it to V and V will just show it, and this is story
ok now i will define how you will follow my mvc structure
just go to your application folder from terminal and type bellow command
$ sudo npm install just-mvc
after complete installation next create folder structure like:
create folder like screen shot and follow bellow detail
and also you can see my dusybin link where you will get example and structure
http://netai-nayek.blogspot.in/p/sandbox.html
or follow for example
https://github.com/netai/todo-list
Example: https://github.com/netai/todo-list
Example:
Check ORM document Defining Models
Example:
Note: you can list all of your models in req.models, check more here
Example:
Note: You should set your NODE_ENV variable
(development or production), or you can by pass by send directly the
mode option when init, check here
Check ORM document Connecting to Database
Example:
Check Express document api
Note:
Example:
Check ORM document Settings
Note: Library will sync database automatically.
Example:
Example:
i think you will enjoy just test it and if you want any help you can comment me here
in this days i have try to create a MVC system in node.js and after few days i have successful
i have use lot's of mvc in node but does not simple so then i have decide to developed new mvc, it simple
MVC is a nice structure in computer science in this structure anybody can create a application using small bit of coding, it's nice and reuse of code
ok what is MVC : it's just a structure
M: model
V: View
C: controller
in M(model) we will connect to database and take or manipulate data with database,
in V(view) it's only for design where programmer can define application presentation how it will look like
in C(controller) it's a heart of application where all process will done, actually C get or set data from M and M take/give data from/to database and send to C as C's requirement and C create a data structure and send it to V and V will just show it, and this is story
ok now i will define how you will follow my mvc structure
just go to your application folder from terminal and type bellow command
$ sudo npm install just-mvc
after complete installation next create folder structure like:
create folder like screen shot and follow bellow detail
and also you can see my dusybin link where you will get example and structure
http://netai-nayek.blogspot.in/p/sandbox.html
or follow for example
https://github.com/netai/todo-list
App structure
/
models/ -- all of your models here
controllers/ -- all of your controllers here
views/
config/
express.js -- your express config
orm.js -- your orm config
routes.js -- router
settings.js -- app settings (ip, port, database, ...)
app.js -- root
Please check exampleHow to use
Please check example or follow these documentExample: https://github.com/netai/todo-list
Init
require(just-mvc)(function(err){
if(err) {
console.log(err);
return;
}
console.log('done');
});
Models
A model file should be like thismodule.exports = function (orm, db) {
//define your orm model here
};
models/post.js
module.exports = function (orm, db) {
var Post = db.define('post', {
title: { type: 'text' },
content: { type: 'text' }
});
};
Controllers
A controller file should be like thismodule.exports = {
//define your controller here
};
controllers/post.js
module.exports = {
home: function(req, res, next){
res.send('home page');
},
get: function(req, res, next) {
req.models.post.find(function(err, data) {
res.send(data);
});
},
create: function(req, res, next) {
req.models.post.create({
title: 'title',
content: 'content'
}, function(err, result) {
res.send(result);
});
}
};
Settings
config/settings.js
A settings file should be like thismodule.exports = {
mode1: { //development
ip: <ip>,
port: <port>,
db: // orm database setting object
},
mode2: { //production
ip: <ip>,
port: <port>,
db: // orm database setting object
}
};
module.exports = {
development: {
ip: '127.0.0.1',
port: 8080,
db: {
host: '127.0.0.1',
port: 3306,
protocol: 'mysql',
user: 'root',
password: '123456789',
database: 'just-mvc-test',
connectionLimit: 100
}
},
production: {
ip: '127.0.0.1',
port: 8080,
db: {
host: '127.0.0.1',
port: 3306,
protocol: 'mysql',
user: 'root',
password: '123456789',
database: 'just-mvc-test',
connectionLimit: 100
}
}
};
Check ORM document Connecting to Database
Express config
config/express.js
A express config file should be like thismodule.exports = function(app, express) {
//any express config here
};
module.exports = function(app, express) {
app.set('title', 'testing');
app.set('views', '../views');
app.set('view engine', 'ejs');
app.use(express.favicon());
};
Note:
- As you see there is no
views
folder in app structure, so create and manage by yourself - Library will start a server automatically, so no need this kind of this stuff
http.createServer(app).listen(function(){});
ORM config
config/orm.js
A orm config file should be like thismodule.exports = function(orm, db) {
//any orm config here
};
module.exports = function(orm, db) {
db.settings.set('test', 'testing data');
};
Note: Library will sync database automatically.
Routes config
config/routes.js
A routes config file should be like thismodule.exports = function(app, controllers) {
//routes here
};
module.exports = function(app, controllers) {
app.get( '/' , controllers.post.home);
app.get( '/post' , controllers.post.get);
app.post( '/post' , controllers.post.create);
};
Options
require(just-mvc)({
mode: 'development', //default: production
path: __dirname, //default: auto detect
express: require('express'), //specify your express version
orm: require('orm') //specify your orm version
}, callback);
var express = require('express') // Express 4
var orm = require('orm') // ORM 2.1.0
require(just-mvc)({
mode: 'development',
path: '/Code/Project',
express: express,
orm: orm
}, callback);
Return object
express
orm
server
web server instancedatabase
orm database instanceapp
express app instancesettings
the current settingsmode
the current moderequire(just-mvc)(functiom(err, mvc) {
mvc.express;
mvc.orm;
mvc.server;
mvc.database;
mvc.app;
mvc.settings;
mvc.mode;
});
Notes
For your convenience, you can get-
models
: all the orm models -
settings
: the running setings -
mode
: the running mode
from express req
function (req, res, next) {
req.models;
req.settings;
req.mode;
}
from express config file
//config/express.js
module.exports = function(app, express, mvc) {
mvc.mode
mvc.settings
};
from orm config file
//config/orm.js
module.exports = function(orm, db, mvc) {
mvc.mode
mvc.settings
};
i think you will enjoy just test it and if you want any help you can comment me here