Абсолютните пътища не са разрешени в Dart WebComponent

Моята малка проба Dart/Polymer работи добре досега. (GitHub)

Ето yaml файла, който използвам:

name: PolymerHelloWorld
environment:
  sdk: any
dependencies:
  browser: any
  polymer: any
  shadow_dom: any
  mdv: any

transformers:
-  polymer:
    entry_points:
    - web/index.html
    - web/hello-world/hello-world.html
    - web/stopwatch/stopwatch.html

"pub build" произвежда: (На живо отново под GH) въведете описание на изображението тук

Доколкото разбирам, сега имам 2 уебкомпонента: hello-world и хронометър

Направих втори проект, напълно независим от PolymerHelloWorld. Ето index.html: въведете описание на изображението тук

Получавам това съобщение за грешка


pub build
Building PolymerSecondWorld...
[Error from polymer (Linter) on PolymerSecondWorld|web/index.html]:
web/index.html:4:5: absolute paths not allowed: "https://rawgithub.com/MikeMitterer/DART-Sample-PolymerHelloWorld/master/build/hello-world/hello-world.html"

Не е ли това идеята на уебкомпонентите? Пропускам ли нещо?

[Актуализация]
Добавих DART-Sample-PolymerElementConsumer към моя GH-Repo. Включва всички полимерни неща... Тази проба е не проба за стрелички. Той използва полимер за импортиране на компонента. Най-малкото - опитва се да...

Ето HTML кода, който се опитва да изпълни:
https://rawgithub.com/MikeMitterer/DART-Sample-PolymerElementConsumer/master/web/index.html

Codeview:
https://raw.github.com/MikeMitterer/DART-Sample-PolymerElementConsumer/master/web/index.html

HTML-страницата не показва съобщение за грешка - нищо. Само заглавието, но нищо от уебкомпонента.


person Mike Mitterer    schedule 23.01.2014    source източник


Отговори (1)


Ако искате да импортирате Polymer елементи, те трябва да са в пакет Dart (напр. pub.dartlang.org).
Добавяте пакета към вас pubspec.yaml, за да импортирате пакета във вашия проект и
след това можете да импортирате елементи/компоненти от директорията на пакетите.

Polymer също е много деликатен по отношение на пътищата за импортиране в рамките на проект на Dart
и нещо като това, което сте опитали, определено няма да работи
(това обаче може да работи в JavaScript), но това ще изисква изпълнение на код (включен в заредения компонент ), заредени по време на изпълнение, което Dart все още не поддържа. Целият код трябва да е наличен по време на компилиране.

Някои дискусии по тази тема:

РЕДАКТИРАНЕ

Разгледах вашия код и се опитах да разбера коментара ви и съответно разширих отговора си.

За да можете да импортирате компоненти от пакет, компонентите трябва да са в директорията lib на пакета, който искате да импортирате. Уеб страницата, използваща (импортиращи) елементи, трябва да бъде Dart проект (пакет), който импортира компонентния пакет в „pubspec.yaml“. За уеб приложението (index.html, ...) web е правилната директория в пакета.

person Günter Zöchbauer    schedule 23.01.2014
comment
Точно това беше причината да се опитам да импортирам компилирания hello-world. Уеб компонентът трябва да е независим от език + набор от инструменти (рамка). - person Mike Mitterer; 23.01.2014
comment
Добре, но можете да импортирате само от директорията на пакета като „packages/somecomponentpackage/theelement.html“. Също така не виждам къде имате DART-SamplePolymerHelloWorld във вашия pubspec.yaml. - person Günter Zöchbauer; 23.01.2014
comment
@MikeMitterer Разширих отговора си. - person Günter Zöchbauer; 23.01.2014
comment
Актуализирах въпроса си. Премествам цялата потребителска извадка към GH... Както е обяснено в актуализирания ми въпрос: Потребителят няма нищо общо със стрелата. - person Mike Mitterer; 23.01.2014
comment
Това няма да работи. Потребителят трябва да е уеб приложение на Dart. Трябва да създадете потребителското приложение в Dart и да го изградите с dart2js/pub build (transpile), за да го направите JavaScript приложение, което работи на други браузъри, различни от Dartium. Пакетът, съдържащ компонентите, има необработени Dart компоненти, които трябва да бъдат транспилирани с приложението-консуматор. - person Günter Zöchbauer; 23.01.2014
comment
Защо, цялата философия на уеб компонентите и полимерите е да бъдат независими от езика и инструментите. - person Mike Mitterer; 23.01.2014
comment
Dart все още не е достатъчно динамичен, за да работи по този начин. Не можете да компилирате по време на изпълнение. Ще трябва да внедрите транспилера на Dart2Js в JavaScript и да го изпратите с вашето приложение, така че уеб страницата да може да транспилира произволен код на Dart в JavaScript, докато се зарежда. - person Günter Zöchbauer; 23.01.2014
comment
Хммм, малко разочароващо. Надявам се това да се промени възможно най-скоро. За мен това е по-скоро проблем с дизайна, отколкото технически проблем. Както и да е - thx! за твоя помощ. - person Mike Mitterer; 23.01.2014
comment
Това е само технически проблем освен дизайнерското решение да се направи език, който не е JavaScript, но приложенията, създадени с него, трябва да работят на браузъри, поддържащи само JavaScript. Няма да се случи много скоро AFAIK. - person Günter Zöchbauer; 23.01.2014
comment
За динамични функции трябва да използвате самия JavaScript чрез Dart-JS-interop. Не познавам PolymerJS и не знам колко добре работи на една и съща страница с PolymerDart или дали PolymerJS поддържа динамично зареждане на компоненти. Но AFAIK в момента това е единствената опция. - person Günter Zöchbauer; 23.01.2014