Ruslan_xDD,
так трансляторы в помощь) |
Ruslan_xDD, в простом Object в качестве ключа может выступать только строка, а в Map или Set любое значение, включая объекты и это просто ну мега круто, юзаю уже больше года - не нарадуюсь.
Например, на сервере (в ноде), нужно добавлять авторизованных юзеров в специальную таблицу и иметь быстрый способ проверки: // WeakMap выбран потому, чтобы при разрыве соединения клиента с сервером, // оно автоматически удалилось бы и из map var map = new WeakMap(); createServer(function (req, res) { ... // req - это специальный объект-подключения юзера, экземпляр класс ReadStream var user = map.get(req); if (!user ) { map.set(req, { sessionId: ..., ... }); } }); Цитата:
Для фич вроде let или arrow function давно использую транслятор и сейчас абсолютно все мои разработки на ES6, а ES5 хочу забыть как страшный сон. https://github.com/6to5/6to5 *** Конечно, многие вещи можно было делать и в ES5/3, и кажется зачем учить новое если есть старое, но это не правильный подход, ибо ES6 позволяет делать вещи объективно лучше и проще, а чтобы понять "зачем эти фичи", то нужно просто начать их использовать и понимание придёт. |
kobezzza, это всё очень интересно, заюзаю как-нибудь, когда время придёт. :)
Слушай, а как трансляторы работают? Ведь если я напишу let в старом браузере, то это будет ошибка. Полагаю, трансляторы просто парсят скрипты, заменяя let на var и т.д.? А то я в этом пока не очень понимаю. :-? Или транслятор - это вообще не то, о чём я подумал? |
Ruslan_xDD,
а на вопрос отвечает Safort из команды знатоков ![]() Цитата:
|
Ruslan_xDD, как уже сказал выше Safort, то трансляторы парсят твой код, а затем преобразуют его в ES5/3. По такому же принципу работают TypeScript, CoffeeScript и т.д.
https://6to5.org/repl.html - тут можно поиграться, например, function foo() { var a = 1; if (a) { let a = 2; let b = () => this; } } Превратится в function foo() { var _this = this; var a = 1; if (a) { var _a = 2; var b = function () { return _this; }; } } |
Цитата:
... я уже перестал с нового года кофе пить так же... *глоток кофе* |
kobezzza, очень хочу поизучать CoffeeScript, но пока не очень понимаю, он только в Node.js? На клиенте можно? Если да, то как его подключать? А то гугл не даёт точных ответов, поэтому не могу вникнуть. :-?
|
Цитата:
1) Ты пишешь код на языке А; 2) Затем вызываешь транслятор и сохраняешь результат, который уже и используешь. Для автоматизациии процесса трансляции можно использовать FileWatcher-ы в IDE или системы сборки, например, Gulp или Grunt. http://www.youtube.com/watch?v=TspTo...ature=youtu.be - это видео я сделал для своего языка Snakeskin, но принцип одинаков для всех транслируемых языков. |
kobezzza, всё-таки значит я не так понимал, спасибо. :)
Я думал, что работает по такому принципу: В хейдере подключаем, допустим, coffee: <script src="CoffeeScript.js></script> Потом на странице где нибудь пишем скрипт: <script type="text/coffeescript"> код </script> И он на ходу парсится и эвалится в JS. Спасибо за разъяснения, теперь более-менее понятно, что такое трансляторы. :) |
Так как ты предлагаешь тоже можно, но сам понимаешь, что такой подход уж слишком избыточен и затратен, по этому этап трансляции обычно делают предварительно.
|
чувствую, хитом этого года станет "старики забивают на гугл и получают ответы от Safort-а и kobezzza-ы" :D
рони, Ruslan_xDD, стать что ли следующим - ребят, мне влом гуглить, объясните, плиз, как по спецификации ecmascript написать транслятор javascript, а то я не очень это себе представляю :thanks: |
Цитата:
Я просто никогда не лез в это дело и не работал с Node.js, только с PHP. Поэтому, в этом не очень шарю. Но надо будет как-нибудь поэксперементировать с этим, к тому же, в большинстве требований работы во всяких конторах сейчас это очень нужно. :) |
bes,
Цитата:
Предполагаю, что тут так же как и для других языков: лексический анализатор, синтаксический анализатор и т.д. |
Цитата:
1) Не правильный: на регулярках реплейсишь синтаксис и преобразуешь его в нужный, например, так работает мой костыль https://github.com/kobezzza/NeJS (зато я написал его за вечер, уж очень хотелось юзать ES6 фичи) :) По похожему принципу работает движок макросов http://sweetjs.org/ 2) Правильный: строишь AST по исходному коду (для этого уже также написано много либ, например, Accorn или Esprima), работаешь с ним, а потом преобразуешь его в конечный код. Самый лучший на данный момент транслятор - это https://github.com/6to5/6to5, поэтому всем рекомендую юзать именно его. *** Если рассматривать мой https://github.com/kobezzza/Snakeskin, то он реализует препроцессор в виде конечного автомата. |
kobezzza, ну всё, завтра свой транслятор выпущу. :D Только я пока не придумал, что он будет делать. :haha:
|
Цитата:
|
Если открывать html страницу в webstorm то он использует локальный сервер, какой сервер он использует?
|
Подскажите пожалуйста легковесый шаблонизатор с интеграцией в галп, который умеет инклуды.
jade не катит, там нельзя писать обычный html. Онли инклуды, так даже лучше :) https://www.npmjs.com/package/gulp-html-tag-include |
l-liava-l,
https://github.com/kobezzza/Snakeskin А если нужны чисто инклуды, то https://github.com/kobezzza/Monic |
kobezzza,
Его уже рассматривали но решили не брать, так же как и джейд. Ибо в команде привыкли к закрывающим тэгам и скобкам |
Цитата:
Т.е. поддерживается и тот синтаксис, который тебе нужен {template foo()} <b>Старый добрый HTML</b> {/template} Более того, классический синтаксис можно совмещать с Jade-Like - template foo() <b>Старый добрый HTML</b> |
npm install --global 6to5
как находится нужный пакет? идёт обращение к определённому каталогу на сервере и ищется в его корне каталог с именем 6to5? если сервер загибается, то пакет не установить, так? как вообще они там на этот счёт договорились? меня просто по незнанию пока смущает, что все эти менеджеры куда-то обращаются, чего-то скачивают без моего ведома, я на w7, поставил linux mint, с интернетом там все пакеты неплохо сами в скачиваются и ставятся, хотел поставить локально какой-то пакет, так и не понял, где скачать из официального источника, а не хз откуда, чтобы в итоге получилось, что поставил ровно тоже, что и при интернете ставится |
Цитата:
Цитата:
|
Вопрос по git есть проект на github пытаюсь загрузить обновление делаю
git remote add origin http://url git add . git commit -m 'commit' git push origin master Получю такую хрень Цитата:
|
cyber, а ты git pull делал?
|
kobezzza, да
|
bes,
Цитата:
Ну и прописывает его в переменной окружения(или как там она называется), чтобы он был глобально доступен. А если локально устанавливаешь, то оно устанавливается в ту папку, в которой ты сейчас находишься. На сколько я знаю, npm особо не сорит в ФС. |
Цитата:
я правильно написал? Цитата:
поэтому группа поддержки старается сделать так, чтобы он никогда не загнулся (я не в курсе, я лишь предполагаю, в этом их договорённость?) самое логичное, что приходит в голову, - конкретно для npm, что при таком способе установки, когда для npm указывается параметром лишь имя модуля, это то, что просто в корне каталога, к которому идёт обращение, лежит каталог с тем же именем, может быть у них там более сложная система, маппируют, адреса на каталоги, я не знаю, поэтому и спрашиваю Цитата:
при "автоматической" установке подгружаются ещё всякие зависимые вещи, то есть ставлю одно, а для работы этого одного требуется ещё то-то и то-то и мне это всё подгружается и ставится, а когда интернета, нет как я мне всё это проконтролировать, по каким ссылкам всё это скачать и не из левого источника пытался по адресам, которые выводятся в консоли при установке, но в тот раз у меня так ничего и не вышло в общем вопрос по базовым концепциям |
Цитата:
|
С праздниками, пипл!
NewElem.style.height='2em'; console.log(" NewElem.width " + NewElem.style.width ); // Возвращает тоже 2em, издевается! Хочу задавать в емах, а получать в пикселях, есть простой способ в одну-две строчки? Спс. |
bes,
Цитата:
[папка_проекта]/node_modules/[твой_модуль]/node_modules/(модули-зависимости) Как я предполагаю, достаточно один раз загрузить модуль локально и при отсутствии сети его можно просто скопировать в папку с новым проектом. Цитата:
Цитата:
Как-то я говорил про ДДОС на их сервера, вот тот твит https://twitter.com/npmjs/status/532718519671345152 там же постится актуальная инфа про npm. |
Цитата:
в тот раз на linux mint был не модуль npm, при его установке ещё куча всего подтянулось для системы, что я голову сломал, но так и не завёл его на другой машине без интернета |
Цитата:
console.log(" NewElem.clientWidth " + NewElem.clientWidth ); // 32 console.log(" NewElem.offsetWidth " + NewElem.offsetWidth ); // 32 Разница между ними объясняется на W3Schools. |
Обновил старый скрипт https://github.com/cyberua/modalJS )
|
Яблочники, создавшие канвас - козлы!
Размер канваса нельзя задать в цсс, только хтмл аттрибутом, иначе он их не кушает и всё перекособочивает. Цитата:
А хтмл не даёт задать размер в емах. Вот такие предлагаются окольные пути. |
ssadfaf,
начнём с того, что Эппл предложили канвас, а не стандартизировали его. И закончим на том, что пиксель CSS !== обычному пикселю. Такое, конечно, у многих бывает, но лучше сначала разберись в проблеме, а потом обзывай "козлами". |
Safort, я их по-доброму пожурил.
Я не понимаю, что ты сказал о разных пикселях (типа, размер зависит от того, продаём мы их или покупаем?), но в цитате речь идёт о другом. Я только начал знакомиться с канвасом и сразу же столкнулся с этой дичью. Задал канвасу размер цссом: NewElem.style.width='1em'; А он пургу рисует, при том, что я первый раз общаюсь с канвасом. Тупо копирую с примеров, а получается не то. При этом я заметил, что картинки получаются хоть и неправильные, но подобные друг другу, т.е. при увеличении размера через цсс в два раза картинка остаётся неправильной, но такой же. Там наверху по-английски написано, что внутренние координаты канваса определяются его размерами, а если они заданы некорректно, то он устанавливает внутренний размер (и координаты, соотв.) как 300 на 150 точек, которые как бы пиксели. Т.е., получив размеры через ЦСС, он их не понимает и считает некорректными, и получается пурга. Размер самого канваса через ЦСС будет отрисован корректно (хоть 10ем*10ем, хоть 16пх*200пх), а внутри он всё равно будет рисовать, разбив себя на 300*150 точек. Т.о, если я хочу привязать размер канваса к относительным величинам, то делаю так: NewElem2.style.width='1em'; //какой-то элемент var x100 = NewElem2.clientWidth; var NewElem = window.document.getElementById(ElemIdName); // это канвас NewElem.width = x100; NewElem.height = x100; И тогда всё ОК. |
ssadfaf,
Цитата:
|
Safort, спс.
Я правильно понимаю, что в этом топике можно задавать нубские вопросы? Чтобы не плодить темы с некорректными названиями и без должного понимания конечной цели? Например: Хотелось бы заготовить 4-6 небольших картинок (+, -, загрузочные часики, соединительные линии) для использования в treeview. Т.е. уникальных объектов будет немного, а вот их отображений на странице может быть реально много. 1. Как-то не заметил, что SVG-формат дружелюбен к Джаваскрипт. Мне, как нубу, сразу стало непонятно, что сразу надо привязываться к каким-то сторонним ресурсам, чтобы определить какие-то неймспейсы, а я ещё их (неймспейсы) не проходил. Стоит ли мне сразу грузиться SVG или обратиться к канвасу? 2. С канвасом нубу (мне) вроде легче начинать, но будет ли хорошо, если на странице канвасов будет десятки или сотни (пусть и одинаковых)? Задумка у меня такая - минимум отдельных файлов, картинок, минимум статичного хтмл и цсс в файлах, максимум ЖС-кода. Или как-то можно нарисовать всё это с помощью ЦСС, заданном в ДжаваСкрипт-файле? |
Все зависимости модуля NPM качаются вместе с ним, аккуратно устанавливаются в отдельную папку и используются только им же, даже если модуль загружен глобально. Локальные модули спокойно копируются туда-сюда, глобальные, по сути, нужны для запуска через консоль.
Цитата:
|
Часовой пояс GMT +3, время: 05:13. |