Цитата:
|
Цитата:
|
FINoM,
Интересно, о чем речь то вообще идет? Что за "верхняя переменая"? |
newtimebigtime, см мои сообщения выше.
|
У меня было такое 2 раза. И было желарип использоват одно и то же мия потому чтт более подхлдящего названич я не моо пиидумать... если тлоьько поттить. Но тогда я осознал что подобное будет создавать неоднозначность для глаз. Видя то же имя я буду думать что там тм же сущность. НАПРИМЕР:
func = (token)-> allStrings = @tokens.every (token)-> token.isString ... Если функция еври будет сложнее и занимать почти все место функции фанк, то будет создаваться впечатление что token внутри еври и вовне это одно и то же. Несмотря на то что внктри еври ориринальный token не используется. |
Да) я купил сенсорный телнфон
|
Цитата:
|
Цитата:
|
EmperioAf,
я вообще удивлён, что такой умный чувак как Зоракс кодит на CS. Но никто не идеален) |
Цитата:
Цитата:
Какие недостатки кофескрипта по сравнению с es6 ты знаешь? |
ТОТ_САМЫЙ,
Цитата:
Цитата:
|
Цитата:
У CS, в разы лучше синтаксис чем a ES6, большее сообщество, умные чуваки, грамотно разрабатывающие стандарт и, что самое главное, CS зависим от JS и не сможет нормально развиваться без JS, а JS развивается. |
Так ребят я не понимаю мне сравнение привести штоле раз вам не очевидно? Пофиг седня заверстаю страничку со сравнением если будет время.
|
В кофескрипте есть все что есть в ES6, но в ES6 есть не все что есть в CoffeeScript. Кто может поспорить с этим утверждением?
Генераторы, итераторы, аксессоры, прокси и прочая хрень - есть и в кофескрипте, и я искренне не понимаю что находится вместо мозга у тех кто заявляет что в ES6 это есть а в кофи нет. Они видимо вообще не знают что кофескрипт транслируется в яваскрипт)))) видимо туго у людей с головушкой то) func = -> yield do get class Cat Object.defineProperty @prototype, 'name', get: -> alert 'NAME!!!' new Cat().name compile to: var Cat, func; func = function*() { return (yield get()); }; Cat = (function() { function Cat() {} Object.defineProperty(Cat.prototype, 'name', { get: function() { return alert('NAME!!!'); } }); return Cat; })(); new Cat().name; |
Можно сахар написать (и можно его даже написать не засирая прототип, просто тогда надо будет писать set @, 'name' а не @set 'name')
Function.prototype.get = (name, getter)-> Object.defineProperty @prototype, name, set: Object.getOwnPropertyDescriptor(@prototype, name)?.set get: getter configurable: yes enumerable: yes Function.prototype.set = (name, setter)-> Object.defineProperty @prototype, name, get: Object.getOwnPropertyDescriptor(@prototype, name)?.get set: setter configurable: yes enumerable: yes class Cat @get 'name', -> alert 'GET NAME!!!' @set 'name', -> alert 'SET NAME!!!' (new Cat).name (new Cat).name = 22 compile to: var Cat; Function.prototype.get = function(name, getter) { var ref; return Object.defineProperty(this.prototype, name, { set: (ref = Object.getOwnPropertyDescriptor(this.prototype, name)) != null ? ref.set : void 0, get: getter, configurable: true, enumerable: true }); }; Function.prototype.set = function(name, setter) { var ref; return Object.defineProperty(this.prototype, name, { get: (ref = Object.getOwnPropertyDescriptor(this.prototype, name)) != null ? ref.get : void 0, set: setter, configurable: true, enumerable: true }); }; Cat = (function() { function Cat() {} Cat.get('name', function() { return alert('GET NAME!!!'); }); Cat.set('name', function() { return alert('SET NAME!!!'); }); return Cat; })(); (new Cat).name; (new Cat).name = 22; Можно вот так писать для красоты и.т.п. class Cat get Cat, 'name', -> alert 'GET NAME!!!' set Cat, 'name', -> alert 'SET NAME!!!' |
ТОТ_САМЫЙ, в своём коде ты: расширяешь прототип встроенного конструктора, определяешь дескриптор дважды, вызывая 4 функции (getOwnPropertyDescriptor x 2, defineProperty x 2), упоминаешь имя класса несколько раз (get Cat, 'name'), оставляя почву для ошибок при переименовании класса. Ну ок, если ты считаешь, что эти костыли - отличное решение. Кто-то на php прожит и ничего, все живы.
|
FINoM, нет я не расширяю. Ты просто тупой. Перечитай. Ты вообще не читал походу.
Вызываю дескриптор дважды и нет причин этого не делать. Я мог единожды но мне так больше нравится. Нет я не упоминаю имя класса гескоьько раз. Ты просто тупой. Перечитай. Когда я определяю статические методы я тоже упоминмю. Но ты тупой. Ты это игнорируешь. Нет причин не упоминать имя класса несколько раз. Вместо имери класса можно писать @ но тупой, текст не читал и этого не знаешь. Что из того что там написано костыль, если то что там написано это сахар? Ты вообще читал тпкст или только код сиотрел? Если второе то ты тупой. Я вообще не понимпю, на этом форуме не иупые люди то вообще остались, кроме кобеззы??? |
FINoM,
Учитывая что ты не такой умный я проговорю очевидность: то чть функция дефайна вызывается 2 раза это не минус так как данный участок кода(декларация классов) не является горячим и не требует оптимизации и приоритет надо ттдавать абстракциям и сахарности. Но ты тупой и не понял 100% из того что я щас сказал. |
ТОТ_САМЫЙ,
![]() Господа модераторы, персонаж перешел на прямые оскорбления. Просьба отреагировать на это в соответствии с правилами форума. |
FINoM, ты прочитай че я написал и че ты напсиал. Ты пьяный штоле был? Ты вчитайся в буквы которые я пишу и как на это реагируешь ТЫ. Я говорю ему что @ и имя класса в теле класса это одно и то же и что мол для наглядности и красоты можно писать get ClassName а не get @
а он мне "Ты пишешь имя класса каждый раз из за чего возможно опечататься" ты че поехавший??? опечатывальщик хренов. ты сам то веришь в что говоришь? в ES6 статические всегда так и обьявляются и там можно опечататься? Ты если название функции где то пишешь много раз то МОЖНО ЖЕ ОПЕЧАТАТЬСЯ)!!!!! Купи мозг парень, просто купи мозг, и трезво воспринимай аргументы мои. п.с. ага, "тупанул @ прикинься троллем (с) FINoM" |
ТОТ_САМЫЙ, спокойнее выражайся, и дискуссия будет конструктивнее.
FINoM, спокойно, держим руку на пульсе) |
|
FINoM, Я могу назвать около 20 преимуществ кофи над es6. Я Думаю в этом сомнений нет. НО назови ХОТЬ ОДНО преимущество ES6 над кофи?
|
Цитата:
Цитата:
|
Цитата:
Цитата:
addModulePath = (type, path)-> (modules[type] or= []).push(path) var addModulePath; addModulePath = function(type, path) { var base; return ((base = modules)[type] || (base[type] = [])).push(path); }; или хотя бы так: number = 4 alert 'ololo' if 3 < number < 9 var number; number = 4; if ((3 < number && number < 9)) { alert('ololo'); } ну или ХОТЯЯЯЯЯ БЫ так: alert User?.name ? 'Ашот' var ref; alert((ref = typeof User !== "undefined" && User !== null ? User.name : void 0) != null ? ref : 'Ашот'); |
Цитата:
Цитата:
На... let addModulePath = (type, path) => (modules[type] || (modules[type] = [])).push(path); Хотя читаемость ужасна. Я бы сделал так: function addModulePath(type, path) { if (!type in modules) { modules[type] = []; } modules[type].push(path); } |
Цитата:
|
Цитата:
а потом ввели оператор q++ и ты такой "читаемость ужасна" а во вторых if (!(type in modules)) { modules[type] = []; } } А если тебе нужно этот массим получить в переменную а потом с ним играться? modules = @modules[type] or = [] modules.push() modules.length в ЯС это будет вот такой ужос: if(!this.modules[type]){ this.modules[type] = [] } modules = this.modules[type] modules.push() modules.length или даже такой: modules = this.modules[type] || (this.modules[type] = []) modules.push() modules.length В общем я не буду учавствовать в дискуссии на тему сравнения синтаксиса кофескрипта и яваскрипта. Каждому дураку очевидно что это небо и земля и что яваскрипт не сравнится с кофескриптом. Если у тебя есть какие-то сомнения то погугли про кофескрипт. п.с. это каким надо быть не грамотным чтобы начать ДОКАЗЫВАТЬ ЧТО у кофескрипта НЕ лучше синтаксис)!! ЭТО ЖЕ ЖЕСТЬ)!!! ЕГО И СДЕЕЕЛАЛИ потому что лучше синтаксис!! Его ДЛЯ ЛУЧШЕГО СИНТАКСИСА И ИЗОБРЕЛИ МЛЯТЬ)!!!! Как можно не знать таких вещей? ЧТО же до модулей? Cat = require 'modules/Cat' module.exports = -> new Cat Я чет не врубаю, ты не знал что так можно писать? на node вообще штоле не писал? |
Иными словами я тебе привожу пример сахара а ты говоришь мне "НУ И ЧТО ЭТО МОЖНО И БЕЗ САХАРА ДЕЛАТЬ ТАК ЧТО САХАР НЕ СЧИТАЕТСЯ" логкиа у тебя есть нет?
Я ТЕБЕ И ПРИВОЖУ ЧТО МОЖНО ПИСАТЬ НЕ ВОТ ТАК this.modules[type] || (this.modules[type] = []) А ВОТ ТАК @modules[type] ||= [] Ты будешь сильно удивлен но я даже 5% фишек кофескрипта не назвал) |
я уж молчу про это:
name = User?.getFullName?(My?.name) ? defaultName против: var name, ref; name = (ref = typeof User !== "undefined" && User !== null ? typeof User.getFullName === "function" ? User.getFullName(typeof My !== "undefined" && My !== null ? My.name : void 0) : void 0 : void 0) != null ? ref : defaultName; |
Цитата:
Цитата:
Цитата:
Цитата:
import Animal from "./animal"; export default class Cat extends Animal {}; Это наипростейший пример. В прошлом посте я дал ссылку на статью о ES6-модулях, там гораздо больше, если хочешь. Цитата:
Цитата:
|
Цитата:
Цитата:
Цитата:
что же касается модулей то раз мы компилим кофескрипт, то есть возможность так же закомпилить его модули в синтаксис ES6. Мы пишем модули в стиле commonjs а потом пропускаем через coffee транслятор а потом через какой нить другой плагин который модули конвертит. Гуглить его я за тебя не буду, хотя возможно и буду) я пока не вижу смысла это делать потому что ES6 нигде не поддерживается и конвертировать commonjs модули в ES6 модули чтобы потом пргнать через ES6 транслятор и они закомпилились в врапперы это тупость. Лучше сразу commonjs модули закомпилить во врапперы. или через браузерифай прогнать) То есть нативная система модулей ES6 НЕ выигрывает у кофескрипта, потому как и те и те модули нужно прогонять через транслятор и оборачивать во врапперы) |
Цитата:
Цитата:
Цитата:
Цитата:
Цитата:
|
Тред не читал, но могу сказать своё мнение, если кому интересно: мне очень нравится Coffee, но есть пару НО, из-за которых я его не юзаю:
1) Пинг между фичами JS в Coffee, т.е. грубо говоря расстраивает скорость обновления транслятора; 2) Отсутствие системы декларации и вывода типов, в JS хотя бы JSDoc есть, но тоже не фонтан - я сейчас говорю про поддержку ИДЕ и системы стат анализа кода. Очень жду ТС 2.0, т.к. там они обещали заимлементить весь ЕС6/7 + их мега система типов (в новом релизе 1.6 они например добавили пересечения типов и тай гуарды - это просто офигенно). Также присматриваюсь к Flow, но огорчает отсутствие бинарников под винду и отсутствие поддержки где ли кроме как в Атоме (плагин nuclide); 3) Сложнее найти разработчика в команду: отталкиваюсь опять таки от своего опыта. Это пожалуй основное. Но повторюсь: мне очень нравиться кофескрипт за свою простоту и лаконичность. |
Цитата:
|
kobezzza, кофескрипт это просто синтаксис, сахар, и набор сниппетов. По сути можно написать кофи версию которая будет транслироваться в тайпскрипт 2 например. Ну помнишь мы хотели убиратор скобочек написать) ну вот типа того. В кофи есть парсер в AST и транслятор из него в javascript. Можно транслировать из AST в любой другой язык. Я надеюсь они оставили возможность для расширения кофескрипта? Ну то есть мы хотим оставить всякие фишки трансляции но заменить некоторые чтобы синтаксис был не es5 а typescript или es6. Исходники их кто нибудь смотрел)?
Не, я как бы в юишку в {{выражения}} уже разный сахарок из кофескрипта стырил) но мне не хочется весь кофескрипт переписывать) |
Цитата:
|
FINoM, не ну он правда тупит и еще дерзит из-за своей тупости) че я то деликатничать должен?
п.с. Javascript - прога чтобы в браузерах рисовать. ©Livaanderiamarum статус то поменяй на (с)Maxmaxmaximus Цитата:
|
Цитата:
|
ТОТ_САМЫЙ, они тупые, он тупой, вы все тупые. Дикий ты какой-то. А на деле, я указал на то, что ты противоречишь сам себе. Т.е ты пустослов. Это из за этого я тупой?=) Мне тебя жаль.
А если ты не пустослов, то сдержи слово насчет 20 плюсов и обоснуй мою тупость в прошлом посте. Либо можешь упустить второе, если скажешь, что ты "ступил". |
Часовой пояс GMT +3, время: 05:25. |