Это решение, которое я использую.
function Enum() {
this._enums = [];
this._lookups = {};
}
Enum.prototype.getEnums = function() {
return _enums;
}
Enum.prototype.forEach = function(callback){
var length = this._enums.length;
for (var i = 0; i < length; ++i){
callback(this._enums[i]);
}
}
Enum.prototype.addEnum = function(e) {
this._enums.push(e);
}
Enum.prototype.getByName = function(name) {
return this[name];
}
Enum.prototype.getByValue = function(field, value) {
var lookup = this._lookups[field];
if(lookup) {
return lookup[value];
} else {
this._lookups[field] = ( lookup = {});
var k = this._enums.length - 1;
for(; k >= 0; --k) {
var m = this._enums[k];
var j = m[field];
lookup[j] = m;
if(j == value) {
return m;
}
}
}
return null;
}
function defineEnum(definition) {
var k;
var e = new Enum();
for(k in definition) {
var j = definition[k];
e[k] = j;
e.addEnum(j)
}
return e;
}
И вы определяете свои перечисления следующим образом:
var COLORS = defineEnum({
RED : {
value : 1,
string : 'red'
},
GREEN : {
value : 2,
string : 'green'
},
BLUE : {
value : 3,
string : 'blue'
}
});
И вот как вы получаете доступ к своим перечислениям:
COLORS.BLUE.string
COLORS.BLUE.value
COLORS.getByName('BLUE').string
COLORS.getByValue('value', 1).string
COLORS.forEach(function(e){
// do what you want with e
});
Я обычно использую последние 2 метода для отображения перечисления из объектов сообщений.
Некоторые преимущества этого подхода:
Некоторые недостатки:
В электронной коммерции есть одно громкое слово «Безопасность».
Чувствуете ли вы уверенность при написании безопасного кода? Имея в виду, что ваш код будет обрабатывать информацию о кредитных картах пользователей.
Теперь многое уходит в создание решения электронной коммерции с нуля.
Я бы предположил, что электронная коммерция - это гораздо больше, чем конкретная технология. ECom больше о том, как построена база данных и какие функции требуются. Есть хорошая книга, которую я прочитал 10 лет (очень давно) назад, она посвящена электронной коммерции с помощью asp classic. Но есть много новых, использующих более новые технологии здесь .
Большой ключ - это то, как вы структурируете свои данные, продукты, варианты, заказы, детали заказа, данные кредитной карты / пользователя и т. Д. различные способы обработки транзакций. Как работать с конвейерами заказов. Когда предлагать переход с текущей страницы, а когда нет. Как давать рекомендации по продукту. Работа с налоговыми API и API доставки. Вы можете подумать о загрузке DashCommerce (приложение .net) или чего-то подобного, которое соответствует вашим предпочтительным технологиям, чтобы увидеть, как они все настроили. Установите что-нибудь. Настройте его, чтобы ощутить трудности с управлением данными. ... также почувствовать боль навигации по корзине покупок (добавление продуктов в корзину, обновление корзины, оформление заказа, создание учетной записи или анонимное оформление заказа).
Быть разработчиком коммерции обычно означает знать, как работать с Verisign (теперь PayPal) или аналогичной системой обработки платежей. Как перехватить мошеннические транзакции и правильно с ними бороться. Как работать в среде с высоким уровнем транзакций (кеширование, многоуровневые архитектуры, очереди, веб-сервисы). Перекрестные ссылки на продукты на основе истории пользователей / профилей для максимизации транзакций (подумайте о конфетах на кассе продуктового магазина). Знание того, как безопасно работать с конфиденциальными данными, что обычно означает методы шифрования, настройку DMZ, работу с прокси-серверами и т. Д. Обратите внимание на использование некоторой формы механизма правил для конвейеров заказов, чтобы ваши бизнес-правила были отделены от ваших логика приложения. Узнайте о схемах купонов, скидок и т. Д. Часто рекламные кампании активно используются для получения дополнительного дохода.
Электронная торговля может быть большой темой!
настройка DMZ, работа с прокси-серверами и т. д. Обратите внимание на использование некоторой формы механизма правил для конвейеров заказов, чтобы ваши бизнес-правила были отделены от логики вашего приложения. Узнайте о схемах купонов, скидок и т. Д. Часто рекламные кампании активно используются для получения дополнительного дохода.Электронная торговля может быть большой темой!
настройка DMZ, работа с прокси-серверами и т. д. Обратите внимание на использование некоторой формы механизма правил для конвейеров заказов, чтобы ваши бизнес-правила были отделены от логики вашего приложения. Узнайте о схемах купонов, скидок и т. Д. Часто рекламные кампании активно используются для получения дополнительного дохода.Электронная торговля может быть большой темой!