不使用构建工具的vue组件书写方式

将vue组件转换为普通的js文件(IIFE)

先写个简单的,使用ESM方式组织的component

export default {
  data() {
    return { count: 0 }
  },
  template: `<button @click="count++">You clicked me {{ count }} times.</button>`
}

我们把这个组件保存为mycomponent.js

这个组件通过export default方式导出,

使用ESM方式时,导入要使用带有module标记的script,然后通过 import 导入组件

写法是这样的 import 组件名 from xxx.js 组件名是自定义的,导入方式是createApp时,加到 components 属性里,例如 import compoentA from 'mycomponent.js',使用时,我们想以<my-component />的形式使用,那么createApp就这样写

createApp({
components:{
MyComponent : compoentA
}
})

下面是完整的例子:

<div id="app">
        <div>{{ message }}</div>
        <my-component></my-component>
    </div>
    <script type="module">
        import { createApp } from 'https://unpkg.com/vue@3/dist/vue.esm-browser.js'
        import MyComponent from '/component/my-component.js'
        var app = createApp({
            components:{MyComponent},
            data () {
                return {
                    message:"Hello Vue"
                }
            }
        });
        app.mount('#app')
    </script>

这样写的组件,是ESM标准的,无法使用<script src='...' />这种方式使用,如果想转换成IIFE方式,那么就把他直接复制给一个变量即可,如下:

var MyComponent = (function () {
    return {
        data() {
            return {count: 0}
        },
        template: `<button @click="count++">You clicked me {{ count }} times.</button>`
    }
})()

这样就可以直接使用了

<div id="app">
<my-component></my-component>
</div>
<script src="/component/my-component.js"></script>
<script>
var app = Vue.createApp({ data () {return {message:'helloword'}}})
//重点是下面这行
app.component('MyComponent',MyComponent);
app.mount("#app")
</script>

不用构建工具,使用原生的js也可以使用组件。

posted @ 2023-10-27 15:42  Easy C#  阅读(118)  评论(0编辑  收藏  举报