vue和django搭配的问题

新手,希望能得到大家的耐心解答

  • vue提倡的是组件系统,而在使用django作为后端路由的时候,是否有冲突?

比如写blog的时候,headerfooter部分是公用的,而content部分是通过django的模板继承,之前在用vue的时候,是在base.html的时候引入vue的js,写好样式,通过继承来返回不同的页面,没有用到组件系统:

<!--base.html-->

{% load staticfiles %}
<!DOCTYPE html>
<html lang="zh-CH">
<head>
    <meta charset="UTF-8">
    <link rel="stylesheet" href="{% static 'css/semantic.css' %}">
    {% block css %}
    {% endblock %}
    //各种每个页面都用到的公共js
</head>
<body>
    <div id="app">
        <div class="header"></div>
        <div class="content">
            <div>
                {% block right_content %}{% endblock %}
            </div>
            <div>
                {% block left_content %}{% endblock %}
            </div>
        </div>
        <div class="ui inverted vertical footer segment"></div>

    {% block script %}{% endblock %}
</body>
</html>

例如index页

{% extends 'base.html' %}
{% load staticfiles %}

{% block title %}
    Index
{% endblock %}

{% block css %}
    index的css
{% endblock %}

{% block right_content %}
    {% verbatim %}
    index的内容
    {% endverbatim %}
{% endblock %}

{% block left_content %}
    {% verbatim %}
    index的内容
    {% endverbatim %}
{% endblock %}

{% block script %}
    <script>
        var vm = new Vue({
            el: '#app',
            index页的功能...
        });
    </script>
{% endblock %}

然后再django中只返回页面,数据通过django搭建rest接口传送

# views.py
def index(request):
    return render(request, 'index.html', {})

觉得这样的方式加载时页面好像很慢,加载很多js
觉得想学习点新的内容,学习一下组件系统,和webpack的智能打包
那么问题又来了:

  • vue组件也可以在django模板继承中使用吗?

  • vue-cli中也是按着这样的顺序写吗?就是主目录App.vue写上述base.html的内容,然后在component中写index.vuexxx.vuebuild完再放入django中继承吗?

  • *.vue文件是不能使用4个空格的吗?

  • 我不想将公用的js打包进每个页面里面,vue-cli中怎么使用cdn调试,然后打包不带上cdn的js呢

  • 使用vue组件webpack是否会加快页面加载的速度呢?(较之前的模式)

  • 上述的模式和vue组件webpack模式相比,能否用进步来描述?(后者先进于前者

阅读 9.9k
2 个回答

可以考虑把通用的组件写在一个或一组 js 里,这样可以充分利用缓存。

cdn 上的 js,可以看一下 webpack 配置的 externals 选项。
想到这样的问题很不错,还要培养解决问题的能力。我遇到这样的问题的时候,直接就是搜索 webpack external 这两个关键字,结果真被我找到了。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题