使用导入的Javascript函数ES6访问主文件中的全局变量

Nat*_*ers 6 javascript ecmascript-6 javascript-import vuejs2

我正在使用Vue.js但只是简单的JS文件而不是vue文件,我正在将一个组件导入我的主要,app.js如下所示:

import autoPosts from './components/autoPosts.js';
Run Code Online (Sandbox Code Playgroud)

它导入它很好,但我试图访问这些全局变量.在人们因使用全局变量而摧毁我之前,你能告诉我这是否可行.

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

import autoPosts from './components/autoPosts.js';
Run Code Online (Sandbox Code Playgroud)

它不读取apiRootacfApiRoot在该组件内,是否在变量之前或之后包含它.

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

Ber*_*rgi 10

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

// config.js
export const apiRoot    = location.origin + '/wp-json/wp/v2/';
export const acfApiRoot = location.origin + '/wp-json/acf/v3/';
Run Code Online (Sandbox Code Playgroud)

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

// components/autoPosts.js
import { apiRoot, acfApiRoot } from '/config.js';
…
Run Code Online (Sandbox Code Playgroud)


小智 6

只是使用

const apiRoot = 'whatever';
Run Code Online (Sandbox Code Playgroud)

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

要使用全局变量,请将其添加到窗口中;

window.apiRoot = 'whatever';
Run Code Online (Sandbox Code Playgroud)

并且可以从任何其他类使用简单的变量名称访问它

console.log(apiRoot); // outputs 'whatever'
Run Code Online (Sandbox Code Playgroud)

  • `window` 仅在浏览器脚本中可用,但在 Nodejs(或其他服务器端)应用程序中不可用。 (2认同)