我開始學習Node.js和Backbone。我想分享服務器和客戶端之間的一些代碼(涉及[1]和[2])。更深:在服務器和客戶端之間共享JavaScript模型代碼,此方法是否有效?
- 分享默認值爲爲模型。默認值可用於填充表單(客戶端),而它們在爲了DRY和執行客戶機/服務器驗證
- 分享實例方法
被強制執行的服務器端
factory
對象來封裝通用代碼(默認值,驗證規則,公共實例方法)並根據環境(Node.js或AMD模塊)調整對象。 此代碼是快速&髒,可能無法正常工作。這是一個好方法還是浪費時間?
(function (factory) {
if (typeof exports === 'object') { // Node.js
var config = require('../config/config.json'),
Sequelize = require('sequelize'),
_ = require('underscore');
var User = {
receiveSms: {
type: Sequelize.BOOLEAN, allowNull: false
},
receiveNewsletter: {
type: Sequelize.BOOLEAN, allowNull: false
}
};
// Add defaultValue for each returned by
_.each(factory.defaults, function (value, key) {
if(_.has(User, key)) {
User[key].defaultValue = value;
}
});
module.exports = function() {
(new Sequelize(config.database, config.username, config.password))
.define('User', User);
};
} else if (typeof define === 'function' && define.amd) { // AMD
define(['backbone', 'uderscore'], function (Backbone, _) {
return Backbone.Model.extend(factory);
});
}
}(function() {
return { // To be adapted
defaults: {
receiveSms: false,
receiveNewsletter: true
}
}
}));
正如我理解正確的話,與requirejs節點擴展我就可以使用一個格式爲我的模塊。這不是我要問的,但也很有趣。不管怎麼說,多謝拉。 – gremo 2013-02-09 15:04:34
是的。例如,你可以用一些配置值來「要求」你的框架或對象。我想在閱讀一段時間後,你會意識到這正是你正在尋找的東西。 – tmuecksch 2013-02-09 15:06:25