فهرست منبع

Merge commit 'd5e8e128f4a588dd64bd1bf4fbdb2aae5e487611' into pytests

Rodja Trappe 2 سال پیش
والد
کامیت
b91188ff50
2فایلهای تغییر یافته به همراه14 افزوده شده و 8 حذف شده
  1. 2 2
      nicegui/nicegui.py
  2. 12 6
      nicegui/page.py

+ 2 - 2
nicegui/nicegui.py

@@ -26,9 +26,9 @@ async def patched_justpy_startup():
 
 
 @jp.app.on_event('startup')
-async def startup():
+def startup():
     init_auto_index_page()
-    await create_page_routes()
+    create_page_routes()
     globals.tasks.extend(create_task(t.coro, name=t.name) for t in Timer.prepared_coroutines)
     Timer.prepared_coroutines.clear()
     globals.tasks.extend(create_task(t, name='startup task')

+ 12 - 6
nicegui/page.py

@@ -15,6 +15,7 @@ from starlette.requests import Request
 
 from . import globals
 from .helpers import is_coroutine
+from .task_logger import create_task
 
 
 @dataclass
@@ -32,6 +33,11 @@ class PageBuilder:
         page = self._shared_page if self.shared else await self.function()
         return await page._route_function(request)
 
+    def create_route(self, route: str) -> None:
+        if self.shared:
+            create_task(self.build)
+        jp.Route(route, self.route_function)
+
 
 class Page(jp.QuasarPage):
 
@@ -188,7 +194,10 @@ def page(self,
             await func() if is_coroutine(func) else func()
             globals.view_stack.pop()
             return page
-        globals.page_builders[route] = PageBuilder(decorated, shared)
+        builder = PageBuilder(decorated, shared)
+        if hasattr(globals, 'server') and globals.server is not None:
+            builder.create_route(route)
+        globals.page_builders[route] = builder
         return decorated
     return decorator
 
@@ -225,10 +234,7 @@ def init_auto_index_page() -> None:
     page.view.classes = globals.config.main_page_classes
 
 
-async def create_page_routes() -> None:
+def create_page_routes() -> None:
     jp.Route("/{path:path}", error404, last=True)
-
     for route, page_builder in globals.page_builders.items():
-        if page_builder.shared:
-            await page_builder.build()
-        jp.Route(route, page_builder.route_function)
+        page_builder.create_route(route)