【问题标题】:Building Progressive Web Apps using Python Flask使用 Python Flask 构建渐进式 Web 应用程序
【发布时间】:2017-09-23 15:20:14
【问题描述】:

是否可以使用 Flask 构建 PWA?更具体地说,是否可以使用 Flask 模板渲染注册服务工作者?如果是这样,任何人都可以提供一些关于如何去做的信息或指向一些资源吗?因为我什么都找不到。谢谢。

【问题讨论】:

    标签: python flask service-worker progressive-web-apps


    【解决方案1】:

    应用结构

    app
        static
            css
                page.css
            js
                app.js
            sw.js
    
        templates
            index.html
    
        app.py
    

    app.py

    from flask import Flask, render_template, url_for
    
    app = Flask(__name__)
    
    @app.route('/', methods=['GET'])
    def index():
        return render_template('index.html')
    
    @app.route('/sw.js', methods=['GET'])
    def sw():
        return app.send_static_file('sw.js')
    
    if __name__=='__main__':
        app.run(debug=True)
    

    index.html

    <!DOCTYPE html>
    <html>
    <head>
        <title></title>
        <link rel="stylesheet" type="text/css" href="../static/css/page.css">
    </head>
    <body>
        <h1>Hello World!</h1>
    </body>
        <script type="text/javascript" src="../static/js/app.js"></script>
        <script type="text/javascript">
            if ('serviceWorker' in navigator) {
                window.addEventListener('load', function() {
                    navigator.serviceWorker.register("../sw.js").then(function(registration) {
                        // Registration was successful
                        console.log('ServiceWorker registration successful with scope: ', registration.scope);
                    }, function(err) {
                        // registration failed :(
                        console.log('ServiceWorker registration failed: ', err);
                    });
                });
            }
        </script>
    </html>
    

    希望这会有所帮助。

    【讨论】:

    • 'navigator.serviceWorker.register("../sw.js")' 应该是 'navigator.serviceWorker.register("/sw.js")'。如果您使用第一个,导航器将在任何地方寻找新的服务工作者(而不是找到一个),而不是识别第一个注册的。
    • 我总是收到“ServiceWorker 注册失败:DOMException: 无法使用脚本 ('localhost:5000/') 为范围 ('localhost:5000/') 注册 ServiceWorker:脚本具有不受支持的 MIME 类型 ('text /plain')。”
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-23
    • 1970-01-01
    • 1970-01-01
    • 2019-10-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多