Совместное использование Vue.js и Flask - PullRequest
0 голосов
/ 28 декабря 2018

У меня был код, который прекрасно работал, затем я захотел использовать колбу, поэтому я скопировал ее в каталог приложения колбы.HTML-код ниже:

<html>

<head>
    <!-- Required meta tags -->
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">

    <!-- Bootstrap CSS -->
    <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/css/bootstrap.min.css" integrity="sha384-MCw98/SFnGE8fJT3GXwEOngsV7Zt27NXFoaoApmYm81iuXoPkFOJwJ8ERdknLPMO"
        crossorigin="anonymous">
</head>

<body>
    <div id="app" class="container">
        <div class="row">
            <nav class="navbar navbar-expand-lg navbar-dark bg-dark">
                <div class="collapse navbar-collapse" id="navbarNav">
                    <ul class="navbar-nav">
                        <li class="nav-item" v-for="tab in tabs" v-bind:class="tab.active">
                            <a href="#" class="nav-link">{{ tab.name }}</a>
                        </li>
                    </ul>
                </div>
            </nav>
        </div>
        <div class="row">
            <div class="col">
                <hr class="navbarDivide">
            </div>
        </div>
    </div>

    <!-- Optional JavaScript -->
    <!-- jQuery first, then Popper.js, then Bootstrap JS -->
    <script src="https://code.jquery.com/jquery-3.3.1.min.js" integrity="sha256-FgpCb/KJQlLNfOu91ta32o/NMZxltwRo8QtmkMRdAu8="
        crossorigin="anonymous"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.3/umd/popper.min.js" integrity="sha384-ZMP7rVo3mIykV+2+9J3UJ46jBk0WLaUAdn689aCwoqbBJiSnjAK/l8WvCWPIPm49"
        crossorigin="anonymous"></script>
    <script src="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/js/bootstrap.min.js" integrity="sha384-ChfqqxuZUCnJSK3+MXmPNIyE6ZbWh2IMqE241rYiqJxyMiZ6OW/JmZQ5stwEULTy"
        crossorigin="anonymous"></script>
    <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
    <script src="/static/js/challenges.js"></script>
</body>

</html>

Когда я удаляю материал для Vue, он отлично работает (когда я удаляю v-for, v-bind и {{tab.name}}. Однако, когда я добавляю его, это дает мне ошибку 500. Я делаю все это с помощью фляги. Код Flask ниже:

from flask import Flask, render_template

app = Flask(__name__)
application = app

@app.route('/base')
def index():
    return render_template('base.html')

if __name__ == '__main__':
    app.run(debug=True)

В коде JavaScript просто есть необходимые вещидля Vue.js (объект с данными). Код javascript ниже:

var app = new Vue({
    el: '#app',
    data: {
        tabs: [
            { name: "Home", active: "" },
            { name: "Challenges", active: "active" },
            { name: "Scoreboard", active: "" },
            { name: "About", active: "" }
        ]
    }
});

Обновление:

После небольшой отладки я думаю, чтовозможно, выяснили проблему. Когда я закомментирую все вещи и добавлю console.log("it works"); к своему javascript-коду, ничего не происходит. Это, вероятно, означает, что javascript-код не подключается к html, но как я могу это решить?

1 Ответ

0 голосов
/ 28 декабря 2018

Я нашел решение.Я вручную вводил URL-адрес javascript

<script src="/static/js/challenges.js"></script>

Что мне нужно было сделать, чтобы исправить это, было использовать url_for

<script src="{{ url_for('static', filename='js/challenges.js') }}"></script>

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...