【问题标题】:Vue in laravel 5.7laravel 5.7 中的 Vue
【发布时间】:2019-07-10 11:40:38
【问题描述】:

我想在我的 laravel 项目中使用 vue,它不起作用我安装了 npm install,它也安装了 vue 和 vue-template。 这是我的 index.blade.php。

@extends('layouts.app')
@section('content')
   <div id="app">
      <p> {{ product }} </p>
   </div>
@endsection
@section('scripts')
   <script>
      var app = new Vue({
              el: '#app',
              data:{ product: 'car' } })
   </script>
@endsection

这是我的 package.json 文件。

  "devDependencies": {
"axios": "^0.18",
"bootstrap": "^4.0.0",
"cross-env": "^5.1",
"jquery": "^3.2",
"laravel-mix": "^4.0.7",
"lodash": "^4.17.5",
"popper.js": "^1.12",
"resolve-url-loader": "^2.3.1",
"sass": "^1.15.2",
"sass-loader": "^7.1.0",
"vue": "2.6.4",
"vue-template-compiler": "2.6.4"
}

【问题讨论】:

  • 您检查过控制台错误吗?检查页面的来源,您似乎有两个 div#app,您应该从 resources/assets/app.js 设置 Vue 配置
  • 在“resources/assets/app.js”上,exampleComponent 是默认配置的。
  • 在控制台“加载资源失败:服务器响应状态为 500(内部服务器错误)”也在网页上表示产品未定义。谢谢。

标签: laravel vue.js


【解决方案1】:

如果你想使用laravel Frontend Scaffolding你需要创建一个组件并运行npm来编译它。

例如创建一个组件并在resources/assets/app.js 中使用它,然后在刀片中使用组件。

已经有一个关于 Laravel 默认的示例

ExampleComponent 是您的默认示例

而不是:

@extends('layouts.app')
@section('content')
   <div id="app">
      <p> {{ product }} </p>
   </div>
@endsection
@section('scripts')
   <script>
      var app = new Vue({
              el: '#app',
              data:{ product: 'car' } })
   </script>
@endsection

你应该这样调用组件:

@extends('layouts.app')

@section('content')
    <example-component></example-component>
@endsection

以及您的示例组件resources/js/components/ExampleComponent的一些更改:

<template>
    <div class="container">
        <div class="row justify-content-center">
            <div class="col-md-8">
                <div class="card card-default">
                    <div class="card-header">Example Component</div>

                    <div class="card-body">
                        {{ product }}
                    </div>
                </div>
            </div>
        </div>
    </div>
</template>

<script>
    export default {
        mounted() {
            console.log('Component mounted.')
        },
        data () {
          return {
            product:'car'
          };
        }
    }
</script>

不要忘记运行npm run dev 来编译新的更改

第二种方式:

当然还有其他方法

这样你就不需要app.jsnpm install

可以直接调用Vuejs脚本

并使用@{{ product }} 而不是{{ product }}

【讨论】:

  • 感谢您的回答。但是我编码的这种方式是一个和我一样的视频编码,我不知道他以前是做什么的或做什么的。或者不,他没有
  • {{ product }} 是 laravel 语法 你测试过@{{ product }} 吗?
猜你喜欢
  • 2019-08-09
  • 2019-02-27
  • 2019-04-03
  • 1970-01-01
  • 1970-01-01
  • 2019-08-31
  • 1970-01-01
  • 2019-07-16
  • 2019-07-06
相关资源
最近更新 更多