我如何正确引用 electron-forge 样板中的 Vue.js node_module?
How do i correctly reference Vue.js node_module from electron-forge boilerplate?
这是一道菜鸟题。我正在尝试对 Electron、Vue、Webpack 和 Node 进行一些初步的尝试。为此,我使用 electron-forge 制作了一个样板项目作为起点,如下所示:
npx create-electron-app my-project --template=typescript-webpack
创建项目后,一切(似乎)都按预期工作。如果我进行任何编辑,我可以看到 webpack 被调用并且重新加载内容会显示我的编辑。到目前为止一切顺利。
我的下一步是尽可能介绍最简单的 Vue.js 'hello world' 内容。首先,我使用 NPM 安装 Vue.js,如下所示:
npm install "vue"
然后我将样板 index.html 编辑为如下所示:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Hello World!</title>
<script src="../node_modules/vue/dist/vue.js"></script>
</head>
<body>
<h1> Hello World!</h1>
<p>Welcome to your Electron application.</p>
<div id="vue-app">
{{ message }}
</div>
<script>
var app = new Vue({
el: '#vue-app',
data: {
message: 'This message is from Vue!'
}
})
</script>
</body>
</html>
这是行不通的。如果我更改脚本标签以将 CDN 用于 Vue.js 脚本(而不是 node_modules 文件夹),一切都会按预期进行。
我的结论是,尽管我可以在 设计时 的 node_modules 文件夹中引用 Vue.js,但我在 [=] 的输出中不存在该位置31=]运行次。我不确定这是由于 webpack 的配置方式,还是由于 electron 的工作方式 - 但它强烈暗示我必须以编程方式或通过 webpack 配置正确引用脚本来做一些事情。
那么 'reference' 本地 Vue.js 脚本的正确方法是什么?
谢谢!
你需要通过像 webpack 这样的打包器来引用 vue(否则,就像你说的,它在运行时不可用)。您的方法将不起作用,因为生成的文件结构与您在 'design time'
期间拥有的文件结构不同
这是一个使用 vue-cli 设置入门项目的示例:
npm i -g @vue/cli
vue create project-name
cd project-name
vue add electron-builder
npm install
完成。您的项目正在运行。
如果您使用 vue-router,稍后您会遇到一个小警告。在 router.js
中添加以下内容(它将路由器模式更改为散列而不是历史,因此它适用于电子)。
export default new Router({
mode: process.env.IS_ELECTRON ? 'hash' : 'history',
})
作为旁注,vue-cli 抽象掉了很多 配置。如果你迷路了,只需用
打印出来
vue inspect > ./app/inspect.js.md
(> 之后的部分表示保存到命名文件,否则它会在您的控制台中打印出来。)检查一下,这就是您要查找的正确设置,只是使用 vue-cli 自动创建.
此外,查看生成的 /public/index.html
,它没有提到导入 vue ;)
祝你好运
经过一些修补,我想出了这个解决方案:
HTML:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Hello World!</title>
</head>
<body>
<h1> Hello World!</h1>
<p>Welcome to your Electron application.</p>
<div id="vue-app">{{ message }}</div>
</body>
</html>
然后我在 electron-forge 样板中添加了一个导入语句 renderer.ts,像这样:
import './vueapp.js';
最后,我创建了一个名为 vueapp.js 的新脚本文件,如下所示:
import Vue from 'vue/dist/vue.js';
var app = new Vue({
el: '#vue-app',
data: {
message: 'Hello Vue!'
}
});
我欢迎反馈和评论;这可能是正确的方法,也可能不是正确的方法,我很想听听其他人是如何做到的。
这是一道菜鸟题。我正在尝试对 Electron、Vue、Webpack 和 Node 进行一些初步的尝试。为此,我使用 electron-forge 制作了一个样板项目作为起点,如下所示:
npx create-electron-app my-project --template=typescript-webpack
创建项目后,一切(似乎)都按预期工作。如果我进行任何编辑,我可以看到 webpack 被调用并且重新加载内容会显示我的编辑。到目前为止一切顺利。
我的下一步是尽可能介绍最简单的 Vue.js 'hello world' 内容。首先,我使用 NPM 安装 Vue.js,如下所示:
npm install "vue"
然后我将样板 index.html 编辑为如下所示:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Hello World!</title>
<script src="../node_modules/vue/dist/vue.js"></script>
</head>
<body>
<h1> Hello World!</h1>
<p>Welcome to your Electron application.</p>
<div id="vue-app">
{{ message }}
</div>
<script>
var app = new Vue({
el: '#vue-app',
data: {
message: 'This message is from Vue!'
}
})
</script>
</body>
</html>
这是行不通的。如果我更改脚本标签以将 CDN 用于 Vue.js 脚本(而不是 node_modules 文件夹),一切都会按预期进行。
我的结论是,尽管我可以在 设计时 的 node_modules 文件夹中引用 Vue.js,但我在 [=] 的输出中不存在该位置31=]运行次。我不确定这是由于 webpack 的配置方式,还是由于 electron 的工作方式 - 但它强烈暗示我必须以编程方式或通过 webpack 配置正确引用脚本来做一些事情。
那么 'reference' 本地 Vue.js 脚本的正确方法是什么?
谢谢!
你需要通过像 webpack 这样的打包器来引用 vue(否则,就像你说的,它在运行时不可用)。您的方法将不起作用,因为生成的文件结构与您在 'design time'
期间拥有的文件结构不同这是一个使用 vue-cli 设置入门项目的示例:
npm i -g @vue/cli
vue create project-name
cd project-name
vue add electron-builder
npm install
完成。您的项目正在运行。
如果您使用 vue-router,稍后您会遇到一个小警告。在 router.js
中添加以下内容(它将路由器模式更改为散列而不是历史,因此它适用于电子)。
export default new Router({
mode: process.env.IS_ELECTRON ? 'hash' : 'history',
})
作为旁注,vue-cli 抽象掉了很多 配置。如果你迷路了,只需用
打印出来vue inspect > ./app/inspect.js.md
(> 之后的部分表示保存到命名文件,否则它会在您的控制台中打印出来。)检查一下,这就是您要查找的正确设置,只是使用 vue-cli 自动创建.
此外,查看生成的 /public/index.html
,它没有提到导入 vue ;)
祝你好运
经过一些修补,我想出了这个解决方案:
HTML:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Hello World!</title>
</head>
<body>
<h1> Hello World!</h1>
<p>Welcome to your Electron application.</p>
<div id="vue-app">{{ message }}</div>
</body>
</html>
然后我在 electron-forge 样板中添加了一个导入语句 renderer.ts,像这样:
import './vueapp.js';
最后,我创建了一个名为 vueapp.js 的新脚本文件,如下所示:
import Vue from 'vue/dist/vue.js';
var app = new Vue({
el: '#vue-app',
data: {
message: 'Hello Vue!'
}
});
我欢迎反馈和评论;这可能是正确的方法,也可能不是正确的方法,我很想听听其他人是如何做到的。