无法与 django 代码一起运行 Vue.js 3

Posted

技术标签:

【中文标题】无法与 django 代码一起运行 Vue.js 3【英文标题】:Unable to run Vue.js 3 along with django code 【发布时间】:2021-05-30 15:42:33 【问题描述】:

我无法在我的 django 代码中加载 Vue.js 3。我使用了 CDN 中的 Vue。

Vue 导入:

<script src="https://unpkg.com/vue@next"></script>

html

<table id="todaysappts" class="table table-bordered  ctype ">
    <thead class="tblheadercol2">
        <tr>
            % if "expired" in ctype %
            Appointments on  liveslist_date 

            % else %
            <strong>Today's Appointments</strong>
            % endif %
        </tr>
        <div class="row">
          <div class="col-md-24">
            Here: [[ message ]]
            </div>
            </div>
            <div class="row">
              <div class="col-md-24">
            Total: appt_total  Seen: appt_seen  Remaining: appt_not_seen 
          </div>
        </div>
        <tr>
            </tr>
            <tr>
            <th>Time</th>
            <th>Name</th>
            <th><i class="green far fa-mobile-android-alt fa-lg "></i></th>
        </tr>
    </thead>
    ... Snipped ...

JS:

console.log(`Vue code inserted`);
const app = Vue.createApp(
  delimiters: ["[[", "]]"],
  data() 
    return 
      message: "Hello Vue!",
    ;
  ,
  computed: ,
  methods: ,
);
app.mount("#todaysappts");

JS 控制台输出:

You are running a development build of Vue.
Make sure to use the production build (*.prod.js) when deploying for production.
Vue code inserted

HTML 输出:

<div class="row">
    <div class="col-md-24">
    Here: [[ message ]]
    </div>
</div>

所以,我的变量消息没有被插值,变量名称正在打印,带有括号。我如何解决这个问题?显然 vue 已加载,并没有错误。

【问题讨论】:

用捆绑脚本 &lt;script src="https://unpkg.com/vue@3.0.0-rc.11/dist/vue.global.prod.js"&gt;&lt;/script&gt; 替换 &lt;script src="https://unpkg.com/vue@next"&gt;&lt;/script&gt; 将解决您的问题 【参考方案1】:

该应用正在尝试挂载到 ID 为 todaysappts 的不存在的 div。将 id 添加到根元素:

console.log(`Vue code inserted`);
const app = Vue.createApp(
delimiters: ["[[", "]]"],
data() 
    return 
    message: "Hello Vue!",
    ;
,
computed: ,
methods: ,
);
app.mount("#todaysappts");
<div id="todaysappts" class="row">
    <div class="col-md-24">
    Here: [[ message ]]
    </div>
</div>

<script src="https://unpkg.com/vue@next"></script>

帖子编辑后:另外,HTML 无效,因为有&lt;div&gt; 元素直接插入到表格模板中。

【讨论】:

很抱歉省略添加根元素。我编辑了更多代码 这是因为您的 HTML 无效。您不能将&lt;div&gt; 作为&lt;table&gt; 的直系后代,它应该在&lt;tr&gt;&lt;td&gt; 内。 你让我走上了正确的道路。 id 元素位于错误的祖先中。

以上是关于无法与 django 代码一起运行 Vue.js 3的主要内容,如果未能解决你的问题,请参考以下文章

VUE JS - 你如何运行预先创建的 Vue Js 代码?

将 moment.js 与 vue.js 一起使用

django与vue.js实现分页。

Vue 路由器和 Cordova (Vue.js)

CSS 在动态路由上不能与 vue js 一起使用

我如何使用 Django + Vue.js 快速构建项目