       MyApp.Router.Helpers.special_page_path(conn, :show, "hello")
       "/pages/hello"
 
-  ### Scopes and Resources
-
-  The router also supports scoping of routes:
-
-      scope "/api/v1", as: :api_v1 do
+  ## Scopes and Resources
+
+  It is very common in Phoenix applications to namespace all of your
+  routes under the application scope:
+
+      scope "/", MyApp do
+        get "/pages/:id", PageController, :show
+      end
+
+  The route above will dispatch to `MyApp.PageController`. This syntax
+  is not only convenient for developers, since we don't have to repeat
+  the `MyApp.` prefix on all routes, but it also allows Phoenix to put
+  less pressure in the Elixir compiler. If instead we had written:
+
+    get "/pages/:id", MyApp.PageController, :show
+
+  The Elixir compiler would infer that the router depends directly on
+  `MyApp.PageController`, which is not true. By using scopes, Phoenix
+  can properly hint to the Elixir compiler the controller is not an
+  actual dependency of the router. This provides more efficient
+  compilation times.
+
+  Scopes allow us to scope on any path or even on the helper name:
+
+      scope "/api/v1", MyApp, as: :api_v1 do
         get "/pages/:id", PageController, :show
       end
 

  Phoenix's router is extremely efficient, as it relies on Elixir
  pattern matching for matching routes and serving requests.

  ### Helpers

  Phoenix automatically generates a module `Helpers` inside your router
  which contains named helpers to help developers generate and keep


  Note that router pipelines are only invoked after a route is found.
  No plug is invoked in case no matches were found.
  """

  alias Phoenix.Router.Resource
