第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

是否可以在JavaScript(node.js)中導(dǎo)入變量?

是否可以在JavaScript(node.js)中導(dǎo)入變量?

幕布斯6054654 2019-09-27 15:45:37
我在中有變量app.js:var G = {};module.exports = G;var DATA = G.DATA = 'DATA';var F1 = G.F1 = function(val){  return val;};通過這種方式,我可以導(dǎo)出對(duì)象下的變量G,同時(shí)可以直接寫入變量DATA而無需G.前綴。到現(xiàn)在為止還挺好?,F(xiàn)在,我想運(yùn)行一個(gè)測(cè)試了app.js在test.js:var G = require('./app.js');console.log(G.DATA);  // -> DATA這可行,但是我也想直接寫DATA沒有G.前綴的變量來訪問變量console.log(DATA);  // -> DATA當(dāng)然可以var DATA = G.DATA;對(duì)于每個(gè)變量(屬性)導(dǎo)出和所需的模塊G對(duì)象,但顯然,將每個(gè)變量手動(dòng)添加到測(cè)試文件以對(duì)應(yīng)G對(duì)象是一個(gè)繁瑣的過程。有什么辦法可以自動(dòng)執(zhí)行此操作?到目前為止,我很悲觀JS function包含var在自己的范圍內(nèi),因此從理論上講,沒有辦法var為每個(gè)對(duì)象屬性都提供一個(gè)輔助函數(shù)。謝謝。PS。我想避免任何eval或VM節(jié)點(diǎn)解決方案。我過去曾經(jīng)嘗試過,但問題太多了。
查看完整描述

2 回答

?
Cats萌萌

TA貢獻(xiàn)1805條經(jīng)驗(yàn) 獲得超9個(gè)贊

我可以為每個(gè)屬性導(dǎo)出和所需模塊G對(duì)象分配局部變量,但是顯然,將每個(gè)變量手動(dòng)添加到測(cè)試文件以對(duì)應(yīng)G對(duì)象是一個(gè)繁瑣的過程。


不,這就是應(yīng)該的工作方式。您-并且只有您-負(fù)責(zé)模塊范圍中存在哪些局部變量。所包含模塊的“導(dǎo)出變量”中的任何更改均不應(yīng)破壞您的代碼。


訪問導(dǎo)入的模塊上的屬性(具有自選名稱)是一種方法。這與Python import app或相當(dāng)import app as g。


如果您希望某些特殊屬性作為局部變量,通常會(huì)像在Python中一樣手動(dòng)選擇它們from app import DATA, F1。在JS中,您將需要一個(gè)多條var語句,就像您在問題中顯示的那樣。但是,有一個(gè)語法功能稱為解構(gòu)分配,這將使此操作更加流暢。您可以在JavaScript 1.7+(Gecko),CoffeeScript或EcmaScript 6中使用它:


var {DATA, F1} = require("app.js");

有什么辦法可以自動(dòng)執(zhí)行此操作?


是的,不是。您不應(yīng)該這樣做,但是可以-就像Python的皺眉一樣from app import *。引用他們說的話,對(duì)于JavaScript同樣如此:


[它]在解釋器中引入了一組未知的名稱,可能隱藏了您已經(jīng)定義的某些內(nèi)容。


請(qǐng)注意,通常不贊成*從模塊或包進(jìn)行導(dǎo)入,因?yàn)檫@通常會(huì)導(dǎo)致可讀性差的代碼。但是,可以使用它來保存交互式會(huì)話中的鍵入。


在JavaScript中,您可以[1] 使用with-statement:


with (require("app.js")) {

    …

}

[1]:并非處于ES5.1 嚴(yán)格模式下 -建議進(jìn)行優(yōu)化


查看完整回答
反對(duì) 回復(fù) 2019-09-27
?
慕田峪7331174

TA貢獻(xiàn)1828條經(jīng)驗(yàn) 獲得超13個(gè)贊

好吧,我的項(xiàng)目基本上是在JS,像頂部的解釋coffee-script,我想有一個(gè)變量DATADATAG.DATA在測(cè)試過程中。到目前為止,我在同一app.js文件中有一個(gè)測(cè)試代碼,但是如果可能的話,我想將對(duì)象(在這種情況下G)中的變量導(dǎo)出到單獨(dú)的文件-中test.js。

查看完整回答
反對(duì) 回復(fù) 2019-09-27
  • 2 回答
  • 0 關(guān)注
  • 891 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)