在混合 ES/TS 项目中使用 Vue 组件

Posted

技术标签:

【中文标题】在混合 ES/TS 项目中使用 Vue 组件【英文标题】:Using Vue components in a mixed ES/TS project 【发布时间】:2018-03-11 20:52:00 【问题描述】:

我希望能够为 javascript 和 TypeScript 使用 Vue 文件,因此在 <script> 标记中,当 lang 未设置或设置为 js 时使用 ES2015,而当 <script lang="ts"> 使用 TypeScript 时。我有一个现有的 vue+ts 项目,现在我们决定要在用 ES6 编写的 vue-paper-dashboard 之上构建应用程序。我仍然想将我的组件保存在 TS 和 .vue 文件中,并带有 <script lang="ts">。所以从空的仪表板项目开始,用 TS/TSLint 替换 Babel/ESLint。项目仍然可以正常加载:vue-paper-dashboard-typescript,但是,当我在任何.vue 文件中设置<script lang="ts"> 时,我会收到如下错误:

Module build failed: Error: Could not find file: 'src/components/Dashboard/Views/Overview.vue'.

我已经将--allowJs 编译器选项设置为true。我还尝试将入口文件从main.js 更改为main.ts,将entryFileIsJs: true 用于ts-loader,但无济于事。如何让 vue 单文件组件在混合 ES/TS 项目中工作?

谢谢!

【问题讨论】:

【参考方案1】:

我想我找到了解决办法。由于某种原因,它在我第二次尝试将入口点从 main.js 更改为 main.ts 并在 ts 文件中进行必要的修复以进行编译时起作用。

我在这里有一个工作示例:vue-paper-dashboard-typescript


更新: Creative-Tim 现在提供Vue Paper Dashboard 2 Pro(不是免费的),它使用支持 TypeScript 的 CLI 3。使用以下命令为项目添加 TS 支持:vue add @vue/typescript

【讨论】:

以上是关于在混合 ES/TS 项目中使用 Vue 组件的主要内容,如果未能解决你的问题,请参考以下文章

vue-cli构建项目中组件的使用

Cordova+vue 混合app开发创建Cordova项目

Cordova+vue 混合app开发创建Cordova项目

混合 vue-template-compiler 必须安装为 laravel 项目中的对等依赖项

Vue.js 基础学习之混合mixins

如何使用 Vue 类组件在 NuxtJs 项目中注册附加 Hook