11

我正在使用Vue.js但只是JS文件而不是vue文件,并且我正在将一个组件导入到我的 main 中app.js,如下所示:

import autoPosts from './components/autoPosts.js';

它可以很好地导入它,但我正在尝试访问这些全局变量。在人们因为使用全局变量而毁掉我之前,你能告诉我这是否可能。

const apiRoot    = location.origin + '/wp-json/wp/v2/';
const acfApiRoot = location.origin + '/wp-json/acf/v3/';

import autoPosts from './components/autoPosts.js';

无论我在变量之前还是之后包含它,它都不会读取apiRoot或包含在该组件中。acfApiRoot

它工作的唯一方法是如果我在我的组件文件中声明变量autoPosts.js

4

3 回答 3

15

仅仅因为app.js是主模块并不意味着在其中声明的变量成为全局变量。但是无论如何你都不应该使用全局变量。相反,创建另一个模块

// config.js
export const apiRoot    = location.origin + '/wp-json/wp/v2/';
export const acfApiRoot = location.origin + '/wp-json/acf/v3/';

您可以在需要常量的地方导入:

// components/autoPosts.js
import { apiRoot, acfApiRoot } from '/config.js';
…
于 2018-09-20T14:29:21.487 回答
6

只是使用

const apiRoot = 'whatever';

不会使其成为全局变量,并且由于未导出,因此不可访问。

要使用全局变量,请将其添加到 window;

window.apiRoot = 'whatever';

并且可以从具有简单变量名的任何其他类中访问它

console.log(apiRoot); // outputs 'whatever'
于 2018-09-20T14:20:31.800 回答
2

不能用窗口吗?

window.apiRoot = location.origin + '/wp-json/wp/v2/';
于 2018-09-20T14:16:56.930 回答