Цитата:
|
тут не столько ошибки, сколько вам придется еще раз обновляться до стабильной версии, т.к. доки по альфе скорее всего не будет. А изменения между альфой и стабильной версией очень вероятны. Чем больше будет этих изменений, тем больше боли)
|
Автор всегда пишет подробный ченджлог, поэтому тут проблем у меня не возникало никогда.
Цитата:
|
если не затруднит, перечисли значемые нововведения на твой взгляд
|
1) Компилируемые шаблоны и прогрессивный серверный рендеринг
2) Функциональные шаблоны
3) Иммутабельные входные параметры компонентов (теперь компонент может менять только данные обьявленые в data)
4) Отказ от DOM событий
5) Убрали двунаправленный биндинг
Вообще наблюдается уклон в сторону React. По мелочи много изменений, например, убрали методы $set и $get, и v-on на компоненте больше не слушает дом события, а только собственные события компонента. Больше нет $dispatch и $broadcast.
Часть функционала, нужного мне, я просто вернул используя гибкую плагинную архитектуру Vue, например, создал директиву v-e или аналог dispatch.
Вообще я использую Vue вместе со своей обёрткой, чтобы использовать классы и аннотации типов от Flow.
import iData from '../i-data/i-data';
import { PARENT_MODS } from '../i-block/i-block';
import * as tpls from './b-button.ss';
import { model } from '../../core/block';
@model(tpls)
export default class bButton extends iData {
/**
* Button type
*/
type: string = 'button';
/**
* Connected form id
*/
form: ?string;
/**
* Icon before text
*/
preIcon: ?string;
/**
* Icon after text
*/
icon: ?string;
/**
* Tooltip text
*/
title: ?string;
/** @override */
static mods = {
theme: [
PARENT_MODS,
'dark',
'dark-form',
'dark-link',
'dark-pseudo-link',
'link',
'pseudo-link'
]
};
}
Тут декоратор класcа model анализирует содержимое класса и создаёт компонент для Vue: геттеры и сеттеры становятся компьютедами, свойсва класса - пропсами, причём с учётом типа, методы и т.д. Работает super и шикарный автокомплит
Ну а шаблоны по прежнему генерит Snakeskin
- namespace [%fileName%]
- include '../i-data/' as placeholder
: rootTag = 'span'
- template index(params) extends ['i-data'].index
- block body
- super
: attrs = {}
- block attrs() =>
- block button
< button.&__button ref = button | :type = type | :form = form | :data-title = title | ${attrs}
< span.&__wrapper
< span.&__cell.&__pre-icon v-if = preIcon
< b-icon :value = preIcon | :init-mods = baseMods
< span.&__cell.&__value
< slot
< span.&__cell.&__icon v-if = icon
< b-icon :value = icon | :init-mods = baseMods
< span.&__cell.&__icon.&__progress
< b-progress-icon :init-mods = baseMods