2016-09-14 13 views
22

Используя Vue (^ 2.0.0-rc.6) + Browserify, точка входа index.js:Vue JS 2.0 ничего не делает?

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> 

Пустой белый экран, я что-то пропустил?

EDIT:

Запись HTML просто <div id="root"></div>, никакие ошибки на консоли журналов, и я уверен, что Hello.vue загружается так console.log('test'), что на консоли появляется файл.

EDIT 2:

Нашли ошибку:

[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.)

Означает ли это, что я должен использовать WebPack решение? Нельзя использовать стандартный HTML?

РЕШЕНИЕ: Импорт Вью из 'Vue/DIST/vue.js'

+2

Просто чтобы быть уверенным. При использовании webpack рекомендуется изменить конфигурацию webpack вместо 'import Vue 'из vue/dist/vue.js'' https://github.com/vuejs/vue/wiki/Vue-2.0-RC-Starter-Resources # standalone-vs-runtime-builds –

+0

Ответьте на решение и примите его, пожалуйста) –

+0

Если вы ответили на свой вопрос, вы можете либо опубликовать ответ ниже, либо принять его, либо удалить свой вопрос. Мы не делаем «SOLVED» в заголовке – j08691

ответ

25

Просто, чтобы сделать жизнь проще для людей, которые ищут ответ:

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

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

От автора - 2,0 автономные средства сборки (компилятор + время выполнения). По умолчанию экспорт пакета NPM будет выполняться только в режиме исполнения, потому что при установке из NPM вы, вероятно, предварительно скомпилируете шаблоны с помощью инструмента построения.

+7

Из документов: «Примечание: НЕ нужно импортировать Vue из« vue/dist/vue »- поскольку некоторые инструменты или сторонние библиотеки могут импортировать vue, это может привести к тому, что приложение загрузит и среду выполнения и автономные сборки одновременно и приводят к ошибкам ». https://github.com/vuejs/vue/wiki/Vue-2.0-RC-Starter-Resources#standalone-vs-runtime-builds –

+1

Да, серьезно используйте абстрактное имя вместо hardcoding путь к сторонней lib, как что. Если ваш загрузчик не поддерживает это, получите лучший загрузчик. –

21

Если вы используете инструмент построения, такой как browserify или Webpack, вы можете, скорее всего, использовать single file components, чтобы избежать таких ошибок (в отдельных файловых компонентах шаблоны автоматически компилируются для визуализации функций с помощью vueify). Вы определенно должны стараться избегать шаблонов в другом месте. Проверьте форум и документацию на ответы о том, как их избежать.

Но я по собственному опыту знаю, что не всегда легко найти шаблоны в вашем проекте, которые вызывают сообщение об ошибке. Если у Вас есть такая же проблема, как временное решение, следующее должно помочь:

Вы не должны импортировать «вю/DIST/vue.js» (проверьте документацию: https://github.com/vuejs/vue/wiki/Vue-2.0-RC-Starter-Resources#standalone-vs-runtime-builds почему нет)

Вместо вас должен обрабатывать это в инструменте построения, который вы используете.

В моем случае я использую браузер, где вы можете использовать aliasify для создания псевдонима.Добавьте следующее в файл package.json:

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

для пользователей WebPack, кажется, вы должны добавить следующие строки в конфигурации:

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

Более подробную информацию можно найти в документации: https://vuejs.org/v2/guide/installation.html#Runtime-Compiler-vs-Runtime-only

+1

Aliasify, похоже, не работает для меня, используя Browserify. Я замечаю, что новая документация предлагает просто использовать «браузер»: { «vue»: «vue/dist/vue.common.js» } 'https://vuejs.org/v2/guide/installation.html#Runtime -Compiler-vs-Runtime-only, а затем появились мои шаблоны! – phocks

+0

может кто-нибудь объяснить, что делает свойство 'resolve' и почему ошибка исчезает? – Felipe

0

С Brunch Я решил это, добавив это правило в brunch-config.js:

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

см http://brunch.io/docs/config#npm

Это было создать компонент Vue с внутренним <template>:

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

<script> 

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