Vue 将组件从单个 .js 文件拆分到多个文件中

Posted

技术标签:

【中文标题】Vue 将组件从单个 .js 文件拆分到多个文件中【英文标题】:Vue split components from a single .js file in multiple files 【发布时间】:2020-06-05 19:22:49 【问题描述】:

我在index.js(我的主要 Vue 代码所在的位置)中创建了一个组件。现在我想将项目模块化并将组件放入一个单独的文件中。我不知道该怎么做,因为如果我创建例如optionalapm.jsindex.js 返回一个错误,它找不到我包含的 vue 组件 optionalapm

如何将组件导入index.js

这是我的组件代码:

var optionalapm=Vue.component('optionalapm', 
props:['value'],
template:   `<div class="col-l-12 col-m-12 col-s-12 col-xs-emphased" style="background-color: #f9f9f9"">
                <p class="hidden-xl hidden-l hidden-m"></p>
                <p class="hidden-xl hidden-l hidden-m"></p> 
                <h3 style="text-align: center">APM</h3>
                <p>&nbsp;</p>
                <div class="col-l-4">
                    <p style="text-align: center">Number of nodes</p>
                    <div class="form-input-set">
                        <select v-bind:value='value' v-on:input="$emit('input', $event.target.value)" v-on:change="$emit('calcapmprice')" class="form-select" style="background: white">
                            <option value="apmnodes0">
                                <p style="text-align: center">0</p>
                            </option>                                            
                            <option value="apmnodes1">
                                <p style="text-align: center">1</p>
                            </option>
                            <option value="apmnodes2">
                                <p style="text-align: center">2</p>
                            </option>
                            <option value="apmnodes3">
                                <p style="text-align: center">3</p>
                            </option>  
                        </select>
                    </div> 
                </div>
              </div>`,       
)                               

这就是index.js中的相关代码:

var ececontent = new Vue(
    el:'#ece-content',
    data: 
        ...
    ,
    methods: 
        ...
    ,
    components: 
        optionalapm: optionalapm,
    

);

【问题讨论】:

【参考方案1】:

您应该使用Single File Components,如文档中所述。在它旁边,阅读这个useful blog post 关于使用 SFC 的内容。

【讨论】:

【参考方案2】:

这可能会有用https://vuejs.org/v2/guide/single-file-components.html

如果你想模块化项目,你可以使用js模块https://javascript.info/modules-intro

【讨论】:

感谢您的链接。正如我从 vuejs 指南中了解到的那样,不可能仅将 vue.component 复制并粘贴到另一个文件中,对吗?如果我能创建一个新文件并将其包含在 index.JS 文件中,那就太好了。 为此你需要 js 模块。您可以通过其他方式做到这一点:将组件放入单独的文件中,全局注册并在您的页面中包含带有脚本标签的文件。但它不是的方式。我建议学习 js 模块。它对模块化非常有用

以上是关于Vue 将组件从单个 .js 文件拆分到多个文件中的主要内容,如果未能解决你的问题,请参考以下文章

使用 Python 将内容从单个文件夹拆分到多个子文件夹

无法从 Vue.js 中的单个文件组件导入 Mixin

vue.js 如何将 props 与单个文件组件一起使用

vue.js 过渡 css 类不能放入​​单个文件组件中

解决vue项目首页加载过慢的情况

Vue的混入和继承