2

Мы разрабатываем расширение Chrome с использованием Ember CLI, но с трудом получаем маршруты/ресурсы, чтобы хорошо играть с Chrome, так как маршрут . маршрут не запускается правильно.Как настроить маршруты Ember в расширении Chrome?

Шаги, которые мы предприняли:

  • Создать приложение по умолчанию с помощью CLI Ember: ember new myapp.
  • Мы не определяем какие-либо маршруты, так как мы должны получить генерируемый нами индекс.
  • ember build --environment production.
  • Положить manifest.json файл для определения расширения в dist/ папка.
  • В Chrome мы загружаем распакованное расширение ... 'и указываем на папку dist/.

Обычно, если приложение Ember был размещен на сервере, где будет Ember служит применение, как hxxp: // локальный: 4200/, загрузит приложение и все маршруты будут висеть от этого.

Однако, как это расширение Chrome, он не загружает index.html при использовании пустого маршрута, такой, что собирается хром-расширений: // (EXTENSION_ID)/ выдает ошибку ' Эта веб-страница не найдена «, поскольку я полагаю, что Chrome не перенаправляет на index.html по умолчанию.

Если указать расширение на хром-расширения: // (EXTENSION_ID)/index.html он загружает приложение Ember, но угасающий выдает ошибку:

Uncaught UnrecognizedURLError: /index.html

Один путь вокруг это определить index.html маршрут в маршрутизаторе, как показано ниже, но это не является идеальным:

Router.map(function() { 
    this.resource('index', { path: '/index.html' }); 
}); 

в качестве альтернативы, вы можете изменить тип расположения в «хэш»:

locationType: 'hash' 

В этом случае это позволит перейти к index.html без дополнительного маршрута выше, но как тогда маршруты могут отвиснуть от этого? Например, переход на chrome-extension: // (extension_id)/some_other_action никогда не заставит приложение Ember загружаться в первую очередь.

Вопрос: Как можно объявить маршруты Ember в расширении Chrome?

ответ

4

После этого полного набора шагов, который позволит вам создать приложение, готовое для Chrome с рабочими маршрутами:

Создать приложение по умолчанию с помощью Ember CLI

ember new myapp

Обновления конфига /environment.js для включения «locationType: hash»

module.exports = function(environment) { 
    var ENV = { 
    ... 
    locationType: 'hash', 
    ... 
    } 
} 

Теперь, когда «хэш» используется, это означает, что необходимо использовать следующий шаблон:

chrome-extension://(extension_id)/index.html#/about?myparam={}

Поместите файл manifest.json определить расширение в общественности/папки

Ничего особенного здесь

не Определение основного маршрута

Router.map(function() { 
    this.route('about'); 
}); 

Построить приложение

ember build --environment production

В Chrome 'Загрузить распакованное расширение ...' и указать его на Dist/папку

Наконец, указать браузер на :

chrome-extension://(extension_id)/index.html#/about

Хотел бы поблагодарить Джастина МакНалли и его исходный код ember-cli-chrome за некоторые указатели на правильное определение locationType.

Смежные вопросы