vue.js - 使用前缀从 node_modules 导入 Vue
问题描述
我正在使用以下工具在 Ubuntu 20.04 下设置我的开发环境:
- PhpStorm 2020.3 作为 IDE
- CodeIgniter v4
- Vue 3.x
- 顺风 CSS+UI
我创建了一个测试项目并遵循我所做的文档:
npm install tailwindcss@latest
npm install @headlessui/vue @heroicons/vue
npm install vue@next
以及其他创建 CodeIgniter 项目骨架的东西。然后我编写了一个简单的“Hello World”Vue 应用程序:
HTML
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<link href="output.css" type="text/css" rel="stylesheet" />
<script src="https://unpkg.com/vue@next"></script>
<script type="module" src="test1.js"></script>
</head>
<body>
<div id="hello-vue" class="demo">
{{ message }}
</div>
</body>
</html>
JS
const HelloVueApp = {
data() {
return {
message: 'Hello Vue!!'
}
}
}
Vue.createApp(HelloVueApp).mount('#hello-vue')
有用!但据我所知,这没有任何意义:我使用Vue.js
CDN,而我在本地使用npm
.
如果我删除该<script src="https://unpkg.com/vue@next"></script>
行,我需要先导入 Vue,然后才能使用它。
它包含在node_modules
文件夹下。所以我尝试了:
import Vue from "/node_modules/vue/dist/vue.cjs.js"
并且:
import Vue from "../node_modules/vue/dist/vue.cjs.js"
但在这两种情况下,它都找不到文件(错误 404)。什么是正确的语法?
当然该文件存在,如果我从项目的根文件夹中键入:
$ ls node_modules/vue/dist/vue.cjs.js
node_modules/vue/dist/vue.cjs.js
解决方案
您正在混合客户端 javascript 和服务器端 javascript。
该node_modules
目录位于您的服务器中,因此对客户端不可用,客户端是请求您的初始 html 的客户端。当你这样做
<script src="https://unpkg.com/vue@next"></script>
<script type="module" src="test1.js"></script>
您正在使客户端 js 可以访问 Vue,因为它是从https://unpkg.com/vue@next
. 如果你想避免这种情况并使用你的 npm 包,你需要使用像webpack这样的打包器。它将查看您在编写的 js 文件中导入的模块,并准备一个新的js 文件,该文件将包含所有需要的东西(您的代码和 vue 模块代码)。
如果您正确设置了所有内容,您应该能够最终编写一个 js 文件:
import Vue from "vue"
const HelloVueApp = {
data() {
return {
message: 'Hello Vue!!'
}
}
}
Vue.createApp(HelloVueApp).mount('#hello-vue')
无需
<script src="https://unpkg.com/vue@next"></script>
线。
推荐阅读
- typescript - 为什么我们想要一个特定类型的 Observable
- sql - 查询执行时间过长,其中表列包含 Schema json 字符串
- kotlin - 如何避免`@KtorExperimentalAPI` 到处传播?
- html - 如何从此 HTTP 响应中获取对象的属性
- python - 如何将您自己的 .py 文件作为模块导入到 sublime 中的另一个 .py 文件
- github - GitHub Actions:删除所有 Artifacts 后,“您已使用 100% 的 GitHub Storage 包含的服务(GitHub Actions 和 Packages)”
- amazon-web-services - 我如何使用 boto3 在 AWS lambda 中获得最大并发执行数、最小值和平均值
- gradle - 您如何在 gradle 子项目中重新定位 JMH 生成的目录?
- java - 从有界 nextInt(int bound) 结果中查找 Java.util.Random 种子
- ios - Xamarin.iOS 应用请求权限时来自 http 请求的 OperationCanceledException