lightarhont
@lightarhont
python/php developer

Как понять — import { Application } from 'backbone.marionette'?

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <script src="libs/bower_components/jquery/dist/jquery.min.js"></script>
        <script src="libs/bower_components/underscore/underscore.js"></script>
        <script src="libs/bower_components/backbone/backbone.js"></script>
        <script src="libs/bower_components/backbone.radio/build/backbone.radio.js"></script>
        <script src="libs/bower_components/backbone.eventrouter/dist/backbone.eventrouter.min.js"></script>
        
        <script src="libs/bower_components//backbone.marionette/lib/backbone.marionette.min.js"></script>
        <!--
        <script src="libs/node_modules/path-to-regexp/index.js"></script>
        <script src="libs/node_modules/cherrytreex/cherrytree.js"></script>
        <script src="libs/node_modules/marionette.routing/marionette.routing.js"></script>
        <script type="module" src="js/test.mjs"></script>-->
        <script type="module" src="js/start.js"></script>
        <link rel="stylesheet" href="css/styles.css">
        <title></title>
    </head>
    <body>
        <div id="mwr">
            
        </div>
    </body>
</html>


start.js
import Bb from 'backbone';
import { Application } from 'backbone.marionette';
'use strict';


Ответ браузера: TypeError: Error resolving module specifier: backbone.marionette

В виду того что в веб разработке меня не было больше 2 лет, я отстал особенно в js и не понимаю хоть как почему где то указывают расширение файла, а где то нет. А гуглёжка не помогает, в этом примере.

Т.е. поему пишут: backbone.marionette а не backbone.marionette.js и почему не пишут путь...
  • Вопрос задан
  • 99 просмотров
Решения вопроса 1
dimovich85
@dimovich85 Куратор тега JavaScript
https://u-academy.net/
Расширение писать не обязательно, если этот файл .js
Путь пишут, если это не node_modules, а Ваш файл, который Вы хотите импортировать, и как следствие, не известно, где он лежит.
Если файл, который импортируете, находится в node_modules, то webpack найдет его сам.
import {Aplication} это значит, что из файла экспортируется не один какой-то объект по умолчанию, и поэтому, когда Вы делаете импорт Вам надо указать, что именно Вы хотите импортировать из указаного модуля.
Фигурные скобки - это деструктуризация: https://learn.javascript.ru/destructuring

Вот, про систему модулей: https://learn.javascript.ru/modules
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
john36allTa
@john36allTa
alien glow of a dirty mind
Если взглянуть в исходник, то внизу можно найти строку:
exports.Application = Application;
Это алиас, который Вы и цепляете import`ом. И, вроде как, если
<script type="module" ... не нужно указывать ".js"
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы