vue-cli - 在 vue-cli 中调优 public/index.html
问题描述
是否可以配置注入文件的位置public/index.html
?
我想生成一个 django 模板而不是提供的简单 html 文件,它可能如下所示:
{% extends 'base.html' %}
{% block header_extra %}
<!-- app.css -->
{% endblock %}
{% block js_extra %}
<!-- app.js, chunk-vendors.js, etc -->
{% endblock %}
{% block main_content %}
<div id="app"></div>
{% endblock %}
解决方案
我已经找到了如何做到这一点,首先需要禁用文件注入vue.config.js
:
configureWebpack: config => {
config.plugins.forEach((plugin) => {
if(plugin.constructor.name === 'HtmlWebpackPlugin') {
plugin.options.inject = false;
plugin.options.minify.collapseWhitespace = false;
}
});
}
接下来需要使用下划线模板插入 js / css 文件。
在这里,我vue
在文件名之前添加了前缀,因为我使用 django 收集静态数据。
{% extends 'base.html' %}
{% load static %}
{% block header_extra %}
<% htmlWebpackPlugin.files.css.forEach((fileName) => { %>
<link rel="stylesheet" href="{% static 'vue<%= fileName %>' %}">
<% }) %>
{% endblock %}
{% block js_extra %}
<% htmlWebpackPlugin.files.js.forEach((fileName) => { %>
<script src="{% static 'vue<%= fileName %>' %}"></script>
<% }) %>
{% endblock %}
{% block main_content %}
<div id="app"></div>
<!--
<pre id="config">
<%= JSON.stringify(htmlWebpackPlugin, null, 2) %>
</pre>
-->
{% endblock %}
然后,因为我必须收集静态static/vue
目录,在 settings.py 我添加了一个新目录:
STATICFILES_DIRS = [
# vue is an additional subdirectory for vue static
('vue', os.path.join(BASE_DIR, '../frontend/dist')),
]
还需要从 django 访问 vue 生成的模板,所以在 settings.py 中:
TEMPLATES = [
# ...
# 'frontend' is the vue project directory name,
# so you should be able to specify template like this:
# template_name='dist/index.html'
{'DIRS': ['frontend']}
# ...
]
推荐阅读
- c# - 无法使用 XAML 页面中的 X:Name 访问 UserControl
- java - 每次插入值时如何不计算哈希码
- reactjs - react.js 超过最大更新深度
- pine-script - 在图表上显示更高的时间范围指标
- mysql - 如果有来自另一个表的空值,如何填充(与其他表连接)?
- javascript - 如何在 d3 中为可视化创建一个函数而不是 3 个或更多函数,然后在悬停在节点上时添加突出显示
- java - 未检测到 JavaFX
- spring-boot - 多个 Gradle bootJar 配置 - 不同的 mainClass 属性?
- javascript - 重构 += 表达式
- rust - 在 Rust 中使用输入初始化全局变量