Как использовать polyfill string.prototype.matchall? - PullRequest
0 голосов
/ 19 сентября 2019

Я хочу, чтобы метод String.prototype.matchAll() также работал в браузере Edge.Так что подумал об использовании пакета "string.prototype.matchall" npmjs

Я установил этот пакет и импортировал в мой main.js файл, например,

import 'string.prototype.matchall';

Я должен использовать этот метод в другом файле, скажем Input.js., поэтому я использую, как показано ниже

const matchAll = require('string.prototype.matchall');

И в методе, где это я на самом деле сопоставляю строки ниже

replace = (original_string) => {
  const regex_pattern = /\\d+@*)]/g;
  const matchAll = require('string.prototype.matchall'); 
  const matches = original_string.matchAll(regex_pattern);
  return matches;
}

, ноmatchAll переменная не используется.Как мне использовать этот string.prototype.matchall polyfill .Может ли кто-нибудь помочь мне с этим?Благодаря.

1 Ответ

0 голосов
/ 19 сентября 2019

Поскольку пакет реализует API es-shim , необходимо вызвать метод shim() ...

require('foo').shim или require('foo/shim') - это функция, которая при вызове вызовет getPolyfill и, если полифил не соответствует встроенному значению, установит ее в глобальную среду.

Это позволит вамиспользуйте String.prototype.matchAll().

const matchAll = require('string.prototype.matchall')
matchAll.shim()

const matches = original_string.matchAll(regex_pattern)

В противном случае вы можете использовать его автономно

require('foo') - это спецификация JS или встроенная функция.Однако, если поведение функции зависит от получателя (значение «this»), то первый аргумент этой функции будет использоваться в качестве этого получателя.Пакет должен указать, имеет ли это место в своем README

const matchAll = require('string.prototype.matchall')

const matches = matchAll(original_string, regex_pattern)

Чтобы использовать импорт модуля ES6, вы должны использовать что-то подобное в верхней части вашего скрипта (не в пределах вашей replace функции)

import shim from 'string.prototype.matchall/shim'
shim()
...