grunt-es6-transpiler
Уже мозг сломал. Как настроить грунт, чтобы он увидел es6-transpiler?
~/grunt-es6/ Конфиги: package.json { "name": "es6", "version": "0.0.1", "devDependencies": { "grunt": "~0.4.4", "grunt-es6-transpiler": "0.1.0" } } Gruntfile.js module.exports = function(grunt) { grunt.initConfig({ "es6transpiler": { dist: { files: { 'js/es6/test.js': '/js/es5/test.es5.js' } } } }) grunt.loadNpmTasks('grunt-es6-transpiler'); grunt.registerTask('default',['es6transpiler']); }; Выдает ошибку: Local Npm module "grunt-es6-transpiler" not found. Is it installed? куда я только не ставил grunt-es6-transpiler и в ~/ и в ~/grunt-es6/ и в домашнюю директорию и в корень проекта, результат один: Local Npm module "grunt-es6-transpiler" not found. Is it installed? В чем может быть проблема? |
npm install ? |
Другие таски работают? Вообще таски обычно в node_modules хранят вместе с остальными модулями ноды.
Кстати, если юзаешь вебшторм, то удобней, имхо, настроить FileWatcher - я так и делаю. |
еще можно обратить внимание на эту строчку
Цитата:
|
Цитата:
|
XZ почему, но оно заработало ...
|
Забавно как оно
let b = 10; превращает в var b$0 = 10; :) |
|
kobezzza,
Спасибо, а в es6-transpiler.cmd что? Ссылка на es6toes5? |
Это инструкция для командной оболочки, они уже есть в npm-модуле, только .cmd - это для винды, для линя и мак там рядышком лежит простой файл без расширения.
На моём примере транслятор установлен глобально (npm i -g) и путь проложен к глобальной папке модулей, но вообще это без разницы. Если будешь настраивать локальный модуль, то смотри папочку .bin в node_modules. |
Я правильно понимаю, что запустить es6 код без компиляции его в es5 в браузере нельзя?
А то, что-то меня смутила строчка: Цитата:
|
Цитата:
Цитата:
|
Спасибо за консультацию, теперь стало все понятно.
|
Цитата:
|
Цитата:
|
а зачем он нужен этот es6 ?
Мне для написания es5 за глаза, да и то есть ненужные опции (вроде создания свойств с writable, enumerable, configurable - зачем это? только путаницу создает) Вроде как существуют правила написания кода (пусть даже негласные), которые со временем стараешься соблюдать (например переменные объявлять вначале скрипта). И тут на тебе, выходит новые es.. И уже переменные можно ставить где попало. Зачем? извините за оффтоп ) |
Затем что это очень удобно, одни arrow function чего стоят.
Лично у меня самые любимые и часто юзаемые штуки: 1) arrow function 2) строки-шаблоны 3) let переменные 4) rest параметры функций 5) spread-ы Назад к ecma5 уже никак не хочу) Цитата:
|
Цитата:
function func({param1: defValue, param2}) { … } func({param2: value}); Transpiler поддерживает? Когда с Traceur игрался, там работало. |
Цитата:
|
Цитата:
enumerable - попадет или нет в for..in и Object.keys configurable - можно ли удалять ключ или переопределять дескриптор writable - будет ли константой Да и аксессоры так назначать удобнее, ибо единый интерфейс для всех типов свойств. |
Цитата:
Не использовать let, который добавляет удобство и гибкость? Любой язык либо развивается под современные нужды, либо его забывают, как VBScript (http://msdn.microsoft.com/ru-ru/libr...=vs.85%29.aspx) es5 не тот язык на котором я хочу писать большие приложения. Неудобно. |
Например, чтобы забыть это хак(считаю это хаком):
function f(x, y, z) { } var args = [0, 1, 2]; f.apply(null, args); With ES6 spread you can now write the above as: function f(x, y, z) { } var args = [0, 1, 2]; f(...args); Есть очень много клевых фишек, для которых сейчас нужно городить велосипед. Уже весь код велосипедами завален и на велосипедах строится. В es5 нет возможностей для написания вменяемого кода, который бы не погряз в лапше. Пусть сейчас лапша будет на выходе, но я хочу писать на новом языке, а не на устаревшей недоделке, состоящей чуть более чем полностью из костылей. Не понимаешь зачем надо, посмотри на Python, на CoffeScript, может дойдет. |
Цитата:
Попробую угадать что ты имел ввиду: Помню в ANCI C 89/90 можно было объявлять переменные только в начале функции, но потом одумались и отменили это обязательное поведение. Однако если ты блочную область видимости, то {let ...} это от части "костыль". Не в том смысле что сейчас можно писать (считаю очень круто, что нашли компромисс в этом вопросе, т.к. долго не хотели принимать эту запись): for (let foo of object) ... А это: if (false) { var foo = 1; } alert(foo); Переменная foo хоть и имеет значение undefined, но как-никак, она определена и let в этом плане спасательный "костыль"! А вообще, мне кажется, что ты мало пишешь на JS раз не понимаешь зачем ES6 |
Цитата:
Речь о другом. Я не спорю, возможно обновления нужны! Но неужели трудно сесть и написать идеальный стандарт, а не следующую версию. Зачем это? Мне не хотелось бы, что js превращался в новый php, где обновления происходят довольно часто. php - это сервер, какую версию установил, с такой и работаешь! JS - это браузеры и как следствие несовместимости! Не хотелось бы видеть сначала es6, потом es7, потом es8 и тд.. Это не просто создает путаницу, но мешает формированию code style, да и в целом сказывается негативно на профессиональных качествах программистов ИМХО) |
Цитата:
Цитата:
|
Цитата:
Цитата:
К тому же новые версии стандарта - это не только новый синтаксис, а также улучшение стандартной библиотеки, которая сейчас в JS практически отсутствует. Цитата:
|
а где es6 изучать? Где он наиболее полно изложен?
тут все что нужно есть: http://kangax.github.io/es5-compat-table/es6/ ? |
Цитата:
|
Цитата:
Цитата:
Цитата:
|
Цитата:
На самом деле в es6 не появится чего-то нового, появится то, что есть уже в других языках. Думаю производительность тоже не изменится Проблема c js в том, что все обновления нужно внедрить везде где есть js. А так как те, кто пишет стандарты тоже люди и могут где-то что-то упустить из виду могут появляться разнообразные баги, так как все что не описано в стандарте будет реализовываться как этого захочет компания-разработчик. И будет в хроме одно, в ff другое. Думаю es6 возник под давлением конкурентов (дарт, тайпскрипт или как их там). Ну чтож будем изучать es6, хотя меня es5 всем устраивал! |
Цитата:
Для С++ сейчас внедряется стандарт С++ 14. Около месяца назад вышла Java 8 вводящая оч много изменений и уже полным ходом идёт работа над Java 9. Также недавно вышел Python 3.4. Цитата:
http://wiki.ecmascript.org/doku.php?...ony:generators http://wiki.ecmascript.org/doku.php?...ny:binary_data http://wiki.ecmascript.org/doku.php?..._maps_and_sets Фактически JS уже окончательно из языка веб-сценариев перерождается в язык общего назначения, как например Java или Python. Цитата:
|
Цитата:
Я в последнее время мало слежу за развитем С, однако про С++ могу рассказать куда больше. В 11-м году вышел новый стандарт С++11, и уже спустя некоторое время появился черновик С++14, который должен исправить недостатки предыдущей редакции (как было с ES 5.1). Следующий мажорный релиз должен состояться в 17-м году. Ты наверное не поверишь, но уже сейчас все основные компиляторы поддерживают большую часть будущего стандарта. http://clang.llvm.org/cxx_status.html http://gcc.gnu.org/projects/cxx1y.html ![]() kobezzza, Сложно что-то доказывать тем кто не понимает сути вопроса :) |
kobezzza,
нет, я имел в виду только С! Он же вроде не менялся? Вот кстати в случае с С и С++ - это действительно умное решение! Один язык процедурный, другой объектно-ориентированный! ИМХО, нужно было бы также сделать с js, потому что : Цитата:
Большинство с помощью js калькуляторы делает и всплывающие менюшки. Не думаю что тут нужна вся мощь Java или Python. |
Цитата:
Цитата:
Цитата:
Цитата:
*** Я уже больше года все свои проекты пишу на ES6 и возвращаться назад не планирую, а когда везде сделают нативную поддержку, то я просто выкину транслятор. |
Цитата:
|
Цитата:
а мог бы освоить Си! )) |
Цитата:
|
Цитата:
|
Цитата:
|
Цитата:
Объяснение простое: O(n) vs. O(log n) Цитата:
Цитата:
Цитата:
Конечно, если вся твоя работа - поюзать функционал готовых библиотек ради "калькуляторов и всплывающих менюшек", то тебе не то что es6, тебе и es5 нафиг не нужен. А не хочешь отставать - крути педали. :) |
Часовой пояс GMT +3, время: 06:08. |