Django-components provides a seamless integration with HTML fragments with AJAX ([HTML over the wire](https://hotwired.dev/)), whether you're using jQuery, HTMX, AlpineJS, vanilla JavaScript, or other. If the fragment component has any JS or CSS, django-components will: - Automatically load the associated JS and CSS - Ensure that JS is loaded and executed only once even if the fragment is inserted multiple times !!! info **What are HTML fragments and "HTML over the wire"?** It is one of the methods for updating the state in the browser UI upon user interaction. How it works is that: 1. User makes an action - clicks a button or submits a form 2. The action causes a request to be made from the client to the server. 3. Server processes the request (e.g. form submission), and responds with HTML of some part of the UI (e.g. a new entry in a table). 4. A library like HTMX, AlpineJS, or custom function inserts the new HTML into the correct place. ## Document and fragment strategies Components support different ["strategies"](../../advanced/rendering_js_css#dependencies-strategies) for rendering JS and CSS. Two of them are used to enable HTML fragments - ["document"](../../advanced/rendering_js_css#document) and ["fragment"](../../advanced/rendering_js_css#fragment). What's the difference? ### Document strategy Document strategy assumes that the rendered components will be embedded into the HTML of the initial page load. This means that: - The JS and CSS is embedded into the HTML as `