我正在使用带有CDN选项的PrimeVue.在教程中,它说"包含要与脚本标记一起使用的组件".但有些组件不需要导入就可以工作,只需将它们注册为组件就足够了,如按钮、消息、输入文本等,但对于其他组件,如DataTable,只能首先进行导入.此外,如果有一个用于CDN选项的教程中所有组件的列表来导入,这将是很有帮助的,它只显示如何导入日历.

HTML页面:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>PrimeVue Demo</title>
    <link rel="stylesheet" href="https://unpkg.com/primevue/resources/themes/lara-light-blue/theme.css" />
    <script src="https://unpkg.com/vue@3/dist/vue.global.js"></script>
    <script src="https://unpkg.com/primevue/core/core.min.js"></script>
</head>
<body>
    <div id="app">
        <p-datatable :value="items">
            <p-column field="id" header="Id"></p-column>
            <p-column field="name" header="Name"></p-column>            
        </p-datatable>
        <p-button label="Submit"></p-button>
        <p-inputtext type="text" />
        <p-message>Message</p-message>
    </div>
    <script src="app.js"></script>
</body>
</html>

App.js脚本:

const { createApp, ref } = Vue
const App = {
    setup() {
        const items = ref([{ id: 1, name: 'Item 1'}])
        return { items }
    },
    components: {
        "p-button": primevue.button,
        "p-inputtext": primevue.inputtext,
        "p-message": primevue.message,       
        "p-column": primevue.column,
        "p-datatable": primevue.datatable
    }
}
createApp(App).use(primevue.config.default).mount("#app")

其他组件可以工作,但DataTable在控制台上给出警告消息:

[Vue warn]: Component is missing template or render function. 
  at <PDatatable value= ...

因此,当导入DataTable组件时,问题就解决了:

<script src="https://unpkg.com/primevue/datatable/datatable.min.js"></script>
<script src="https://unpkg.com/primevue/column/column.min.js"></script>

虽然其他部件不需要进口.

推荐答案

如果您使用CDN,则需要单独加载组件(参见docs),因此对于DataTable和Column,您需要添加:

<script src="https://unpkg.com/primevue/datatable/datatable.min.js"></script>
<script src="https://unpkg.com/primevue/column/column.min.js"></script>

以下是它的一个片段:

const { createApp, ref } = Vue

const App = {
  setup() {
    const products = ref([])
    return {
      products
    }
  },
  components: {
    "p-column": primevue.column,
    "p-datatable": primevue.datatable
  }
}
const app = createApp(App)
  .use(primevue.config.default)
  .mount("#app")
  
<script src="https://unpkg.com/vue@3/dist/vue.global.js"></script>
<script src="https://unpkg.com/primevue/core/core.min.js"></script>
    <script src="https://unpkg.com/primevue/datatable/datatable.min.js"></script>
    <script src="https://unpkg.com/primevue/column/column.min.js"></script>
    
<div id="app">
  <p-datatable :value="products">
    <p-column field="code" header="Code"></p-column>
    <p-column field="name" header="Name"></p-column>
    <p-column field="category" header="Category"></p-column>
    <p-column field="quantity" header="Quantity"></p-column>
  </p-datatable>
</div>
<script src="app.js"></script>


有几个组件似乎包含在核心中,因此您不必单独导入它们:

  • 基本组件
  • 徽章 -BaseIcon -按钮
  • 勾选框
  • 对白
  • 下拉列表
  • 输入号
  • 输入
  • 菜单
  • 消息
  • 分页器
  • 传送门
  • 进度条
  • 单选按钮
  • Tiered菜单
  • 虚拟监控器

Vue.js相关问答推荐

用于循环数组的模板元素内的条件渲染

vue : 多个样式的类绑定在一个

vuetify/mdi 不显示图标

vue3 ssr 不返回纯 html

使用 vue / nuxt js 切换 fontawesome 图标

我可以在未注册的组件上构建 Vue.js 失败吗?

如何在 Vue.js 中获取完整的当前日期和时间,而无需编写大量 JavaScript 行

判断 vue-router.beforeEach 不限制对路由的访问

使用 Vue.js (cdn) 在特定元素上切换显示/隐藏

v-model 不会检测到 jQuery 触发事件所做的更改

数据更新后触发 Vue.js 事件

全局禁用 vuetify 组件的涟漪效应

使用 Vue.js 的用户可切换自定义主题

Vuetify 2 个工具栏和 1 个导航抽屉,navigation drawer导航抽屉上方有 1 个工具栏

在 v-for 循环中使用 v-model

删除一行后刷新 Bootstrap-Vue 表

vue-cli-service build --target lib 导入为 lib 时丢失图像路径

使用 Vue 在单个文件组件中调用渲染方法

Vue.js 单向绑定表单

TypeError: Object(...) 不是 Vue 中的函数