Javascript-форум (https://javascript.ru/forum/)
-   Оффтопик (https://javascript.ru/forum/offtopic/)
-   -   JS.next(стандарты, фичи, движки) (https://javascript.ru/forum/offtopic/50248-js-next-standarty-fichi-dvizhki.html)

nerv_ 20.10.2015 09:56

Цитата:

Сообщение от trikadin
почему не можешь-то?

конечно же я так пробовал :) Если так делать, то ошибка
Цитата:

'import' and 'export' may only appear at the top level
---

Цитата:

Сообщение от FINoM
Можешь пояснить? Что происходит при импорте этого модуля? Скрипт "ждет" пока коллбек не сработает?

именно это и хочу. К сожалению, пока ничего не получилось.
В веб-паке есть лоадеры:
Цитата:

bundle: Wraps request in a require.ensure block (callback)
promise: Wraps request in a require.ensure block (promise)
async-module: Same as bundle, but provides a way to handle script loading errors. Wraps request in a require.ensure block (callback, errback)
http://webpack.github.io/docs/list-o...html#packaging

но, пока ничего не получилось.

FINoM 20.10.2015 10:05

nerv_, а почему бы не инициализировать приложение после срабатывания коллбека? Это не то, что ты хочешь, но проблему с импортами решит.

nerv_ 20.10.2015 10:24

Цитата:

Сообщение от FINoM
а почему бы не инициализировать приложение после срабатывания коллбека? Это не то, что ты хочешь, но проблему с импортами решит

я думал об этом. Однозначно решит. Просто это будет костылем. Я могу его поставить один раз, но делать это постоянно не имею желания :)

trikadin 20.10.2015 14:21

nerv_, затупил, да. Тогда так:

export let GeoObject;

ymaps.ready(() => {
    GeoObject = class GeoObject extends ymaps.GeoObject {
        /**
         * @param {Object} [feature]
         * @param {Object} [options]
         * @see [url]https://tech.yandex.ru/maps/doc/jsapi/2.1/ref/reference/GeoObject-docpage/[/url]
         */
        constructor(feature, options) {
            super(feature, options);
        }
    };
  
    console.log('GeoObject', GeoObject);
});


Немного многословнее, но это не костыль, а норм практика.

trikadin 20.10.2015 14:23

Цитата:

Сообщение от nerv_
я думал об этом. Однозначно решит. Просто это будет костылем. Я могу его поставить один раз, но делать это постоянно не имею желания

Да ладно, нормально это. У меня на сервере, скажем, сначала инициализируется DB (классы моделей), потом -- контроллеры (тоже классы).

nerv_ 20.10.2015 14:29

допустим. А если я захочу унаследовать от GeoObject что-либо еще? :)
т.е. буду импортить GeoObject в другой модуль? Я получу undefined?

Вопрос сводится к асинхронному es6 импорту/экспорту

trikadin 20.10.2015 14:57

nerv_, почитай мою статью :lol:

Если ты в другом модуле сделаешь
import { GeoObject } from './GeoObject';


то у тебя создастся биндинг на [[ExportsObject]].GeoObject. И в момент, когда значением переменной GeoObject станет класс GeoObject, то и значением [[ExportsObject]].GeoObject станет класс GeoObject. Но в прикладном смысле -- да, ему точно так же придётся ждать, пока у GeoObject появится значение (т. е. ждать инициализации ymaps). Я бы на твоём месте подождал бы этого на глобальном уровне (на уровне точки входа в приложение), а уже потом начинал бы импортить модули, которым нужен ymaps.

Цитата:

Сообщение от nerv_
Вопрос сводится к асинхронному es6 импорту/экспорту

Ты можешь использовать System.loader, но это пока жуткий драфт :С

Safort 04.11.2015 19:10

Кароче, посоны, Object.observe выпиливают https://mail.mozilla.org/pipermail/e...er/044684.html

FINoM 04.11.2015 19:15

Цитата:

Сообщение от Safort
Кароче, посоны, Object.observe выпиливают https://mail.mozilla.org/pipermail/e...er/044684.html

Сам я не большой поклонник О.о, но не понимаю, чем он им так не угодил. Они выпилили фичу, но не дали никакой альтернативы. Теперь нет ни одной нативной функции, которая слушает изменения всех свойств объекта. Прокси не считается.

devote 04.11.2015 19:19

Цитата:

the feature is used on 0.0169% of Chrome pageviews, according to
chromestatus.com
Такие интересные, а они что ожидали что эту возможность будут сейчас юзать на 100% что ли? Оно и понятно, ведь как можно юзать то, что есть только в хроме.


Часовой пояс GMT +3, время: 20:48.