如何在Flask应用程序中将Polymer元素用作静态资源?

时间:2019-02-14 19:55:28

标签: javascript python flask polymer

我正在使用Flask后端,但是我想要一个可以注入少量自定义组件而非整个页面的javascript框架。我已经尝试了Angular和React,现在我正在尝试获得一个使用Polymer 3.0的工作版本。但是,在尝试将它们导入烧瓶模板页面之前,我在导入和/或构建元素时遇到了麻烦。

到目前为止,使它起作用的唯一方法是:

flask_template.html

{% extends "base.html" %}
<body>
    <base href="/demo_polymer">
    <meta http-equiv="cache-control" content="max-age=0" />
    <meta http-equiv="cache-control" content="no-cache" />
    <meta http-equiv="expires" content="0" />
    <meta http-equiv="expires" content="Tue, 01 Jan 1980 1:00:00 GMT" />
    <meta http-equiv="pragma" content="no-cache" />
    {% block body %}
    <script src="/static/polymer-assets/node_modules/@webcomponents/webcomponentsjs/webcomponents-loader.js"></script>
    <script type="module" src="/static/polymer-assets/polymer-switch.js"></script>
    <div id="switch">
        <div class="card">
            <div class="card-content">
                <span class="card-title">Switch</span>
                <form id="form_name">
                    <div>
                        <polymer-switch id="switch1" name="sliderSwitch" checked></polymer-switch>
                    </div>
                    <input id="testInputText" name="testInputText" type="text" value="testInputText">
                    <input type="submit" value="SUBMIT">
                </form>
            </div>
        </div>
    </div>
    {% endblock %}
</body>
</html>

polymer-switch.js

import {html, PolymerElement} from '@polymer/polymer/polymer-element.js';

class PolymerSwitch extends PolymerElement {
  static get template() {
    return html`
      <style>
        :host {}
      </style>
      <div class="slider-switch" >
        <input class="slider-input" type="checkbox" checked={{checked}}>
        <div class="slider-groove">
          <span class="slider-button"></span>
          <span class="slider-content"></span>
        </div>
      </div>
    `;
  }
  static get properties() {
    return {
      checked: {
        type: Boolean,
        value: false
      }
    };
  }
  constructor() {
    super();
    console.log('slider-switch created!');
  }
  connectedCallback() {
    super.connectedCallback();
    console.log('slider-switch connected!');
  }
  ready() {
    super.ready();
  }
}
window.customElements.define('polymer-switch', PolymerSwitch);

进入每个导入的javascript模块,将“ @something ...”更改为“ / static / polymer-assets / node_modules / @ something ...”

但是,这随后将导入每个模块,并且我只想导入一个文件,以便在导入描述文件的文件后,可以在我的烧瓶模板中的任何位置使用该元素。我无法使用命令“ polymer build --js-compile”(或其任何变体)来给我一个我可以使用的文件。通常,它会给我一个html文件,并导入它会警告我该文件将在3月不再受支持,并且不会呈现自定义元素。

在以下情况下很难确定应该如何工作

  • 聚合物是第三个修订版,因此我查找的每个教程可能没有正确的语法。

  • 我正在尝试以非标准方式(据我所知)使用它,方法是将其作为附件而不是作为单页应用程序使用。

  • 我可以全神贯注于如何将javascript文件构建为单个javascript文件,然后将其导入页面并使用。

0 个答案:

没有答案