server - Tornado:如何让它捕捉对 JavaScript 所做的更改?
问题描述
我正在尝试使用 Tornado,发现每次更改 JavaScript 或 HTML 文件时看起来都没有改变。
我有使用 Node.js 的经验,它运行良好 - 如果更改与服务器端无关,那么一切都会自行更新。
如何解决这个问题呢?当然,我可以每次都停止服务器,但这既费时又乏味。
谢谢。
解决方案
在您的 tornado 应用程序所在的项目文件夹中,您可以使用 autoreload 模块监听更改。例如
from os import walk
from socket import gethostname
from tornado import autoreload
from tornado.ioloop import IOLoop
from tornado.web import Application
from tornado.httpserver import HTTPServer
from tornado.web import RequestHandler
from tornado.options import define, options, parse_command_line
class TestHandler(RequestHandler):
def get(self):
self.render("index.html")
class TestApplication(Application):
def __init__(self, host=None, port=None):
handlers = [
(r"/", TestHandler)
]
settings = {
"autoreload": True,
"compiled_template_cache": True,
"debug": True,
"static_path": "static",
"template_path": "templates"
}
Application.__init__(self, handlers, **settings)
self.host = host
self.port = port
def __call__(self):
if self.port is None:
define("port", default=8001, help="run on the given port", type=int)
else: define("port", default=self.port, help="run on the given port", type=int)
if self.host is None:
define("host", default=gethostname(), help="run on host address", type=str)
else: define("host", default=self.host, help="run on host address", type=str)
parse_command_line()
http_server = HTTPServer(self)
try:
http_server.listen(options.port, address=options.host)
except (KeyboardInterrupt, SystemExit):
print("*!* keyboard interrupt detected...exiting.")
except:
print("*!* error occured...httpserver not listening.")
else:
print("*+* server listening on {host} {port}...".format(host=options.host, port=options.port))
autoreload.start()
for dir, _, files in walk('.'):
[autoreload.watch(dir + '/' + f) for f in files if f.endswith("js") or f.endswith("css") or f.endswith("html")]
IOLoop.current().start()
然后只需调用它,只要您对以指定后缀结尾的文件进行更改,它就会自动重新加载服务器。即.js、.html、.css
推荐阅读
- android - 从 BroadcastReceiver 启动 WorkManager 任务
- spring - Spring Boot Rest Api 控制器出现 404 错误
- reactjs - 如何安全地将 Facebook 响应令牌保存到 React 应用程序?
- mysql - 使用两个表上的 where 子句使用 mysql left join 获取数据
- javascript - 单击叠加图像开始视频后防止页面移动到顶部
- node.js - 从查找 mongodb 中一无所获
- python-3.x - 一秒内写入数据日志时改进python尾日志
- javascript - model.js 中的双重查询结果
- android - 数据绑定不观察 ViewModel 中的 LiveData
- python - 我知道 f-strings,但是什么是 r-strings?还有其他人吗?