محمد افاضاتی

دیده ها، شنیده ها و علاقه مندی های یک برنامه نویس
سه شنبه, ۱۴ شهریور ۱۳۹۱، ۰۹:۱۸ ق.ظ

Model و Data در Javascript

هنگامی که شما یک اطلاعات را از سرور دریافت می‌کنید آیا بهتر نیست اطلاعات را نگه دارید تا در درخواست مجدد همین اطلاعات از آن‌ها استفاده کنید؟
کلاً لایه model از سمت view می‌تواند دیده شود و همه نیاز های sync از طریق خود model حل شود. (دقت کنید که این موارد پیشنهادیست و به نسبت نرم‌افزار شما باید حل شود. ممکن از عمل sync جزیی از لایه controller شما باشد یا …)
مهمترین سؤال این مسأله این است دیتای مورد نظر کجا ذخیره شود؟
یکی از راحت ترین قسمت‌ها خود object مربوط به model است

var User = {
    records: [],
    fetchRemote: function(){ /* ... */ }
};


شما می‌توانید یک کلاسModel درست کنید که tabel هایتان از آن مشتق شود و از طرفی خودش کار دریافت اطلاعات و … را انجام دهد.
از طرفی می‌توانید از شبه ORM های موجود استفاده کنید. به طور مثال موارد زیر وجود دارند


این کتابخانه‌ها به طور کلیdata دریافت شده را با یک سری wrapper نگهداری می‌کنند و امکان جستجو و استفاده بهتر را در اختیار برنامه نویس می گذارند.
به طور مثال قسمتی از taffyDB رو ببینیم

// Create DB and fill it with records
var friends = TAFFY([
    {"id":1,"gender":"M","first":"John","last":"Smith","city":"Seattle, WA","status":"Active"},
    {"id":2,"gender":"F","first":"Kelly","last":"Ruth","city":"Dallas, TX","status":"Active"},
    {"id":3,"gender":"M","first":"Jeff","last":"Stevenson","city":"Washington, D.C.","status":"Active"},
    {"id":4,"gender":"F","first":"Jennifer","last":"Gill","city":"Seattle, WA","status":"Active"}    
]);

// Find all the friends in Seattle
friends({city:"Seattle, WA"});

// Find John Smith, by ID
friends({id:1});

// Find John Smith, by Name
friends({first:"John",last:"Smith"});

// Kelly's record
var kelly = friends({id:2}).first();

// Kelly's last name
var kellyslastname = kelly.last;


همچنین به جای خود object از localStorage خود html5 هم می تونید استفاده کنید.


Backbone js Model


ساختار model در backbone به این صورت است که فیلد های مورد نظر تک تک در object مشتق شده از model تعریف می‌شود و هر کدام از متدها با دسترسی ای که به فیلد ها دارند عملگری را انجام می دهند. به طور مثال:

var Game = Backbone.Model.extend({
        initialize: function(){
            alert("Oh hey! ");
        },
          defaults: {
            name: 'Default title',
            releaseDate: 2011,
        }
    });


در حقیقت هر Row یک model می‌باشد و از طرفی مجموعه‌ای این‌ها یک collection را ایجاد می کند.

var GamesCollection = Backbone.Collection.extend({
    model : Game,
    old : function() {
        return this.filter(function(game) {
            return game.get('releaseDate') < 2009;
        });
    }
});


در این روش هر خصیصه که برای هر ردیف باشد در model اضافه می‌شود و هر چیزی که مربوط به کل collection باشد در collection تعریف می شود.

یکی از خاصیت‌های جالب ذخیره دیتا در localstorge است

window.SomeCollection = Backbone.Collection.extend({
  localStorage: new Backbone.LocalStorage("SomeCollection"), // Unique name within your app.
  // ... everything else is normal.
});


نوشته شده توسط محمد افاضاتی
ساخت وبلاگ در بلاگ بیان، رسانه متخصصان و اهل قلم

محمد افاضاتی

دیده ها، شنیده ها و علاقه مندی های یک برنامه نویس
محمد افاضاتی
محمد افاضاتی برنامه نویس python php دیتابیس های postgresql mongodb و ...

رونوشتی از علاقه مندی هایم برای ماندگار تر شدن!

تبلیغات

طبقه بندی موضوعی

Feedburner RSS

Others

توییتر

Model و Data در Javascript

سه شنبه, ۱۴ شهریور ۱۳۹۱، ۰۹:۱۸ ق.ظ

هنگامی که شما یک اطلاعات را از سرور دریافت می‌کنید آیا بهتر نیست اطلاعات را نگه دارید تا در درخواست مجدد همین اطلاعات از آن‌ها استفاده کنید؟
کلاً لایه model از سمت view می‌تواند دیده شود و همه نیاز های sync از طریق خود model حل شود. (دقت کنید که این موارد پیشنهادیست و به نسبت نرم‌افزار شما باید حل شود. ممکن از عمل sync جزیی از لایه controller شما باشد یا …)
مهمترین سؤال این مسأله این است دیتای مورد نظر کجا ذخیره شود؟
یکی از راحت ترین قسمت‌ها خود object مربوط به model است

var User = {
    records: [],
    fetchRemote: function(){ /* ... */ }
};


شما می‌توانید یک کلاسModel درست کنید که tabel هایتان از آن مشتق شود و از طرفی خودش کار دریافت اطلاعات و … را انجام دهد.
از طرفی می‌توانید از شبه ORM های موجود استفاده کنید. به طور مثال موارد زیر وجود دارند


این کتابخانه‌ها به طور کلیdata دریافت شده را با یک سری wrapper نگهداری می‌کنند و امکان جستجو و استفاده بهتر را در اختیار برنامه نویس می گذارند.
به طور مثال قسمتی از taffyDB رو ببینیم

// Create DB and fill it with records
var friends = TAFFY([
    {"id":1,"gender":"M","first":"John","last":"Smith","city":"Seattle, WA","status":"Active"},
    {"id":2,"gender":"F","first":"Kelly","last":"Ruth","city":"Dallas, TX","status":"Active"},
    {"id":3,"gender":"M","first":"Jeff","last":"Stevenson","city":"Washington, D.C.","status":"Active"},
    {"id":4,"gender":"F","first":"Jennifer","last":"Gill","city":"Seattle, WA","status":"Active"}    
]);

// Find all the friends in Seattle
friends({city:"Seattle, WA"});

// Find John Smith, by ID
friends({id:1});

// Find John Smith, by Name
friends({first:"John",last:"Smith"});

// Kelly's record
var kelly = friends({id:2}).first();

// Kelly's last name
var kellyslastname = kelly.last;


همچنین به جای خود object از localStorage خود html5 هم می تونید استفاده کنید.


Backbone js Model


ساختار model در backbone به این صورت است که فیلد های مورد نظر تک تک در object مشتق شده از model تعریف می‌شود و هر کدام از متدها با دسترسی ای که به فیلد ها دارند عملگری را انجام می دهند. به طور مثال:

var Game = Backbone.Model.extend({
        initialize: function(){
            alert("Oh hey! ");
        },
          defaults: {
            name: 'Default title',
            releaseDate: 2011,
        }
    });


در حقیقت هر Row یک model می‌باشد و از طرفی مجموعه‌ای این‌ها یک collection را ایجاد می کند.

var GamesCollection = Backbone.Collection.extend({
    model : Game,
    old : function() {
        return this.filter(function(game) {
            return game.get('releaseDate') < 2009;
        });
    }
});


در این روش هر خصیصه که برای هر ردیف باشد در model اضافه می‌شود و هر چیزی که مربوط به کل collection باشد در collection تعریف می شود.

یکی از خاصیت‌های جالب ذخیره دیتا در localstorge است

window.SomeCollection = Backbone.Collection.extend({
  localStorage: new Backbone.LocalStorage("SomeCollection"), // Unique name within your app.
  // ... everything else is normal.
});
موافقین ۳ مخالفین ۰ ۹۱/۰۶/۱۴
محمد افاضاتی taffydb backbonejs data model db javascript

نظرات  (۱)

خیلی جالب بود.
ExtJs 4 هم به طور کامل MVC رو سمت کلاینت پیاده سازی کرده.

ارسال نظر

ارسال نظر آزاد است، اما اگر قبلا در بیان ثبت نام کرده اید می توانید ابتدا وارد شوید.
شما میتوانید از این تگهای html استفاده کنید:
<b> یا <strong>، <em> یا <i>، <u>، <strike> یا <s>، <sup>، <sub>، <blockquote>، <code>، <pre>، <hr>، <br>، <p>، <a href="" title="">، <span style="">، <div align="">
تجدید کد امنیتی