منبع اصلی نوشتار زیر در این لینک قرار دارد

geddy nodejs web framework

nodejs آچار فرانسه ای که هر روز بیشتر خبری درباره اش می شنویم امروزه تبدیل به یکی از ابزار های بسیار جذاب شده است. یکی از این چیز ها که توجهم را به خودش جلب کرد یک فریم ورک وب است که امکانات خوبی دارد.

geddy فریم ورکی است که امکانات جالبی دارد. این فریم ورک از الگوی معماری mvc تبعیت می کند.

 

model:

ساختار منعطف به همراه validation

var User = function () {
  this.property(\'login\', \'string\', {required: true});
  this.property(\'password\', \'string\', {required: true});

  this.validatesPresent(\'login\');
  this.validatesConfirmed(\'password\', \'confirmPassword\');

  // You can define methods for instances like this
  this.someMethod = function () {
    // Do some stuff
  };
};

User = geddy.model.registerModel(\'User\', User);

همانطور که می بیند که فیلد ها می تواند از type های اولیه تعریف شوند همینطور با validator ها چک شوند و شما می توانید متد برای مدل تعریف کنید.

 

view:

برای مدیریت view از ejs استفاده می شود.

// view logic
<% if (localVar) { %>
  // do some stuff with that local variable
<% } %>

// display the value of a variable
<%= user.login %>

// just use regular js
<% for (var i in user.posts) { %>
  <%= user.posts[i].title %>
<% } %>

قبلا چیز هایی مثل mustache را بررسی کرده بودم یکی از معایبی که از ejs دیدم این بود که کامپایل نمی شد (جایی چیزی ازش ندیدم) و احتمال سرعت کمتری به نسبت بقیه دارد.

 

Controller:

به صورت پیشفرض با ساخت مدل crud را jeddy برای شما درست درست می کند. متد های دیگر را می توانید با استفاده از controller اضافه کنید.

var User = function () {
  this.index = function (req, resp, params) {
    this.respond(params, {
      format: \'html\'
    , template: \'app/views/main/index\'
    });
  };
};

exports.User = User;

 

نوع content format را می توانید مشخص کنید

this.respondsWith = [\'js\', \'json\'];

از حالا .json را می توانید در آدرس هایتان استفاده کنید.

 

با jeddy نیازی به نگرانی درباره clustering ندارید. به راحتی می توانید از cluster استفاده کنید. تعداد worker ها را می گویید.

// just set the number of workers in your config
\"workers\": 1

// Geddy also handles process rotation
\"rotateWorkers\": true,
\"rotationWindow\": 7200000,
\"rotationTimeout\": 300000,

 

app metric:

برای محاسبه زمان و تست برنامه فقط metric را در تنظیمات فعال کنید و به /metric بروید

// counters
var counter = new geddy.metrics.Counter;
counter.inc(1);

// timers
var timer = new geddy.metrics.Timer;
timer.mark();

 

کلا command line خوبی دارد

// generate an app
$> geddy app test_app

// generate a new resource
$> geddy resource user

// start your app
$> geddy

 

router:

// standard main route
router.match(\'/\').to({controller: \'Main\', action: \'index\'});

// a custom route
router.match(\'/moving/pictures/:id\').to({controller: \'Moving\', action: \'pictures\'});

// a restful resource route
router.resource(\'users\');

شما با تعریف router یک url handler دارید که در نهایت controller شما را اجرا می کند.

 

logging:

// info
geddy.log.info(\'Some info for you\');

// warning
geddy.log.warn(\'A warning!\');

// error
geddy.log.Error(\'An error occurred\');

شما از طریق می تونید Log داشته باشید و همه چیز را بنویسید.

 

نصب:

برای نصب کردن از طریق npm دستور زیر ر امی زنید

$> npm install -g jake geddy

حالا می توانید از طریق geddy بگویید که من یک برنامه می خواهم

$> geddy app todo_app

و با وارد شدن به پوشه todo_app می توانید پروژه را اجرا کنید

$> cd todo_app
$> geddy

از طریق http://localhost:4000 می توانید application خودتان را ببینید

geddy resource todo

با این دستور geddy برایتان برنامه اولیه تان را می نویسد. چه می نویسد؟

  • It generated a todo model
  • It generated a todos controller
  • It generated views for:
    • an index of todo\'s
    • a single todo
    • creating a todo
    • editing a todo
  • It generated these routes:
    • /todos (GET)
    • /todos (POST)
    • /todos/add (GET)
    • /todos/:id/edit (GET)
    • /todos/:id (GET)
    • /todos/:id (PUT)
    • /todos/:id (DELETE)
       

حالا با اجرای سرور می توانید از آدرس http://localhost:4000/todos برنامه تان را ببینید

در هر فایل می توانید با اجرای تغییرات برنامه تان را کامل تر کنید.

 

راهنمای geddy:

Geddy - A Structured Node.js Framework -> http://geddyjs.org/tutorial.html