我正在使用 Livereload + Flask + Flask SOcketIO + Flask 脚本。问题是 SocketIO 需要一个 gevent-socketio 服务器。这不是所有的livereload。不要误会我的意思,我不想解决这个问题。我只运行 livereload 来做一些 css/sass/js 工作,所以没关系。
但是每次客户端尝试连接到socketIO服务器时抛出的异常让我很困扰。所以我想我可以禁用 javascript,但我的应用程序主要依赖 angular 来异步渲染指令,所以页面上没有标签让我能够切换样式。然后我意识到我可以编写一个配置属性,因此当我加载页面时 Jinja2 会将其作为 javascript 变量提供,并且我不会加载特定的 socket-io js 文件以防它被设置为 False。我已经尝试过了。
在 config.py 上设置:
class Config:
LIVERELOAD = False
我用 FLask-Script 运行 livereload 服务器
class liveReloadServer(Command):
"""prints hello world"""
def run(self):
with app.app_context():
server = Server(app.wsgi_app)
Config.LIVERELOAD = 'True'
server.serve(port=8080)
将配置属性传递给 javascript 端
var LIVERELOAD = "{{ config['LIVERELOAD'] }}";
但这不起作用( LIVERELOAD 始终显示 True )因为我在 Config 类已经插入到 Flask 应用程序对象之后设置属性。还有其他方法吗?