2016-03-23 5 views
49

Возможно, это тривиальный вопрос.Vuejs - Скрыть синтаксис vuejs при загрузке страницы

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

Vue js syntax appear in browser

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

ответ

81

Вы можете использовать v-cloak директивы, которая будет скрывать VUE экземпляра, пока компиляция не завершится

+0

в api говорит: '[v-cloak] { дисплей: нет; }

{{ message }}
' Это означает, что я должен добавить атрибут' v-cloak' в каждый элемент, который я хочу скрыть? – antoniputra

+8

Просто к главному 'App' div должно быть хорошо – Jeff

+0

@Jeff ах, я только что знал об этом. ну 'v-cloak' кажется лучшим ответом. спасибо @Gus !! – antoniputra

30

я прикрепил следующий codepen. Вы можете видеть разницу с v-cloak и без.

<div id="js-app"> 
[regular]Hold it... <span>{{test}}</span><br/> 
[cloak]Hold it... <span v-cloak>{{test}}</span> 
</div> 

http://codepen.io/gurghet/pen/PNLQwy

+1

да, я получил это ... спасибо, ваш кодекс поможет вам новым посетителям. – antoniputra

+0

вы все еще получаете первый {{test}}, пока vuejs загружается, поэтому его не является идеальным ответом – twigg

+7

@twigg Вот в чем смысл. Первый показывает обычный тег, а второй показывает скрытый тег, используя атрибут 'v-cloak'. –

0

Вы можете переместить любой рендеринг в простой оберткеcomponent. Инициализация VueJS, например. новый Vue (....) не должен содержать HTML кроме этого единственного компонента-обертки.

В зависимости от настройки у вас может быть даже <app>Loading...</app>, где приложение - это компонент оболочки с любой загрузкой HTML или текста, который затем заменяется при загрузке.

1

Как было предложено другими пользователями с использованием v-cloak, это правильное решение. Однако, как сказал DelightedD0D, это неудобно. Простым решением является добавление CSS в псевдоселектор ::before директивы v-cloak.

В вашей дерзости/меньше файл что-то вдоль линий

[v-cloak] > * { display:none; } 
[v-cloak]::before { 
    content: " "; 
    display: block; 
    position: absolute; 
    width: 80px; 
    height: 80px; 
    background-image: url(/images/svg/loader.svg); 
    background-size: cover; 
    left: 50%; 
    top: 50%; 
} 

Конечно вы должны предоставить действительный и доступный путь к погрузчику изображению. Это что-то вроде.

enter image description here

Надеется, что это помогает.

Смежные вопросы