通过Python Flask服务器提供时,不会加载Vue应用程序

问题描述 投票:3回答:1

我有一个简单的“你好世界”VueJS应用程序我正在努力工作:

<!doctype html>
<html>
<head>
  <meta http-equiv="content-type" content="text/html; charset=utf-8" />
  <script type="text/javascript" src="https://unpkg.com/vue"></script>    
</head>
<body>    
  <div id="app">
    Message: {{ message }}
  </div>    
<script>
  var vm = new Vue({
    el: "#app",
    data: {
      message: "Hello, world"
    }
  });
</script>  
</body>
</html>

当我在浏览器中加载此文件时,关闭我的本地磁盘(即:file:///home/user/vue-project/index.html),它会加载并显示“Hello,world”。

但是,如果我尝试使用相同的文件并通过python flask开发服务器或通过gunicorn提供它,{{message}}呈现空白。

有谁知道可能导致这种情况发生的原因?

python flask vuejs2
1个回答
4
投票

flask使用jinja2渲染其变量,jinja2使用{{ variable }}作为其解析分隔符

在处理任何javascript之前,render("mytemplate.html",message="Hello")将用“Hello”替换所有{{ message }}块...因为你没有定义消息它只是一个空字符串...你需要配置vue使用替代分隔符(我使用[[ message ]]

<!doctype html>
<html>
<head>
  <meta http-equiv="content-type" content="text/html; charset=utf-8" />
  <script type="text/javascript" src="https://unpkg.com/vue"></script>    
</head>
<body>    
  <div id="app">
    Message: [[ message ]]
  </div>    
<script>
  var vm = new Vue({
    el: "#app",
    delimiters : ['[[', ']]'],
    data: {
      message: "Hello, world"
    }
  });
</script>  
</body>
</html>
© www.soinside.com 2019 - 2024. All rights reserved.