2016-09-14 41 views
22

Stosując Vue (^ 2.0.0-rc.6) + Browserify, wejście jest index.js:Vue JS 2.0 nie renderuje niczego?

import Vue from 'vue' 
import App from './containers/App.vue' 

new Vue({ // eslint-disable-line no-new 
    el: '#root', 
    render: (h) => h(App) 
}) 

App.vue:

<template> 
    <div id="root"> 
    <hello></hello> 
    </div> 
</template> 

<script> 
import Hello from '../components/Hello.vue' 
export default { 
    components: { 
    Hello 
    } 
} 
</script> 

<style> 
body { 
    font-family: Helvetica, sans-serif; 
} 
</style> 

Hello.vue:

<template> 
    <div class="hello"> 
    <h1>\{{ msg }}</h1> 
    </div> 
</template> 

<script> 
export default { 
    data() { 
    return { 
     msg: 'Hello Vue!' 
    } 
    } 
} 
</script> 

Pusty biały ekran, czy coś przeoczyłem?

EDIT:

HTML wejście jest tylko <div id="root"></div>, brak błędów w dziennikach konsoli i jestem całkiem pewny Hello.vue jest ładowany od console.log('test') że na konsoli pojawia się plik.

EDIT 2:

Znaleziony błąd:

[Vue warn]: You are using the runtime-only build of Vue where the template option is not available. Either pre-compile the templates into render functions, or use the compiler-included build. (found in anonymous component - use the "name" option for better debugging messages.)

Czy to znaczy, że muszę użyć rozwiązanie WebPACK? Nie można użyć standardowego HTML?

ROZWIĄZANIE: importu Vue z 'vue/dist/vue.js'

+2

Wystarczy, aby się upewnić. Podczas korzystania z pakietu internetowego zaleca się zmianę konfiguracji sieci Web zamiast "import Vue z" vue/dist/vue.js'' https://github.com/vuejs/vue/wiki/Vue-2.0-RC-Starter-Resources # standalone-vs-runtime-builds –

+0

Złóż odpowiedź za pomocą rozwiązania i zaakceptuj ją, proszę). –

+0

Jeśli odpowiedziałeś na własne pytanie, możesz opublikować odpowiedź poniżej i zaakceptować ją lub usunąć swoje pytanie. Nie robimy "SOLVED" w tytule – j08691

Odpowiedz

25

Wystarczy, aby ułatwić życie dla ludzi szukających odpowiedzi:

import Vue from 'vue/dist/vue.js' 
import App from './App.vue' 

new Vue({ 
    el: '#app', 
    render: h => h(App) 
}) 

od autora - 2,0 standalone build means (kompilator + środowisko wykonawcze). Domyślnym eksportem pakietu NPM będzie tylko środowisko wykonawcze, ponieważ jeśli instalujesz z NPM, prawdopodobnie wstępnie skompilujesz szablony za pomocą narzędzia do kompilacji.

+7

Z dokumentacji: "Uwaga: NIE importuj Vue z" vue/dist/vue "- ponieważ niektóre narzędzia lub biblioteki innych firm mogą również importować vue, może to spowodować, że aplikacja załaduje zarówno środowisko wykonawcze i samodzielne buduje w tym samym czasie i prowadzą do błędów. " https://github.com/vuejs/vue/wiki/Vue-2.0-RC-Starter-Resources#standalone-vs-runt-builds –

+1

Tak, poważnie użyj abstrakcyjnej nazwy zamiast kodowania ścieżki do biblioteki stron trzecich że. Jeśli twój program ładujący tego nie obsługuje, uzyskaj lepszy program ładujący. –

21

Jeśli używasz narzędzia do budowania, takiego jak browserify lub Webpack, możesz najprawdopodobniej użyć single file components, aby uniknąć takich błędów (w pojedynczych komponentach plików szablony są automatycznie kompilowane do renderowania funkcji przez vueify). Zdecydowanie powinieneś unikać szablonów nigdzie indziej. Sprawdź forum i dokumentację, aby uzyskać odpowiedzi na temat sposobów ich uniknięcia.

Ale wiem z własnego doświadczenia, że ​​nie zawsze łatwo jest znaleźć szablony w projekcie, które powodują komunikat o błędzie. Jeśli masz ten sam problem, jako tymczasowe obejście problemu, następujące powinny pomóc:

Nie należy importować „vue/dist/vue.js” (sprawdź dokumentację: https://github.com/vuejs/vue/wiki/Vue-2.0-RC-Starter-Resources#standalone-vs-runtime-builds dlaczego nie)

Zamiast ciebie powinien obsłużyć to narzędzie do budowania, którego używasz.

W moim przypadku używam trybu przeglądania, w którym można używać aliasu do tworzenia aliasu.Dodaj poniższe linie do pliku package.json:

{ 
    // ... 
    "browser": { 
    "vue": "vue/dist/vue.common.js" 
    } 
} 

dla użytkowników WebPACK wydaje trzeba dodać następujące config:

resolve: { 
    alias: {vue: 'vue/dist/vue.js'} 
}, 

Więcej informacji można znaleźć w dokumentacji: https://vuejs.org/v2/guide/installation.html#Runtime-Compiler-vs-Runtime-only

+1

Aliasify wydawało się nie działać dla mnie przy użyciu Browserify. Zauważam, że nowa dokumentacja sugeruje użycie "przeglądarki": { "vue": "vue/dist/vue.common.js" } 'https://vuejs.org/v2/guide/installation.html#Runtime -Compiler-vs-Runtime-only, a następnie moje szablony pojawiły się! – phocks

+0

Czy ktoś może wyjaśnić, co robi właściwość 'resolve' i dlaczego błąd zniknął? – Felipe

0

Z Brunch Rozwiązałem to, dodając tę ​​zasadę w brunch-config.js:

npm: { 
    aliases: { 
     vue: "vue/dist/vue.js" 
    } 
    } 

zobaczyć http://brunch.io/docs/config#npm

To było zbudowanie komponentu Vue z wewnętrznym <template>:

<template> 
    <div> hello </div> 
</template> 

<script> 

export default { 
    name: 'Hello', 
    props: { 
    title: String, 
    }, 
} 
</script>