Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vue.js/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 将Vue.js与Web包一起使用_Javascript_Vue.js_Webpack - Fatal编程技术网

Javascript 将Vue.js与Web包一起使用

Javascript 将Vue.js与Web包一起使用,javascript,vue.js,webpack,Javascript,Vue.js,Webpack,我是第一次使用Vue.js,无法使用最简单的代码段。我目前正在使用Webpack将其添加到现有项目中,这是我的js文件中的代码: import Vue from 'vue' import 'bootstrap'; ... var app = new Vue({ el: '#toto', data: { message: 'Hello Vue!' } }); 我的HTML很长,但这就是我要做的: <div id="main"> <div class="

我是第一次使用Vue.js,无法使用最简单的代码段。我目前正在使用Webpack将其添加到现有项目中,这是我的js文件中的代码:

import Vue from 'vue'
import 'bootstrap';
...

var app = new Vue({
  el: '#toto',
  data: {
    message: 'Hello Vue!'
  }
});
我的HTML很长,但这就是我要做的:

<div id="main">
  <div class="container">
    <div id="toto">{{ message }}</div>
    <h2 class="title">Search results</h2>
  </div>
</div>

{{message}}
搜索结果
因此,当我运行上面的js代码时,“toto”div是空的。我在网页包中没有收到任何编译错误,在Chrome控制台中也没有收到任何错误


我做错了什么?

当您使用Webpack时,Vue通常需要单个文件组件(
*.Vue
)-您不能在公共HTML文件中放置模板。所以你必须这样做:

var-app=新的Vue({
el:'托托',
模板:“{message}}”,
数据:{
消息:“你好,Vue!”
}
});

当您使用Webpack时,Vue通常需要单个文件组件(
*.Vue
)-您不能将模板放入公共HTML文件中。所以你必须这样做:

var-app=新的Vue({
el:'托托',
模板:“{message}}”,
数据:{
消息:“你好,Vue!”
}
});

我在这里找到了解决方案:

添加到Web包配置文件的以下代码实现了此目的:

module.exports = {
  // ...
  resolve: {
    alias: {
      'vue$': 'vue/dist/vue.esm.js'
    }
  }
}

我在这里找到了解决方案:

添加到Web包配置文件的以下代码实现了此目的:

module.exports = {
  // ...
  resolve: {
    alias: {
      'vue$': 'vue/dist/vue.esm.js'
    }
  }
}


你的JS执行了吗?尝试在控制台顶部添加一些
console.log('HERE
)`file@BroiSatse除了Vue部分之外的所有JS代码。我不确定你的答案是什么意思,但我假设它是在控制台中打印出来的?代码是否在加载元素
#toto
时执行,即脚本是否在html末尾加载?@broisasse我想我在编辑原始消息之前回答了。因此,为了回答您的问题,除了Vue实例化之外,所有JS代码都可以工作(我甚至在Vue部分之前和之后添加了日志消息)。奇怪的是,当我将“el”属性改为“#main”时,整个main div都被清空了。这有帮助吗?所以上面的链接解决了这个问题。我必须删除“template”属性才能让它工作。你的JS执行吗?尝试在控制台顶部添加一些
console.log('HERE
)`file@BroiSatse除了Vue部分之外的所有JS代码。我不确定你的答案是什么意思,但我假设它是在控制台中打印出来的?代码是否在加载元素
#toto
时执行,即脚本是否在html末尾加载?@broisasse我想我在编辑原始消息之前回答了。因此,为了回答您的问题,除了Vue实例化之外,所有JS代码都可以工作(我甚至在Vue部分之前和之后添加了日志消息)。奇怪的是,当我将“el”属性改为“#main”时,整个main div都被清空了。这有帮助吗?所以上面的链接解决了这个问题。我必须删除“template”属性才能让它工作。我不明白,但我尝试了你的代码,它没有改变任何东西。你能详细说明一下新的文件结构和变化吗?“template”属性的作用是什么?看看这个JSfiddle,我当前的代码中的“el”属性不是从“toto”改为“main”?@IVOGELOV-有趣的是,你的小提琴没有列出
模板
,它仍然可以工作。关键是如果你使用Webpack(因此,
*.vue
文件中的单个文件组件)-您不需要
template
属性。如果您在运行时在普通HTML页面上加载Vue,那么您必须以字符串形式提供模板,或者在HTML中提供
标记的ID。我不明白,但我尝试了您的代码,它没有改变任何内容。请详细说明新的文件结构和更改。什么“template”属性有用吗?看看这个JSFIDLE,我的当前代码中的“el”属性不是从“toto”改为“main”吗?@IVOGELOV-有趣的是,你的小提琴没有列出
模板,它仍然有效。关键是如果你使用Webpack(以及
*.vue
文件中的单文件组件)-您不需要
模板
属性。如果在运行时在普通HTML页面上加载Vue,则必须以字符串形式提供模板,或者在HTML中提供
标记的ID。