You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

overview.md 2.7 KiB

7 vuotta sitten
7 vuotta sitten
7 vuotta sitten
6 vuotta sitten
7 vuotta sitten
6 vuotta sitten
7 vuotta sitten
6 vuotta sitten
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. # Plugin system overview
  2. ### Prior art
  3. Swagger-UI leans heavily on concepts and patterns found in React and Redux.
  4. If you aren't already familiar, here's some suggested reading:
  5. - [React: Quick Start (reactjs.org)](https://reactjs.org/docs/hello-world.html)
  6. - [Redux README (redux.js.org)](http://redux.js.org/)
  7. In the following documentation, we won't take the time to define the fundamentals covered in the resources above.
  8. > **Note**: Some of the examples in this section contain JSX, which is a syntax extension to JavaScript that is useful for writing React components.
  9. >
  10. > If you don't want to set up a build pipeline capable of translating JSX to JavaScript, take a look at [React without JSX (reactjs.org)](https://reactjs.org/docs/react-without-jsx.html).
  11. ### The System
  12. The _system_ is the heart of the Swagger-UI application. At runtime, it's a JavaScript object that holds many things:
  13. - React components
  14. - Bound Redux actions and reducers
  15. - Bound Reselect state selectors
  16. - System-wide collection of available components
  17. - Built-in helpers like `getComponent`, `makeMappedContainer`, and `getStore`
  18. - User-defined helper functions
  19. The system is built up when Swagger-UI is called by iterating through ("compiling") each plugin that Swagger-UI has been given, through the `presets` and `plugins` configuration options.
  20. ### Presets
  21. Presets are arrays of plugins, which are provided to Swagger-UI through the `presets` configuration option. All plugins within presets are compiled before any plugins provided via the `plugins` configuration option. Consider the following example:
  22. ```javascript
  23. const MyPreset = [FirstPlugin, SecondPlugin, ThirdPlugin]
  24. SwaggerUI({
  25. presets: [
  26. MyPreset
  27. ]
  28. })
  29. ```
  30. By default, Swagger-UI includes the internal `ApisPreset`, which contains a set of plugins that provide baseline functionality for Swagger-UI. If you specify your own `presets` option, you need to add the ApisPreset manually, like so:
  31. ```javascript
  32. SwaggerUI({
  33. presets: [
  34. SwaggerUI.presets.apis,
  35. MyAmazingCustomPreset
  36. ]
  37. })
  38. ```
  39. The need to provide the `apis` preset when adding other presets is an artifact of Swagger-UI's original design, and will likely be removed in the next major version.
  40. ### getComponent
  41. `getComponent` is a helper function injected into every container component, which is used to get references to components provided by the plugin system.
  42. All components should be loaded through `getComponent`, since it allows other plugins to modify the component. It is preferred over a conventional `import` statement.
  43. Container components in Swagger-UI can be loaded by passing `true` as the second argument to `getComponent`, like so:
  44. ```
  45. getComponent("ContainerComponentName", true)
  46. ```
  47. This will map the current system as props to the component.