Как создать проект Polymer 2.x с помощью Polymer CLI?

Может ли кто-нибудь указать мне учебник, который использует Polymer 2 и polymer-build из Polymer CLI? Когда я использую любой пример в polymer-starter-kit и использую polymer serve, он работает нормально; но когда я использую polymer build и обслуживаю каталог bundled или unbundled, я получаю 404 ошибок. Я даже обновился до новейшей альфа-версии polymer-cli.

Кроме того, используя https://github.com/tony19/generator-polymer-init-2-x-app имеют ту же проблему.


person Jürgen Brandstetter    schedule 23.01.2017    source источник


Ответы (2)


Я также потратил немного времени, чтобы понять это. Пожалуйста, используйте polymer-cli@next вместо polymer-cli

Plain polymer-cli, похоже, не имеет последней сборки и оптимизации для поддержки функций, связанных с Polymer 2.0#Preview.

Вы можете установить polymer-cli@next. В Ubuntu вы можете просто использовать npm install -g polymer-cli@next

После этого объединенная и несвязанная версии приложения, сгенерированные с помощью polymer build, будут работать нормально.

Изменить: образец кода Polymer2.0#Preview можно найти по адресу https://github.com/phani1kumar/phani1kumar.github.io — ветка «devmaster».

sw-precache-config.js - начальная блокировка рендеринга. Это загрузит все ресурсы, необходимые главной странице, чтобы сделать приложение доступным для автономного использования. src/lazy-resources.html загружает ресурсы для следующих маршрутов.

Вам нужно будет получить правильную конфигурацию на основе вашего макета и главной страницы в следующих 3 файлах: sw-precache-config.js, polymer.json, src/lazy-resources.html. Это практика, которой придерживаются в приложении магазина от команды Polymer, вы можете выбрать другой механизм отложенной загрузки. Суть ленивой загрузки заключается в том, чтобы загружать ресурсы после Polymer.RenderStatus.afterNextRender.

Вам также может быть интересна следующая статья: https://medium.com/@marcushellberg/how-i-sped-up-the-initial-render-of-my-polymer-app-by-86.-eeff648a3dc0#.pi2iucwzi

person Phani    schedule 24.01.2017
comment
Нет, это не помогает. У меня все еще те же проблемы. Но по сравнению с решением @tony19 new-build-flags ваше решение компилирует как минимум файл webworker. Можете ли вы опубликовать свой файл полимера.json. Возможно, я не добавил некоторые зависимости. - person Jürgen Brandstetter; 24.01.2017
comment
Обновлен ответ с дополнительными подробностями. Вы можете найти связанный код, сгенерированный из polymer build, в ветке master. - person Phani; 24.01.2017
comment
спасибо за добавление публикации нашей версии. Проблема заключалась в дополнительных зависимостях. По какой-то причине polymer-starter-kit или generator-polymer-init-2-x-app не включены. И поэтому не работает. - person Jürgen Brandstetter; 24.01.2017
comment
@Phani Я заметил, что в вашем проекте не используется новый синтаксис ES6 для определений элементов Polymer 2.0. polymer-cli@next (0.18.0-alpha.8) еще не поддерживает минимизацию ES6, поэтому вы получите ошибки Uglify, если попытаетесь запустить polymer build с кодом ES6. - person tony19; 25.01.2017
comment
Спасибо @tony19 за указание на это. Да, моя текущая реализация опирается на гибридный режим, который поддерживает полимер 2.0. И, кроме того, это тестовое приложение, которое я создаю, чтобы изучить Polymer. Скоро у меня будут классы синтаксиса ES6, окончательная версия будет выпущена командой Polymer. - person Phani; 25.01.2017

Я заметил ошибку в генераторе, заключающуюся в том, что в подгенераторе starter-kit отсутствовала зависимость от webcomponentsjs, что вызывало ошибку с polymer-build. И, как вы обнаружили, в polymer.json также отсутствовали зависимости для поддержки полифилла webcomponentsjs, что вызывало ошибку 404 в браузерах с полифиллом (таких как Linux Chrome). Теперь все это исправлено в v0.0.6.

Вам также понадобится версия polymer-build, которая не пытается uglify использовать JavaScript, что может привести к сбою из-за неспособности распознать ES6. Ветвь new-build-flags репозитория polymer-cli заменяет uglify на babili для минификации ES6 (добавлено в PR#525). Вы можете проверить эту ветку и собрать ее самостоятельно, или вы можете установить ее отсюда:

npm i -g tony19-contrib/polymer-cli#dist-new-build-flags

Для удобства эта ветвь добавляется как devDependency при создании стартового комплекта 2.0 с generator-polymer-init-2-x-app.


Чтобы построить и обслуживать проект Polymer 2.0 Starter Kit:

  1. Создайте Starter Kit 2.0 (используя generator-polymer-init-2-x-app, v0.0.6 или новее), выбрав 2-x-app - starter application template:

    $ polymer init
    ? Which starter template would you like to use? 
      ...
      2-x-app - (2.0 preview) blank application template 
      2-x-app - (2.0 preview) blank element template 
    ❯ 2-x-app - (2.0 preview) starter application template 
    
  2. После завершения работы генератора проекта соберите проект с помощью yarn build:

    $ yarn build
    info:    Deleting build/ directory...
    info:    Generating build/ directory...
    info:    Build complete!
    

    Обратите внимание, что на выходе только build/, а не build/bundled/ и build/unbundled/.

  3. Отправьте содержимое каталога сборки и автоматически откройте его в браузере:

    $ polymer serve build -o
    

    Вы также можете использовать его с другим инструментом, чтобы убедиться, что выходные данные сборки будут работать вне контекста любых инструментов Polymer. Запустите сервер Python в build/ и вручную откройте для него браузер:

    $ cd build
    $ python -m SimpleHTTPServer
    
person tony19    schedule 23.01.2017
comment
Спасибо за отличные инструкции. После выполнения вашей инструкции я не получаю никаких ошибок сборки. Но вроде нужные документы еще не все скопированы в папку Bower. Взгляните на эту суть с ошибками gist.github.com/BrandiATMuhkuh/d10557ee7bba9dccc06e31b99b4fb5c4> - person Jürgen Brandstetter; 23.01.2017
comment
@JürgenBrandstetter Странно. Я не вижу такого поведения. У меня macOS, Chrome 55. Какая у вас среда? Эти файлы действительно отсутствуют в вашем каталоге build/? Вносили ли вы какие-либо изменения в шаги, описанные выше? - person tony19; 24.01.2017
comment
Нет, я не вносил никаких изменений в шаги, описанные выше. Да, файлы отсутствуют. Когда я копирую весь свой каталог Bower в каталог сборки, он работает. Кажется, что все, кроме вещей, связанных с веб-компонентами, то есть все, что не указано в файле Bower, не копируется. - person Jürgen Brandstetter; 24.01.2017
comment
Интересный. Какая у вас ОС? - person tony19; 24.01.2017
comment
Конечно. Последняя версия Ubuntu с последней версией узла. - person Jürgen Brandstetter; 24.01.2017
comment
Спасибо за совет! Это действительно ошибка. Похоже, что другие файлы, которые вы указали, необходимы для полифилла веб-компонентов, поэтому я не видел проблемы (я тестировал только в Chrome, но затем увидел симптомы в Firefox после того, как вы упомянули об отсутствующем списке файлов в package.json). По-видимому, для Linux Chrome требуются полифиллы. Я исправлю package.json генератора и протестирую в других браузерах, кроме Chrome. - person tony19; 25.01.2017
comment
В текущем выпуске PSK (предварительная версия 2.0) единственным файлом веб-компонентов, который необходимо было указать в package.json, был webcomponents-lite.min.js. Похоже, другие файлы также должны быть перечислены в 2.0-preview. - person tony19; 25.01.2017
comment
Я сообщил об проблеме в репозитории PSK, но они просто удалили Ветвь PSK 2.0-preview, чтобы избежать погони за движущейся целью, пока Polymer 2.0-preview все еще находится в движении. - person tony19; 25.01.2017
comment
Я только что попробовал вашу новую версию v0.0.6. Несколько неожиданных вещей: 1) вы используете yarn вместо npm 2) файл рабочих служб не создается и не помещается в папку сборки 3) В противном случае минификация и связывание не происходит. Найти работу. - person Jürgen Brandstetter; 06.02.2017