首页 > 其他分享 >不使用构建工具的vue组件书写方式

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

时间:2023-10-27 15:59:09浏览次数:26  
标签:vue createApp 书写 app js MyComponent 组件 return

将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也可以使用组件。

标签:vue,createApp,书写,app,js,MyComponent,组件,return
From: https://www.cnblogs.com/easyc/p/17792517.html

相关文章

  • vue3+ts 禁止文本框自动填充内容
    如果`<input>`元素的`autocomplete`属性设置为`"off"`但并没有起作用,这可能是因为不同浏览器对此属性的实现方式存在一些差异。为了更可靠地禁用自动填充功能,你可以尝试以下解决方案之一:1.添加`autocomplete="new-password"`属性值:一些浏览器会将`"off"`视为默认值,但......
  • Vue项目中大文件切片上传实现秒传、断点续传的详细实现教程
    一、考察点在Vue项目中,大图片和多数据Excel等大文件的上传是一个非常常见的需求。然而,由于文件大小较大,上传速度很慢,传输中断等问题也难以避免。因此,为了提高上传效率和成功率,我们需要使用切片上传的方式,实现文件秒传、断点续传、错误重试、控制并发等功能,并绘制进度条。在本文中,我......
  • 每日一练:无感刷新页面(附可运行的前后端源码,前端vue,后端node)
    1、前言想象下,你正常在网页上浏览页面。突然弹出一个窗口,告诉你登录失效,跳回了登录页面,让你重新登录。你是不是很恼火。这时候无感刷新的作用就体现出来了。2、方案2.1redis设置过期时间在最新的技术当中,token一般都是在Redis服务器存着,设置过期时间。只要在有效时间内,重新发出请......
  • vue 中的provide和inject用法。
     provide和inject可以用作vue组件的通讯-父子/跨级provide选项应该是一个对象或返回一个对象的函数。该对象包含可注入其子孙的property。inject选项应该是:一个字符串数组,或一个对象,对象的key是本地的绑定名,value是:在可用的注入内容中搜索用的key(字符串或Symbol......
  • VIte+Vue3 打包在本地 双击 index.html 打开项目
    npmi@vitejs/plugin-legacynpmi@babel/preset-envnpmiterserimportlegacyfrom'@vitejs/plugin-legacy';exportdefaultdefineConfig({base:"./",plugins:[vue(),legacy({targets:["defaults","not......
  • Vue+ElementUI 下拉框问题的一个解决方案
    问题描述:Vue使用ElementUI使用下拉框组件时,点击空白处,无法隐藏展开的选项。build项目后,此类问题时有时无,不确定。报错如图:于是自己做了个组件封装一下原生下拉框,解决无法关闭下拉选项问题。代码如下:<template><div:ref="'div_my_select_component_'+rid"v-click-outside=......
  • 报表组件DevExpress Reporting中文教程 - 如何直接在浏览器中生成报表?
    DevExpressReports组件被设计为一个跨平台的报表解决方案,您可以创建一次报表,然后将文档显示、打印和导出到任何受支持的.NET平台中,用户体验扩展到部署应用程序的所有托管环境/操作系统。DevExpressReporting是.NETFramework下功能完善的报表平台,它附带了易于使用的VisualStud......
  • 31-Vue脚手架-scoped样式
    我们先思考一个问题,如果对School和Student应用样式的话,一般是使用如下方式:src/components/School.vue<template><divclass="demo"><h2>学校名称:{{name}}</h2><h2>学校地址:{{address}}</h2></div></template><script&g......
  • 30-Vue脚手架-plugin插件
    plugin插件功能:用于增强Vue本质:包含install方法的一个对象,install的第一个参数是Vue,第二个以后的参数是插件使用者传递的数据。 src/plugins.js(定义插件)//定义插件(默认暴露)exportdefault{install(Vue){console.log("@@@install")console.log(......
  • [Vue]条件渲染
     1.v-if  写法:    (1)v-if="表达式"    (2)v-else-if="表达式"    (3)v-else="表达式"  适用于:切换频率较低的场景。  特点:不展示的DOM元素直接被移除。  注意:v-if可以和v-else-if、v-else一起使用,但要求结构不能被“......