我正在尝试将数组从js文件导入到另一个js文件。例如,link:
file1.js:
var array = ['one', 'two', 'three'];file2.js:
import { array } from 'file1'我的idle说“当前的Javascript版本不支持导入声明”。如何导入此数组?
感谢您的帮助
发布于 2017-12-19 06:41:08
正如您链接的文章中所提到的,ES6中提供了import。
我认为您正在编写ES5 JavaScript,那么您将需要一个像Babel这样的ES6转译器。
https://codeburst.io/es5-vs-es6-with-example-code-9901fa0136fc
发布于 2017-12-19 07:47:23
importing只允许在ES6中使用,可以说是javascript的最新版本。浏览器现在才开始能够“理解”ES6,而且他们在一段时间内还不能完全理解它。目前,浏览器对javascript的前一个版本ES5理解得很好。既然是ES6,那么如何编写使用import的代码呢?
不幸的是,您需要一些特殊的工具来将您在ES6中编写的代码更改为ES5,以便浏览器能够理解您的代码。这被称为转译。到目前为止,名为Babel的工具是目前使用的最流行的转译器。但这还不是全部。您需要另一个工具来捆绑以ES6语法编写的模块。Rollupjs和Webpack是完成此任务的最流行的工具。
学习这些工具可能需要几个星期的阅读和尝试,所以不幸的是,我不能在这里用一个答案很好地解释它们,让您完全理解它们。基本上,使用捆绑所做的事情,使用您的示例:file1.js和file2.js将被组合到一个最终文件bundle.js中,这是您将在html中包含<script src="bundle.js">的文件。file2.js称为模块。这个新功能如何帮助编写更好的代码?我们可以在模块中编写我们的大部分代码,然后在特定的页面上import我需要的任何模块。如果我在page1.html上需要一个倒计时定时器,我会创建一个包含倒计时定时器所需代码的模块,并import该倒计时定时器模块。如果我需要一个倒计时计时器在6个月后的新页面上,我会在这个新页面上import倒计时计时器模块。代码可重用性。
Webpack比Rollup更受欢迎,但我建议使用Rollup来很好地了解绑定器的实际功能。事实上,我们在我们的企业应用程序中使用Rollup,尽管我认为Webpack使用得更广泛,因为除了捆绑之外,它还做了很多事情。
注释:ES6并不是javascript的最新版本;我们已经有了ES7和ES8。事实上,官方的javascript语言还在不断地添加新的特性。问题是,浏览器实现(能够“理解”)这些新功能需要时间。
发布于 2017-12-19 06:51:25
我能想到的在ES5中复制这种行为的最好方法是创建一个带有脚本标记的iframe到您想要的文件。在加载时,您可以获取所需的变量并将其带到父窗口中。然后销毁iframe。
用法如下所示:
import('file-url', 'variable-name', function(imported){
});实现应该是这样的:
function import(filePath, varName, callback){
//create iframe
//create script tag
//add filepath and onload handler
script.onload = function(){
//retrieve variable and
//trigger callback in parent
};
}https://stackoverflow.com/questions/47877472
复制相似问题