Comments 45
По поводу module.exports vs. exports — можно просто делать везде module.exports:
function a() {
///
}
function b() {
///
}
module.exports = {
a: a,
b: b
};
function a() {
///
}
function b() {
///
}
module.exports = {
a: a,
b: b
};
+1
Я так понял, что речь тут о том, что при присвоении exports = foo, exports перестает быть ссылкой на module.exports.
Это можно объяснить на таком примере:
Конечно можно всегда писать module.exports =…, но лучше понимать в чем дело.
Это можно объяснить на таком примере:
var foo = { bar: {} };
var bar = foo.bar;
console.log(foo.bar); // {}
bar.baz = 123;
console.log(foo.bar); // { baz: 123 }
foo.bar = 123;
console.log(foo.bar); // 123
bar = 456;
console.log(foo.bar); // 123
Конечно можно всегда писать module.exports =…, но лучше понимать в чем дело.
+1
По поводу п. 1. Для ноды достаточно просто писать расширения, чтобы разгрузить основной поток и выполнять тяжёлые вычисления на c++ в отдельных потоках.
0
Это не 10 основных ошибок, а 10 азов.
+22
Ошибкой является рассуждение о callback hell без вообще какого бы то ни было упоминания посулов (promise), и безальтернативная рекомендация async.js.
-4
Если честно, то звучит как «основные проблемы Node.js в выбранном языке и его практиках»
+4
Ошибка №0: долбить зубилом по ноуту
Речь о КПДВ, если что.
+4
А есть способ, чтобы чейнить функции в async.js, а не передавать их в виде массива?
Чтобы не
async.waterfall([ func, func, func], func)
а
async.waterfall()
.next(func(){})
.next(func(){})
.next(func(){})
.fail(func(){})
Чтобы не
async.waterfall([ func, func, func], func)
а
async.waterfall()
.next(func(){})
.next(func(){})
.next(func(){})
.fail(func(){})
0
Это понятно. Мой вопрос был про async. Было бы замечательно узнать о чём-то вроде www.npmjs.com/package/async-chained
+1
А чем плох массив? Можно просто использовать именованный и добавлять функции push'ами:
ar.push(func(){});В вашем синтаксисе я не понял, в какой момент цепочка должна уйти на запуск — после добавления fail'а?
ar.push(func(){});
ar.push(func(){});
ar.push(func(){});
async.waterfall(ar,func);
0
Вы зря в примерах приводите async.js. Это все таки не стандарт, и даже не эффективное решение. Лучше сразу приводите примеры на промисах, тем более они уже в stable версии из коробки идут, если уж это для начинающих материал.
+3
Да, описание решения на промисах было бы куда уместнее. Видимо автор решил, что если человек заметит у себя callback hell, то сможет найти подходящее решение сам.
0
Т.е. сейчас node.js поддерживает промисы нативно и можно отказаться от использования подобных либ https://github.com/kriskowal/q?
0
Большинство ошибок относится к асинхронной модели программирования, а не только к Node.js. И они не являются основными. Программист, допускающий их, не знает устройство своего языка.
0
Большинство начинающих программистов путаются в тонкостях языка и скорее не из-за незнания, а из-за неопытности. Статьи подобного рода помогают избежать лишней путаницы.
+3
Из-за незнания. Именно поэтому лучше читать статьи подобные вот этой: http://habrahabr.ru/post/222761/
Вместо статьи где размазаны основные идеи на 100 предложений вместо списка на 10 строк (хороших практик):
1. из базы вызываем массив отсортированным
2. return callback();
3. используем async.waterfall или Promise
4. колбэки несинхронны
5. всегда module.exports
…
Вместо статьи где размазаны основные идеи на 100 предложений вместо списка на 10 строк (хороших практик):
1. из базы вызываем массив отсортированным
2. return callback();
3. используем async.waterfall или Promise
4. колбэки несинхронны
5. всегда module.exports
…
0
Как автор прокомментирует эту статью 12factor.net/logs применительно к 9 ошибке?
0
Вы можете спросить это у автора напрямую www.toptal.com/resume/mahmud-ridwan.
А как проблема использования console.log при отладке связана с логированием работы приложения?
А как проблема использования console.log при отладке связана с логированием работы приложения?
+2
Статья слизана с: www.airpair.com/node.js/posts/top-10-mistakes-node-developers-make
Желательно указывать ссылку на оригинал.
Желательно указывать ссылку на оригинал.
-12
Это перевод. У заголовка есть соответствующая отметка, а внизу — ссылка на оригинал.
+1
>>ссылка на оригинал.
Вот за это люди и не уважают рунет. Перепечатка на перепечатке и даже оригинал не в состоянии указать. Минусите дальше хомяки. А лучше совсем забаньте меня, меня с вас тошнит.
Люди не способные проселдить оригинал или отдать дань уважения автору, не заслуживают уважения.
Вот за это люди и не уважают рунет. Перепечатка на перепечатке и даже оригинал не в состоянии указать. Минусите дальше хомяки. А лучше совсем забаньте меня, меня с вас тошнит.
Люди не способные проселдить оригинал или отдать дань уважения автору, не заслуживают уважения.
-17
Читайте внимательнее. Это разные статьи на одну тему. Видно по составу указанных 10 пунктов.
+1
Это особенно заметно по переставленным пунктам. То, что Mahmud Ridwan слизал статью переставив пункты не делает ему чести. Но то, что вы пытаетесь это игнорировать позорит вас ещё больше. Alexandru Vladutu написал статью 4 месяца назад, Mahmud Ridwan слизал ее, месяца даже не прошло.
Игнорировать неугодные факты похоже входит у некоторых людей в привычку.
Хомяки фас!
Игнорировать неугодные факты похоже входит у некоторых людей в привычку.
Хомяки фас!
-9
Год назад я сомневался, но теперь я вижу. Вы заслуживаете цензуру в полном объеме!
-8
А цензура-то причём?
+2
Отрицательная карма — это цензура, бан — тоже цензура. С учетом того, что статья «краденная» и нет отсылки на оригинал, а за указание этого факта я получаю «цензурную карму» вы должны радоваться наличию цензуры, а не ныть как год назад, что вас чем-то обижают. Вы заслужили цензуру.
Ставить отрицательную карму и выступать против цензуры — лицемерие в чистом виде!
Ставить отрицательную карму и выступать против цензуры — лицемерие в чистом виде!
-8
А вы хотя бы ознакомились со статьями, перед тем, как громко кричать о том, что кто-то у кого-то украл. Даже при беглом просмотре видно, что в статьях есть общие моменты, а есть индивидуальные. Да и при обсуждении одних и тех же проблем, у авторов различные объяснения и примеры. С каких пор обсуждение одних и тех же вопросов стало плагиатом? Можете написать о своем видение основных ошибок при разработке на ноде, мы все с радостью почитаем!
+1
А прочитать обе статьи слабо? Ничего что пункты РАЗНЫЕ, а не переставленные?
Кстати, где Вы взяли слово «хомяки» Прямо как школьник. Или лавры старых интернет-задротов покоя не дают? Так мода на задротство прошла.
Кстати, где Вы взяли слово «хомяки» Прямо как школьник. Или лавры старых интернет-задротов покоя не дают? Так мода на задротство прошла.
+3
Извините, персонально вы из детсада. ;)
Я прочитал обе, обе статьи слабые, но эта самая жуткая из-за картинок нарисованных человеком у которого возможно была насильственная лоботомия.
ПС: Ничто в этом мире не заставит меня поменять своё мнение, что статья вымучена, чтобы спереть 10 ошибок. Если вам это не нравиться, то можете рвать на нижней части спины волосы сколько влезет, я все равно буду считать что мсье «хомяк». Иначе бы не написал коммент через 4 дня, да к тому же когда уже итак все насрали в карму. Собственно вы просто подтвердили, что принадлежите к стаду.
Я прочитал обе, обе статьи слабые, но эта самая жуткая из-за картинок нарисованных человеком у которого возможно была насильственная лоботомия.
ПС: Ничто в этом мире не заставит меня поменять своё мнение, что статья вымучена, чтобы спереть 10 ошибок. Если вам это не нравиться, то можете рвать на нижней части спины волосы сколько влезет, я все равно буду считать что мсье «хомяк». Иначе бы не написал коммент через 4 дня, да к тому же когда уже итак все насрали в карму. Собственно вы просто подтвердили, что принадлежите к стаду.
-3
Подтвердить свои слова готовы?
Давайте по номерам, какие ошибки спёрты? Со ссылками, откуда они спёрты (естественно, с номером в первоисточнике).
Давайте по номерам, какие ошибки спёрты? Со ссылками, откуда они спёрты (естественно, с номером в первоисточнике).
0
Но проблемо.
1 nodemon (Ошибка десятая: не использование программ-диспетчеров)
2 Blocking the event loop (Ошибка первая: блокирование цикла событий)
3 Executing a callback multiple times (Ошибка вторая: вызов колбэка более одного раза)
4 Callback Hell (Ошибка третья: глубоко вложенные колбэки)
5 Creating big monolithic applications (Ошибка четвёртая: рассчитывать, что колбэки будут выполняться синхронно)
6 Poor logging
7 No tests
8 Not using static analysis tools
9 Zero monitoring or profiling
10 Debugging with console.log (Ошибка девятая: использование Console.log для отладки)
Притянутое за уши (высосано для отличий):
Ошибка пятая: присвоение “exports” вместо “module.exports” — (в js разве по другому? при чем тут nodejs? Таких ошибок можно еще море навыдумывать и все будут в js)
Ошибка седьмая: предполагать, что все числа целочисленные (туда же, привет js)
Ошибка восьмая: игнорирование преимуществ потоковых API (шо, nodejs?)
Про это даже писать не стоило. Это из разряда КЭП.
Ошибка шестая: генерация ошибок внутри колбэков () — единственная отличительная ошибка. Про неё стоило написать подробно, но автор не способен похоже. Игнорировать логирование, вообще позор. Это наверное самая страшная ошибка.
Большинство «читателей» темы похоже не знакомы с образованием. Если написали науч. работу и не упомянули оригинал, вас носом ткнут за отсутствие отсылки на оригинал. Если защищаете автора статьи, то он не чист на руку, если защищаете автора перевода, то тоже всё печально, если он не в состоянии сравнить статьи. Гордость не позволяет?
Минусаторы показывают, насколько они не в состоянии анализировать. Мне на минусы плевать, мне тут похоже делать совсем нечего.
Ну, пожалуй хватит. Это было скучно, но забавно для наблюдения рефлексии. ;)
Думать не пробовали?
1 nodemon (Ошибка десятая: не использование программ-диспетчеров)
2 Blocking the event loop (Ошибка первая: блокирование цикла событий)
3 Executing a callback multiple times (Ошибка вторая: вызов колбэка более одного раза)
4 Callback Hell (Ошибка третья: глубоко вложенные колбэки)
5 Creating big monolithic applications (Ошибка четвёртая: рассчитывать, что колбэки будут выполняться синхронно)
6 Poor logging
7 No tests
8 Not using static analysis tools
9 Zero monitoring or profiling
10 Debugging with console.log (Ошибка девятая: использование Console.log для отладки)
Притянутое за уши (высосано для отличий):
Ошибка пятая: присвоение “exports” вместо “module.exports” — (в js разве по другому? при чем тут nodejs? Таких ошибок можно еще море навыдумывать и все будут в js)
Ошибка седьмая: предполагать, что все числа целочисленные (туда же, привет js)
Ошибка восьмая: игнорирование преимуществ потоковых API (шо, nodejs?)
Про это даже писать не стоило. Это из разряда КЭП.
Ошибка шестая: генерация ошибок внутри колбэков () — единственная отличительная ошибка. Про неё стоило написать подробно, но автор не способен похоже. Игнорировать логирование, вообще позор. Это наверное самая страшная ошибка.
Большинство «читателей» темы похоже не знакомы с образованием. Если написали науч. работу и не упомянули оригинал, вас носом ткнут за отсутствие отсылки на оригинал. Если защищаете автора статьи, то он не чист на руку, если защищаете автора перевода, то тоже всё печально, если он не в состоянии сравнить статьи. Гордость не позволяет?
Минусаторы показывают, насколько они не в состоянии анализировать. Мне на минусы плевать, мне тут похоже делать совсем нечего.
Ну, пожалуй хватит. Это было скучно, но забавно для наблюдения рефлексии. ;)
Думать не пробовали?
+2
Минусаторы сбежали из ВКонтакта. Мы здесь не о них. Плюсы и минусы ставят за «котиков» — это я уже заметил.
Совпадение на 60%. Согласен, я был не прав.
Статья — не украдена, но такой большой процент заимствования нужно сопровождать ссылкой.
Учитывая качество статьи (пресловутая притянутость за уши), я не исключаю, что автор мог тупо не знать о другой статье.
Ошибки
2 Blocking the event loop (Ошибка первая: блокирование цикла событий)
3 Executing a callback multiple times (Ошибка вторая: вызов колбэка более одного раза)
5 Creating big monolithic applications (Ошибка четвёртая: рассчитывать, что колбэки будут выполняться синхронно)
сами по себе достаточно очевидны, могли быть выявлены независимо.
Остаётся 30% — всё равно много.
UPD:
Кстати, с трудом себе представляю человека, способного совершить ошибки
3 Executing a callback multiple times (Ошибка вторая: вызов колбэка более одного раза)
5 Creating big monolithic applications (Ошибка четвёртая: рассчитывать, что колбэки будут выполняться синхронно)
Совпадение на 60%. Согласен, я был не прав.
Статья — не украдена, но такой большой процент заимствования нужно сопровождать ссылкой.
Учитывая качество статьи (пресловутая притянутость за уши), я не исключаю, что автор мог тупо не знать о другой статье.
Ошибки
2 Blocking the event loop (Ошибка первая: блокирование цикла событий)
3 Executing a callback multiple times (Ошибка вторая: вызов колбэка более одного раза)
5 Creating big monolithic applications (Ошибка четвёртая: рассчитывать, что колбэки будут выполняться синхронно)
сами по себе достаточно очевидны, могли быть выявлены независимо.
Остаётся 30% — всё равно много.
UPD:
Кстати, с трудом себе представляю человека, способного совершить ошибки
3 Executing a callback multiple times (Ошибка вторая: вызов колбэка более одного раза)
5 Creating big monolithic applications (Ошибка четвёртая: рассчитывать, что колбэки будут выполняться синхронно)
0
>>мы злодеи
Да, да, злые диванные боевые хомяки. ;)
Да, да, злые диванные боевые хомяки. ;)
-6
Math.pow(2, 53) | 1 === 0 // true
Вот здесь не совсем понятно… Почему здесь будет
true
? OR
c 1 всегда должен давать 1 не зависимо от другого аргумента. Консоль хрома выдает результат:Math.pow(2, 53) | 1 === 0
0
Math.pow(2, 53) | 1
1
Или это какая-то особенность именно Node.js?
0
Sign up to leave a comment.
10 основных ошибок при разработке на Node.js