如何从另一个javascript文件使用静态javascript函数?

如何从另一个javascript文件使用静态javascript函数?,javascript,Javascript,您好,谢谢您抽出时间。 我正在尝试使JavaScript示例应用程序正常工作 事实上,我不知道如何使用这个静态函数: core.utils.js static parseUrl(url) { const data = {}; data.filename = ''; data.extension = ''; data.pathname = ''; data.query = ''; let parsedUrl = URL.parse(url);

您好,谢谢您抽出时间。

我正在尝试使JavaScript示例应用程序正常工作

事实上,我不知道如何使用这个静态函数:

core.utils.js

 static parseUrl(url) {
    const data = {};
    data.filename = '';
    data.extension = '';
    data.pathname = '';
    data.query = '';

    let parsedUrl = URL.parse(url);

    data.pathname = parsedUrl.pathname;
    data.query = parsedUrl.query;

    if (data.query) {
      // Find "filename" parameter value, if present
      data.filename = data.query.split('&').reduce((acc, fieldval) => {
        let fvPair = fieldval.split('=');
        if (fvPair.length > 0 && fvPair[0] == 'filename') {
            acc = fvPair[1];
        }
        return acc;
      });
    }

    // get file name
    if (!data.filename) {
      data.filename = data.pathname.split('/').pop();
    }


    // find extension
    let splittedName = data.filename.split('.');
    if (splittedName.length <= 1) {
      data.extension = 'dicom';
    } else {
      data.extension = data.filename.split('.').pop();
    }

    if (!isNaN(data.extension)) {
      data.extension = 'dicom';
    }

    if (data.query &&
      data.query.includes('contentType=application%2Fdicom')) {
      data.extension = 'dicom';
    }

    return data;
  }
但是,浏览器的控制台显示:

Uncaught SyntaxError: Unexpected identifier
错误所在的行是:

import CoreUtils from "../../src/core/core.utils";
我自己也试图解决这个问题,我读到:

然后我按照Fernando Mendez的解释,将js文件导入index.html,如下所示:

    <script src="../../src/core/core.utils.js"></script>
结果是:

Uncaught SyntaxError: Unexpected identifier
在以下行中:

import Validators from './core.validators';
你能帮我一点忙吗?

此外,我的问题与前一个问题有关: 但是我把它分开,因为我认为问题在于JavaScript,而不是库

谢谢你阅读我的文章。

试试这个:

您的
parseUrl(url)
函数应该是公共函数,因此将
静态parseUrl(url)
更改为
导出函数parseUrl(url)

在主javascript文件中,按如下方式导入:

import { parseUrl } from "../../src/core/core.utils";
然后使用它:
var parsed=parseUrl(url)


另外,请检查

您是否试图从另一个js文件调用静态js函数? 看起来你在这里遇到了一些问题

1.
从“../../src/core/core.utils”导入CoreUtils

从您的CoreUtils示例代码中,我没有看到src/core/core_utils.js中导出的
CoreUtils
对象

为了利用
import
语句引用另一个文件中的代码,您需要从原始文件中导出对象。()

这可以通过修改core_utils.js中的函数定义快速完成,如下所示: 将
静态解析url(url){
更改为
导出函数解析url(url){

然后,在application.js中: 将
导入CoreUtils从“./../src/core/core.utils”;
更改为
导入{parseUrl}从“./../src/core/core.utils”

看起来您在从“/core.Validators”导入验证程序时遇到了类似的错误。


希望能有所帮助!

@baao:你可以在尖端浏览器中使用。例如,最新的Chrome。你可以?但是模块加载现在真的可以工作了吗?@T.J.crowder你引用的代码不完整,除非它在
正文中,否则它是一个语法错误。你如何使用它将取决于
core.utils.js
:如果它使用
导出
,那么您只需要使用最先进的浏览器或Transfile,因为浏览器才刚刚获得模块支持。如果没有,它可能支持其他AMD标准,如RequireJS或CommonJS,或者可能只是创建一个全局文件。因此,我们真的需要了解更多信息来帮助您(除上述内容外)@baao:是的,的确如此。但同样是尖端。@baao:FWIW:我们在同一时间提交了相同的答案:)
import Validators from './core.validators';
import { parseUrl } from "../../src/core/core.utils";