3

我想使用 Vue Loader 的模块化样式和文件格式(即,我在每个 .vue 文件中都有一个模板部分、脚本部分和样式部分)。

我不知道该怎么做(或者甚至可以做)是在 html 文件中使用我的自定义模板。

例如,在 App.vue 文件中,我可以使用以下代码:

<template>
  <div id="app">
    <message>Hello there</message>
  </div>
</template>

这将用于在主页上显示自定义消息组件。

我想做的是在 html 文件中使用我的自定义组件。例如,在 index.html 文件中使用以下代码:

  <div id="app">
    <message>Hello there</message>
  </div>

知道我该怎么做吗?谢谢。

注意:我是 Vue Loader 的新手,也是 Vue 的半新手(所以如果这个问题的答案很明显,我提前道歉)。

4

3 回答 3

1

有很多方法可以编译单个文件组件,然后在网页中使用该组件。

使用 vue-cli

Vue 发布了一个名为vue-cli的命令行界面工具,可以零配置初始化项目和构建组件。构建可在页面中使用的组件的一种选择是使用vue build

vue build MyComponent.vue --prod --lib MyComponent

这将编译一个公开 MyComponent 的脚本。如果您在页面中包含该脚本,然后全局添加,

Vue.component(MyComponent)

您可以在任何 Vue 中使用该组件。

做一个插件

这是一个用于制作插件的非常基本的框架示例。

myPluginDefinition.js

window.MyPlugin= {};

MyPlugin.install = function (Vue) {
    Vue.component('my-component', require('./my-component.vue'));
}

webpack.config.js

module.exports = {
    entry: "./myPluginDefinition.js",
    output: {
        path: __dirname+'/dist',
        filename: "MyPlugin.js"
    },
    module: {
        loaders: [
        {
            test: /\.vue$/,
            loader: 'vue-loader',
        }
        ]
    }
};

这将构建一个名为的文件,该文件MyPlugin.js将包含您在 install 函数中包含的每个单个文件组件。在您的页面上包含脚本,然后调用

Vue.use(MyPlugin)

您将拥有所有组件。

使用自定义 webpack 配置

您可以通过多种方式配置 webpack 来构建单文件组件。您可以将它们全部构建到一个文件中或单独构建它们。我建议如果您想使用这些选项之一,您可以提出一个单独的问题。

于 2017-03-31T18:26:48.307 回答
0

实际上,您可以通过以下方式轻松做到这一点:

注册您的组件:

Vue.component('message', {
    template: '<div>A custom component!</div>'
});

然后在您的实例中评论该render函数,如下所示:Vue

new Vue({
  el: '#app',
  // render: h => h(App)
})

之后,您将能够像这样呈现您的消息标签:

<div id="app">
      <message></message>
</div>

编辑:如果您不想使用这种方式,您可以在视图实例中定义它:

new Vue({
  el: '#app',
  // render: h => h(App)
  components: {
    message: {
     template: `
    <h1>Hello World</h1>
        `
    }
  }
})
于 2017-03-29T19:49:19.437 回答
0

导入所需的组件定义对象并将其传递给options.components

<template>
    <some-component></some-component>
</template>
<style>...</style>
<script>
    import SomeComponent from 'path/to/some-component.vue';

    export default {
        components: {
            // ES2015 shorthand for SomeComponent: SomeComponent
            SomeComponent
        }
    }
</script>

利用本地组件注册

默认导出和SomeComponent都是组件定义对象。

于 2017-11-22T21:53:46.173 回答