Тема: Vue' thread 1
Показать сообщение отдельно
  #16 (permalink)  
Старый 07.07.2016, 10:20
Аватар для kobezzza
Быдлокодер;)
Отправить личное сообщение для kobezzza Посмотреть профиль Найти все сообщения от kobezzza
 
Регистрация: 19.11.2010
Сообщений: 4,338

Цитата:
тут не столько ошибки, сколько вам придется еще раз обновляться до стабильной версии, т.к. доки по альфе скорее всего не будет. А изменения между альфой и стабильной версией очень вероятны. Чем больше будет этих изменений, тем больше боли)
Автор всегда пишет подробный ченджлог, поэтому тут проблем у меня не возникало никогда.

Цитата:
если не затруднит, перечисли значемые нововведения на твой взгляд
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
__________________
kobezzza
code monkey

Последний раз редактировалось kobezzza, 07.07.2016 в 11:03.
Ответить с цитированием