@workInProgress @ngdoc overview @name Developer Guide: Angular HTML Compiler: Understanding How the Compiler Works @description Every {@link api/angular.widget widget}, {@link api/angular.directive directive} and {@link dev_guide.compiler.markup markup} is defined with a compile function, which the angular compiler executes on each widget or directive it encounters. The compile function optionally returns a link function. This compilation process happens automatically when the page is loaded when you specify `ng:autobind` in the script tag from which you load the angular script file. (See {@link dev_guide.bootstrap Initializing Angular}.) The compile and link functions are related as follows: * **compile function** — Registers a listener for the widget, directive, or markup expression. The compiler calls this function exactly once. * **link function** — Sets up the listener registered by the compile function. This function can be called multiple times, once per cloned DOM element. For example, in the case of the {@link api/angular.widget.@ng:repeat repeater widget} used in a list element (`