Javascript 如何在另一个文件上调用同名函数
我用html写O.S,我的操作系统可以通过指定主脚本来支持应用程序,现在我有两个应用程序,一个执行file1,另一个执行file2。 我有三个文件: file1.jsJavascript 如何在另一个文件上调用同名函数,javascript,html,Javascript,Html,我用html写O.S,我的操作系统可以通过指定主脚本来支持应用程序,现在我有两个应用程序,一个执行file1,另一个执行file2。 我有三个文件: file1.js function main() { //this is a code . . . } file2.js function main() { //this is another code . . . } 我只想调用其中一个函数,file1的函数: System.js var System = {
function main() {
//this is a code
. . .
}
file2.js
function main() {
//this is another code
. . .
}
我只想调用其中一个函数,file1的函数:
System.js
var System = {
/*
*Used Mode:
*
* var app = System.openApp(package);
*/
openApp:function(package) {
//starts the app:
var path = "/@APP:/" + package + "/app.xml";
console.log("Opening " + package + "...");
var xhttp = new XMLHttpRequest();
xhttp.open("GET", path, true);
xhttp.onreadystatechange = function() {
if (this.readyState == 4 && this.status == 200) {
console.log("The app \"" + xhttp.responseXML.getElementsByTagName("Manifest")[0].getElementsByTagName("AppName")[0].childNodes[0].nodeValue + "\" was successfully loaded!");
if (xhttp.responseXML.getElementsByTagName("Manifest")[0].getElementsByTagName("AppMode")[0].childNodes[0].nodeValue = "prompted") {
this.openMainAct();
}
}
};
xhttp.onerror = function() {
console.error("The app \"" + package + "\" was not found\n ERROR_CODE:" + xhttp.readyState);
};
xhttp.send();
//subfunctions:
/*
*Used Mode:
*
* app.setIcon("path/to/file.png");
*/
this.setIcon = function(icon) {
// @TODO: Making Icons, just ignore;
};
/*
*@DEPRECATED: Use the method "openAct"
*
*Used Mode:
* var MyAct = app.openMainAct();
*/
this.openMainAct = function() {
var a = document.createElement("script");
a.src = this.getAppMainSource;
document.body[0].appendChild(a);
//And HERE opens the main function!
};
//vars:
this.getManifest = xhttp.responseXML.getElementsByTagName("Manifest")[0];
this.getPackage = package;
this.getAppFolder = "/@APP:/" + package;
this.getAppMode = this.getManifest.getElementsByTagName("AppMode")[0];
this.getName = xhttp.responseXML.getElementsByTagName("Manifest")[0].getElementsByTagName("AppName")[0];
this.getJSource = this.getAppFolder + "/" + this.getManifest.getElentsByTagName("JSDir")[0];
this.getJSDir = this.getManifest.getElementsByTagName("JSDir")[0];
this.getVersion = this.getManifest.getElementsByTagName("Version")[0];
this.getAppMainSource = this.getJSource + "/" + this.getManifest.getElementsByTagName("AppMain")[0] + ".js";
this.getAppMain = this.getManifest.getElementsByTagName("AppMain")[0];
this.getPermissionGroup = this.getManifest.getElementsByTagName("AppPerm")[0];
this.getPermission = this.getPermissionGroup.getElementsByTagName("AddPerm");
}
};
但是main.js调用所有函数
如下所示,我们需要调用函数来启动应用程序:
var app = System.openApp("a.b.c");
并且必须存在一个同名文件夹
这是我的舱单:
<?xml version="1.0" encoding="utf-8" ?>
<Manifest>
<JSDir>JS</JSDir>
<Version>0.0.1</Version>
<AppName>Documentação de API do EDOS</AppName>
<AppMode>windowed</AppMode>
<AppMain>MainAct</AppMain>
<AppPerm>
<AddPerm>edos.permission.WRITE_APP</AddPerm>
<AddPerm>edos.permission.READ_APP</AddPerm>
</AppPerm>
</Manifest>
JS
0.0.1
阿皮多埃多斯文件
开窗
主要行为
edos.permission.WRITE_应用程序
edos.permission.READ_应用程序
对不起,如果我给太多的信息。。。
PS:我不想要API 导出文件底部的函数。 并在文件顶部导入函数 导入函数时,该函数将在该文件
范围中可用,并且可以在导入时选择的名称下访问
如果将函数导出为命名
export main;
您可以使用别名导入它
import { main as mainOne } from "./file1.js"
import { main as mainTwo } from "./file2.js"
// Call functions
mainOne();
mainTwo();
或者,如果将其导出为默认值(每个文件只能有一个默认导出)
export default main
然后你可以把它作为任何东西导入
从“/file1.js”导入新名称
有关更多信息和示例,请查看导出和导入文档。Hi Eduardo,请尝试添加更多代码信息,以便更轻松地堆叠溢出成员以帮助您;对于您的问题,您应该至少添加System.js文件代码,以查看如何导入其他2个js文件。好的,请稍候!对不起,评论语言是pt-BR。好的,结束了!但是我会重复10次,所以函数openApp()中的每个main都是NewName?我可以在“from”中使用一个字符串并在一个函数中使用import吗?我从来没有使用过这个!请参阅我的最新答案。现在就去睡觉,希望有帮助!:)