如何通过Django提供webpack'ed(Vue)应用程序,而无需为每次更改重新编译?

时间:2017-09-28 22:32:18

标签: django vue.js

我设置了一个Django项目,并希望开发一个Vue前端来配合它。要设置Vue应用,我使用了vue init webpack myproject-frontend。单独开发两者非常简单,分别使用python manage.py runservernpm run dev

将应用程序放在我的Django项目的一个页面中也很容易; if 我首先使用npm run build构建Vue应用。显然,这有一个缓慢的缺点,加上我必须处理包含哈希的文件名(当然可以自动化)。

关于npm run dev,我对只能在浏览器中看到Vue应用程序感到满意。我仍然可以与我的API(处理CORS)进行通信,但这不是网站最终的样子。我计划在同一页面上有多个Vue组件,并且在一个点上不同页面上有不同的组件,dev没有反映出来。

如何保持不必不断重建的速度,同时保持不遗漏应用程序的Django部分的保真度?

我试着看一下dev所服务的内容,但我对Webpack和使用过的工具来说太新了,无法从中推断出一种方法。 FWIW,这就是我所看到的:

  • 查看http://localhost:8080/,我看到了:

    <div id="app"></div>
    <!-- built files will be auto injected -->
    <script type="text/javascript" src="/app.js"></script>
    
  • /app.js本身似乎是webpack的一些引导,库和应用程序代码的结果。但是那个文件在我的文件系统中没有,所以我无法从Django中提供它......

1 个答案:

答案 0 :(得分:0)

是否有可能以某种方式通过Django服务器提供应用程序的dev版本(例如,在默认情况下在端口8000而不是8080),我不知道。

然而,这并不意味着它无法集成到Django网站中。在localhost:8080/

的来源中可以看到所有必要的内容
<div id="app"></div>
<!-- built files will be auto injected -->
<script type="text/javascript" src="/app.js"></script>

这部分HTML可以由Django提供,实现几乎与将dist文件放在Django的静态目录中相同 - 不同的是端口,因此CORS:

<div id="app"></div>
<script type="text/javascript" src="http://localhost:8080/app.js"></script>