In order to provide different feedback to different users, we introduce an event handler module.
This module is named requestHandlers. We first add two placeholder functions: start() and upload().
requestHandlers.js code is as follows:
In a real application, the number of request handlers will continue to increase, and we certainly don’t want to have to complete the request in the route every time there is a new URL or request handler
Mapping to handler and tossing it over and over again.
In addition, we don’t want to have a lot of if request == x then call handler y in the routing, which will make the code look messy and unprofessional.
Here I will use the concept of associative arrays to handle this requirement. We pass a series of request handlers through an object, and we need to inject this object into the route() function in a loosely coupled way.
We first introduce this object into the main file index.js:
For example, if I want to add a /show mapping, just add handle["/show"] requestHandlers.show; and that's it;
Haha, does this make the code more concise and orderly? !
Next we pass the handle object to the server, and modify server.js as follows:
Correspondingly modify the route() function in the route.js file:
We pass the handle object to the server as a parameter, which is then received by the router. Finally, the router determines whether the request handler corresponding to the current path exists. If it exists, the corresponding function is called.
We can get the request processing function from the passed object in the same way as getting elements from the associative array, so we have a simple and smooth expression in the form of handle[pathname]();, which feels like As mentioned earlier: "Hey, please help me with this path".
In this way, we can handle different requests differently.
In the next section we will further modify the code to allow the server to perform some actual feedback operations.