#javascript
#язык JavaScript
Вопрос:
Я переношу код, который раньше не использовал собственные модули JS.
// File: form.js // `lc` is a global object I attach each file's functions to. let lc = window.lc || {} lc.form = {}; lc.form.add = function() { // add a form }
И тогда будет называться как lc.form.add()
, что приятно, потому что у этого слова add
есть контекст.
Однако теперь, когда я изменяю код для использования модулей JS:
// File: form.mjs export function add() { // add a form }
И тогда будет называться как add()
, что не имеет контекста. Теперь я понимаю, что мог бы сделать:
import {add as formAdd} from '/form.mjs'
Но это похоже на шаг назад, чтобы начать называть смурфом все импортируемые вещи.
Есть ли способ импортировать модуль, как в Python, а затем вызывать функции модулей. Например, используйте точечную и т. Д. нотацию для доступа к его функции, что-то вроде этого:
import '/form.mjs' as form form.add()
Ответ №1:
Вы ищете импорт пространства имен:
import * as form from '/form.mjs'; form.add();
Комментарии:
1. Это идеальный, удивительно приятный синтаксис от JS! Счастливых дней!
2. Странно, что
export default
это исключено из этого пути.*
это не значит, что все, как можно было бы предположить, должно быть каким-то странным, попался с JS.3. Так ли это? Я был почти уверен, что ты справишься
form.default
. Если вы это сделаете , он будет проигнорированexport * from …
, потому что там у него будет высокая вероятность столкновений с другими экспортами по умолчанию.