<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Integrations on AngularTS</title><link>https://angular-wave.github.io/angular.ts/docs/integrations/</link><description>Recent content in Integrations on AngularTS</description><generator>Hugo</generator><language>en</language><atom:link href="https://angular-wave.github.io/angular.ts/docs/integrations/index.xml" rel="self" type="application/rss+xml"/><item><title>Choose an integration</title><link>https://angular-wave.github.io/angular.ts/docs/integrations/choosing/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://angular-wave.github.io/angular.ts/docs/integrations/choosing/</guid><description>&lt;h2 id="what-stays-the-same">What stays the same&lt;a class="td-heading-self-link" href="#what-stays-the-same" aria-label="Heading self-link">&lt;/a>&lt;/h2>
&lt;p>An integration changes the language used to register AngularTS features. It
does not introduce a second module system or component lifecycle. Modules,
injection, components, directives, scopes, templates, and services behave the
same way.&lt;/p>
&lt;h2 id="choose-by-language">Choose by language&lt;a class="td-heading-self-link" href="#choose-by-language" aria-label="Heading self-link">&lt;/a>&lt;/h2>
&lt;p>Use the binding for the language that produces your client-side code:&lt;/p>
&lt;ul>
&lt;li>Closure JavaScript uses the extern file from the npm package.&lt;/li>
&lt;li>ClojureScript, Java/J2CL, and Scala.js use Maven Central artifacts.&lt;/li>
&lt;li>Dart uses pub.dev.&lt;/li>
&lt;li>Gleam uses Hex.&lt;/li>
&lt;li>Kotlin and the WebAssembly languages currently use source dependencies.&lt;/li>
&lt;/ul>
&lt;p>Every integration still needs &lt;code>@angular-wave/angular.ts&lt;/code> on the page. Load it
once and keep its version equal to the language binding version.&lt;/p></description></item><item><title>Integration example projects</title><link>https://angular-wave.github.io/angular.ts/docs/integrations/examples/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://angular-wave.github.io/angular.ts/docs/integrations/examples/</guid><description>&lt;p>Use these projects when starting an application. Each one keeps the dependency,
compiler configuration, AngularTS registration, page, and build output in one
place.&lt;/p>
&lt;table>
 &lt;thead>
 &lt;tr>
 &lt;th>Integration&lt;/th>
 &lt;th>Example&lt;/th>
 &lt;/tr>
 &lt;/thead>
 &lt;tbody>
 &lt;tr>
 &lt;td>Closure Compiler&lt;/td>
 &lt;td>&lt;code>integrations/closure/demo&lt;/code>&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>ClojureScript&lt;/td>
 &lt;td>&lt;code>integrations/closure/clojurescript/demo&lt;/code>&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>Java/J2CL&lt;/td>
 &lt;td>&lt;code>integrations/closure/java/demo&lt;/code>&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>Kotlin/JS&lt;/td>
 &lt;td>&lt;code>integrations/kotlin/examples/basic_app&lt;/code>&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>Scala.js&lt;/td>
 &lt;td>&lt;code>integrations/scala/examples/basic_app&lt;/code>&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>Dart&lt;/td>
 &lt;td>&lt;code>integrations/dart/example/basic_app&lt;/code>&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>Gleam&lt;/td>
 &lt;td>&lt;code>integrations/gleam/examples/basic_app&lt;/code>&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>HarmonyOS&lt;/td>
 &lt;td>&lt;code>integrations/harmonyos/entry&lt;/code>&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>AssemblyScript&lt;/td>
 &lt;td>&lt;code>integrations/wasm/assemblyscript/examples/todo&lt;/code>&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>C&lt;/td>
 &lt;td>&lt;code>integrations/wasm/c/examples/todo&lt;/code>&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>C++&lt;/td>
 &lt;td>&lt;code>integrations/wasm/cpp/examples/todo&lt;/code>&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>C#/.NET&lt;/td>
 &lt;td>&lt;code>integrations/wasm/csharp/examples/todo&lt;/code>&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>Go&lt;/td>
 &lt;td>&lt;code>integrations/wasm/go/examples/basic_app&lt;/code>&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>Rust&lt;/td>
 &lt;td>&lt;code>integrations/wasm/rust/examples/basic_app&lt;/code>&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>Zig&lt;/td>
 &lt;td>&lt;code>integrations/wasm/zig/examples/todo&lt;/code>&lt;/td>
 &lt;/tr>
 &lt;/tbody>
&lt;/table>
&lt;p>Copy the project structure that matches your language, then replace the todo
model and markup one feature at a time.&lt;/p></description></item><item><title>Closure Compiler</title><link>https://angular-wave.github.io/angular.ts/docs/integrations/closure/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://angular-wave.github.io/angular.ts/docs/integrations/closure/</guid><description>&lt;p>Closure Compiler optimizes your JavaScript. AngularTS stays outside that output,
and its extern file tells Closure which public names must not be renamed.&lt;/p>
&lt;h2 id="install">Install&lt;a class="td-heading-self-link" href="#install" aria-label="Heading self-link">&lt;/a>&lt;/h2>
&lt;p>Install &lt;code>@angular-wave/angular.ts&lt;/code> and Closure Compiler in the application.
Pass &lt;code>dist/externs/angular.js&lt;/code> from the npm package to Closure, and compile the
production output with ADVANCED optimization.&lt;/p>
&lt;p>Load &lt;code>dist/angular-ts.umd.min.js&lt;/code> before the compiled application file:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-html" data-lang="html">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#000;font-weight:bold">&amp;lt;&lt;/span>&lt;span style="color:#204a87;font-weight:bold">script&lt;/span> &lt;span style="color:#c4a000">src&lt;/span>&lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span>&lt;span style="color:#4e9a06">&amp;#34;/node_modules/@angular-wave/angular.ts/dist/angular-ts.umd.min.js&amp;#34;&lt;/span>&lt;span style="color:#000;font-weight:bold">&amp;gt;&amp;lt;/&lt;/span>&lt;span style="color:#204a87;font-weight:bold">script&lt;/span>&lt;span style="color:#000;font-weight:bold">&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#000;font-weight:bold">&amp;lt;&lt;/span>&lt;span style="color:#204a87;font-weight:bold">script&lt;/span> &lt;span style="color:#c4a000">src&lt;/span>&lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span>&lt;span style="color:#4e9a06">&amp;#34;/dist/application.js&amp;#34;&lt;/span>&lt;span style="color:#000;font-weight:bold">&amp;gt;&amp;lt;/&lt;/span>&lt;span style="color:#204a87;font-weight:bold">script&lt;/span>&lt;span style="color:#000;font-weight:bold">&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h2 id="production-guidance">Production guidance&lt;a class="td-heading-self-link" href="#production-guidance" aria-label="Heading self-link">&lt;/a>&lt;/h2>
&lt;ul>
&lt;li>Treat the packaged extern as part of the AngularTS version; do not edit it.&lt;/li>
&lt;li>Promote Closure warnings to errors.&lt;/li>
&lt;li>Keep AngularTS external so the page loads only one runtime.&lt;/li>
&lt;li>Use documented public APIs so Closure can preserve every accessed member.&lt;/li>
&lt;li>Test the ADVANCED output, not only uncompiled source.&lt;/li>
&lt;/ul>
&lt;h2 id="complete-example">Complete example&lt;a class="td-heading-self-link" href="#complete-example" aria-label="Heading self-link">&lt;/a>&lt;/h2>
&lt;p>Use &lt;code>integrations/closure/demo&lt;/code> as a complete todo project, or browse all
&lt;a href="../examples/">integration examples&lt;/a>.&lt;/p></description></item><item><title>ClojureScript</title><link>https://angular-wave.github.io/angular.ts/docs/integrations/clojurescript/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://angular-wave.github.io/angular.ts/docs/integrations/clojurescript/</guid><description>&lt;p>The &lt;code>angular-ts-cljs&lt;/code> Maven artifact provides the &lt;code>angular-ts.core&lt;/code> API and the
Closure externs needed by an optimized ClojureScript build. Keep it on the same
version as the AngularTS runtime loaded by the page.&lt;/p>
&lt;h2 id="before-you-start">Before you start&lt;a class="td-heading-self-link" href="#before-you-start" aria-label="Heading self-link">&lt;/a>&lt;/h2>
&lt;p>Install Java 21, Node.js, and Shadow CLJS. Create a project with
&lt;code>src/main/todo/app.cljs&lt;/code>, &lt;code>shadow-cljs.edn&lt;/code>, and an HTML entry page.&lt;/p>
&lt;h2 id="configure-shadow-cljs">Configure Shadow CLJS&lt;a class="td-heading-self-link" href="#configure-shadow-cljs" aria-label="Heading self-link">&lt;/a>&lt;/h2>
&lt;p>Add the Maven artifact and tell Closure where the packaged extern file is:&lt;/p></description></item><item><title>Java and J2CL</title><link>https://angular-wave.github.io/angular.ts/docs/integrations/java-j2cl/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://angular-wave.github.io/angular.ts/docs/integrations/java-j2cl/</guid><description>&lt;p>J2CL compiles Java to JavaScript. The &lt;code>angular-ts-java&lt;/code> artifact supplies typed
JsInterop bindings and an annotation processor; &lt;code>@angular-wave/angular.ts&lt;/code>
supplies the browser runtime. Keep both on the same version.&lt;/p>
&lt;p>The Maven artifact includes the Java sources and AngularTS externs required by
J2CL. Your application only generates and passes its own template extern.&lt;/p>
&lt;h2 id="before-you-start">Before you start&lt;a class="td-heading-self-link" href="#before-you-start" aria-label="Heading self-link">&lt;/a>&lt;/h2>
&lt;p>Install JDK 21, Maven, and Node.js. Create a Maven project with &lt;code>src/main/java&lt;/code>
for Java sources and a directory for the page that loads the compiled output.&lt;/p></description></item><item><title>Kotlin/JS</title><link>https://angular-wave.github.io/angular.ts/docs/integrations/kotlin/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://angular-wave.github.io/angular.ts/docs/integrations/kotlin/</guid><description>&lt;p>The Kotlin integration provides typed access to AngularTS modules, injection,
components, directives, services, and scopes.&lt;/p>
&lt;h2 id="add-the-binding">Add the binding&lt;a class="td-heading-self-link" href="#add-the-binding" aria-label="Heading self-link">&lt;/a>&lt;/h2>
&lt;p>The Kotlin binding is currently distributed as source. Add
&lt;code>integrations/kotlin&lt;/code> as a Gradle project dependency and use
&lt;code>integrations/kotlin/examples/basic_app&lt;/code> as the application structure. Enable a
Kotlin/JS IR browser target with an executable binary.&lt;/p>
&lt;p>Load the matching &lt;code>@angular-wave/angular.ts&lt;/code> runtime before the Kotlin/JS output.&lt;/p>
&lt;h2 id="guidance">Guidance&lt;a class="td-heading-self-link" href="#guidance" aria-label="Heading self-link">&lt;/a>&lt;/h2>
&lt;ul>
&lt;li>Use typed injection tokens and explicit dependency order.&lt;/li>
&lt;li>Prefer Kotlin wrappers over &lt;code>dynamic&lt;/code> JavaScript access.&lt;/li>
&lt;li>Keep JavaScript conversion at the edge of the application.&lt;/li>
&lt;li>Build and test the optimized Kotlin/JS output used in deployment.&lt;/li>
&lt;/ul>
&lt;h2 id="complete-example">Complete example&lt;a class="td-heading-self-link" href="#complete-example" aria-label="Heading self-link">&lt;/a>&lt;/h2>
&lt;p>Use &lt;code>integrations/kotlin/examples/basic_app&lt;/code> as a complete Gradle project.
&lt;code>integrations/kotlin/examples/web_components&lt;/code> shows custom elements. See all
&lt;a href="../examples/">integration examples&lt;/a>.&lt;/p></description></item><item><title>Android</title><link>https://angular-wave.github.io/angular.ts/docs/integrations/android/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://angular-wave.github.io/angular.ts/docs/integrations/android/</guid><description>&lt;p>Angular Native keeps the server and HTML in charge of most screens. Android owns
navigation, system access, and any controls that need native behavior. You can
move one control or one destination to native UI without turning the whole
application into a client-rendered app.&lt;/p>
&lt;h2 id="add-the-android-packages">Add the Android packages&lt;a class="td-heading-self-link" href="#add-the-android-packages" aria-label="Heading self-link">&lt;/a>&lt;/h2>
&lt;p>Use the same version as &lt;code>@angular-wave/angular.ts&lt;/code>:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-text" data-lang="text">&lt;span style="display:flex;">&lt;span>dependencies {
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> implementation(&amp;#34;io.github.angular-wave:angular-native-core:&lt;p>Version: 0.37.0&lt;/p>
&amp;#34;)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> implementation(&amp;#34;io.github.angular-wave:angular-native-navigation:&lt;p>Version: 0.37.0&lt;/p>
&amp;#34;)
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>}
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Add &lt;code>angular-native-browser&lt;/code> only when external HTTP links should open in
Android Custom Tabs:&lt;/p></description></item><item><title>HarmonyOS</title><link>https://angular-wave.github.io/angular.ts/docs/integrations/harmonyos/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://angular-wave.github.io/angular.ts/docs/integrations/harmonyos/</guid><description>&lt;p>Angular Native keeps HTML and the server in charge of the application. The
HarmonyOS shell owns navigation, system access, and controls that need ArkUI.
The same page continues to work in a normal browser because native elements
keep their HTML fallback.&lt;/p>
&lt;p>All shared native elements and capabilities have HarmonyOS providers and
portable tests. The packages are not production releases until the official
API 26 build, device evidence, and public OHPM consumer checks pass.&lt;/p></description></item><item><title>Scala.js</title><link>https://angular-wave.github.io/angular.ts/docs/integrations/scala/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://angular-wave.github.io/angular.ts/docs/integrations/scala/</guid><description>&lt;p>The Scala artifact provides typed facades and idiomatic builders. Scala.js links
the application; &lt;code>@angular-wave/angular.ts&lt;/code> remains the browser runtime. Keep
the Maven and npm versions equal.&lt;/p>
&lt;h2 id="before-you-start">Before you start&lt;a class="td-heading-self-link" href="#before-you-start" aria-label="Heading self-link">&lt;/a>&lt;/h2>
&lt;p>Install JDK 21, sbt, and Node.js. Start with &lt;code>project/plugins.sbt&lt;/code>, &lt;code>build.sbt&lt;/code>,
&lt;code>src/main/scala&lt;/code>, and an HTML entry page.&lt;/p>
&lt;h2 id="enable-scalajs">Enable Scala.js&lt;a class="td-heading-self-link" href="#enable-scalajs" aria-label="Heading self-link">&lt;/a>&lt;/h2>
&lt;p>Add the Scala.js plugin:&lt;/p>
&lt;!-- tested-by: src/docs-examples/integration-setup.test.ts, integrations/scala/test/basic_app.test.ts -->
&lt;div class="highlight">&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-text" data-lang="text">&lt;span style="display:flex;">&lt;span>addSbtPlugin(&amp;#34;org.scala-js&amp;#34; % &amp;#34;sbt-scalajs&amp;#34; % &amp;#34;1.17.0&amp;#34;)
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Enable the plugin and add the facade with &lt;code>%%%&lt;/code>. sbt expands the standard
Scala.js and Scala binary suffixes automatically.&lt;/p></description></item><item><title>Dart</title><link>https://angular-wave.github.io/angular.ts/docs/integrations/dart/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://angular-wave.github.io/angular.ts/docs/integrations/dart/</guid><description>&lt;p>The &lt;code>angular_ts&lt;/code> package gives Dart code typed access to AngularTS modules,
injection, components, directives, services, and scopes.&lt;/p>
&lt;h2 id="install">Install&lt;a class="td-heading-self-link" href="#install" aria-label="Heading self-link">&lt;/a>&lt;/h2>
&lt;p>Add the facade and Web API package:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>dart pub add angular_ts web
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Compile the entry point:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>dart compile js web/main.dart -o web/main.dart.js
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Load &lt;code>@angular-wave/angular.ts&lt;/code> before &lt;code>main.dart.js&lt;/code>, keep both packages on the
same version, and serve the page over HTTP. The &lt;a href="https://pub.dev/packages/angular_ts">package
page&lt;/a> contains a complete first component.&lt;/p>
&lt;h2 id="guidance">Guidance&lt;a class="td-heading-self-link" href="#guidance" aria-label="Heading self-link">&lt;/a>&lt;/h2>
&lt;ul>
&lt;li>Use typed tokens and &lt;code>inject0&lt;/code> through &lt;code>inject8&lt;/code> for dependencies.&lt;/li>
&lt;li>Expose template-facing controllers with &lt;code>@JSExport()&lt;/code> and
&lt;code>createJSInteropWrapper()&lt;/code>.&lt;/li>
&lt;li>Keep JavaScript conversion at the edge of the application.&lt;/li>
&lt;li>Test the compiled JavaScript in a real page.&lt;/li>
&lt;/ul>
&lt;h2 id="complete-example">Complete example&lt;a class="td-heading-self-link" href="#complete-example" aria-label="Heading self-link">&lt;/a>&lt;/h2>
&lt;p>Use &lt;code>integrations/dart/example/basic_app&lt;/code> as a complete todo project, or browse
all &lt;a href="../examples/">integration examples&lt;/a>.&lt;/p></description></item><item><title>Gleam</title><link>https://angular-wave.github.io/angular.ts/docs/integrations/gleam/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://angular-wave.github.io/angular.ts/docs/integrations/gleam/</guid><description>&lt;p>The &lt;code>angular_ts&lt;/code> package supplies typed Gleam functions for modules, dependency
injection, components, and application startup.&lt;/p>
&lt;h2 id="install">Install&lt;a class="td-heading-self-link" href="#install" aria-label="Heading self-link">&lt;/a>&lt;/h2>
&lt;div class="highlight">&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>gleam add angular_ts
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Build with &lt;code>gleam build --target javascript&lt;/code>. Load the matching
&lt;code>@angular-wave/angular.ts&lt;/code> runtime before the generated application script and
serve the page over HTTP.&lt;/p>
&lt;h2 id="guidance">Guidance&lt;a class="td-heading-self-link" href="#guidance" aria-label="Heading self-link">&lt;/a>&lt;/h2>
&lt;ul>
&lt;li>Keep foreign JavaScript functions at the edge of the application.&lt;/li>
&lt;li>Prefer typed package functions over untyped JavaScript values.&lt;/li>
&lt;li>Keep the Gleam package and AngularTS runtime on the same version.&lt;/li>
&lt;li>Test the generated JavaScript in a real page.&lt;/li>
&lt;/ul>
&lt;h2 id="complete-example">Complete example&lt;a class="td-heading-self-link" href="#complete-example" aria-label="Heading self-link">&lt;/a>&lt;/h2>
&lt;p>Use &lt;code>integrations/gleam/examples/basic_app&lt;/code> for a component, injected store, and
custom element, or browse all &lt;a href="../examples/">integration examples&lt;/a>.&lt;/p></description></item><item><title>AssemblyScript WebAssembly</title><link>https://angular-wave.github.io/angular.ts/docs/integrations/wasm-assemblyscript/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://angular-wave.github.io/angular.ts/docs/integrations/wasm-assemblyscript/</guid><description>&lt;p>AngularTS owns the page while AssemblyScript handles domain logic in a Wasm
module.&lt;/p>
&lt;h2 id="add-the-binding">Add the binding&lt;a class="td-heading-self-link" href="#add-the-binding" aria-label="Heading self-link">&lt;/a>&lt;/h2>
&lt;p>The binding is distributed as source. Import
&lt;code>integrations/wasm/assemblyscript/src/angular_ts.ts&lt;/code>, compile the guest with
AssemblyScript&amp;rsquo;s incremental runtime and exported runtime helpers, then load the
result through &lt;code>app.wasm(...)&lt;/code>.&lt;/p>
&lt;p>The host adapter binds the guest to a scope and releases it when that scope is
destroyed.&lt;/p>
&lt;h2 id="guidance">Guidance&lt;a class="td-heading-self-link" href="#guidance" aria-label="Heading self-link">&lt;/a>&lt;/h2>
&lt;ul>
&lt;li>Use typed fields for values exchanged with AngularTS.&lt;/li>
&lt;li>Batch related writes into one update.&lt;/li>
&lt;li>Copy transient data across the ABI instead of retaining host buffers.&lt;/li>
&lt;li>Keep durable shared state in AngularTS models.&lt;/li>
&lt;/ul>
&lt;h2 id="complete-example">Complete example&lt;a class="td-heading-self-link" href="#complete-example" aria-label="Heading self-link">&lt;/a>&lt;/h2>
&lt;p>Use &lt;code>integrations/wasm/assemblyscript/examples/todo&lt;/code>, or browse all
&lt;a href="../examples/">integration examples&lt;/a>.&lt;/p></description></item><item><title>C WebAssembly</title><link>https://angular-wave.github.io/angular.ts/docs/integrations/wasm-c/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://angular-wave.github.io/angular.ts/docs/integrations/wasm-c/</guid><description>&lt;p>AngularTS owns the page while C handles domain logic in a Wasm module.&lt;/p>
&lt;h2 id="add-the-binding">Add the binding&lt;a class="td-heading-self-link" href="#add-the-binding" aria-label="Heading self-link">&lt;/a>&lt;/h2>
&lt;p>The binding is distributed as source. Add &lt;code>include/angular_ts_wasm.h&lt;/code> and
&lt;code>src/angular_ts_wasm.c&lt;/code> to the guest, include the typed field contract used by
the feature, and compile for &lt;code>wasm32-freestanding&lt;/code> without an entry point.&lt;/p>
&lt;p>Load the result through &lt;code>app.wasm(...)&lt;/code> and bind it to the component scope from
the host adapter.&lt;/p>
&lt;h2 id="guidance">Guidance&lt;a class="td-heading-self-link" href="#guidance" aria-label="Heading self-link">&lt;/a>&lt;/h2>
&lt;ul>
&lt;li>Release every owned result and cancel watches before freeing callback state.&lt;/li>
&lt;li>Never retain temporary host buffers.&lt;/li>
&lt;li>Apply related field changes through one update.&lt;/li>
&lt;li>Keep durable shared state in AngularTS models.&lt;/li>
&lt;/ul>
&lt;h2 id="complete-example">Complete example&lt;a class="td-heading-self-link" href="#complete-example" aria-label="Heading self-link">&lt;/a>&lt;/h2>
&lt;p>Use &lt;code>integrations/wasm/c/examples/todo&lt;/code>, or browse all &lt;a href="../examples/">integration
examples&lt;/a>.&lt;/p></description></item><item><title>C++ WebAssembly</title><link>https://angular-wave.github.io/angular.ts/docs/integrations/wasm-cpp/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://angular-wave.github.io/angular.ts/docs/integrations/wasm-cpp/</guid><description>&lt;p>AngularTS owns the page while C++ handles domain logic in a Wasm module.&lt;/p>
&lt;h2 id="add-the-binding">Add the binding&lt;a class="td-heading-self-link" href="#add-the-binding" aria-label="Heading self-link">&lt;/a>&lt;/h2>
&lt;p>The binding is distributed as source and is header-only. Add
&lt;code>integrations/wasm/cpp/include&lt;/code> to the compiler search path, include
&lt;code>angular_ts/wasm.hpp&lt;/code>, and compile for &lt;code>wasm32-wasi&lt;/code> without an entry point.&lt;/p>
&lt;p>Load the result through &lt;code>app.wasm(...)&lt;/code> and bind it to the component scope from
the host adapter.&lt;/p>
&lt;h2 id="guidance">Guidance&lt;a class="td-heading-self-link" href="#guidance" aria-label="Heading self-link">&lt;/a>&lt;/h2>
&lt;ul>
&lt;li>Use the C++ scope, watch, and owned result wrappers instead of raw handles.&lt;/li>
&lt;li>Keep browser objects out of guest state.&lt;/li>
&lt;li>Group related field changes in one transaction.&lt;/li>
&lt;li>Keep durable shared state in AngularTS models.&lt;/li>
&lt;/ul>
&lt;h2 id="complete-example">Complete example&lt;a class="td-heading-self-link" href="#complete-example" aria-label="Heading self-link">&lt;/a>&lt;/h2>
&lt;p>Use &lt;code>integrations/wasm/cpp/examples/todo&lt;/code>, or browse all &lt;a href="../examples/">integration
examples&lt;/a>.&lt;/p></description></item><item><title>C# and .NET WebAssembly</title><link>https://angular-wave.github.io/angular.ts/docs/integrations/wasm-csharp/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://angular-wave.github.io/angular.ts/docs/integrations/wasm-csharp/</guid><description>&lt;p>AngularTS owns the page while C# handles domain logic in a .NET Wasm module.&lt;/p>
&lt;h2 id="add-the-binding">Add the binding&lt;a class="td-heading-self-link" href="#add-the-binding" aria-label="Heading self-link">&lt;/a>&lt;/h2>
&lt;p>The binding is distributed as source. Install .NET 8 and the &lt;code>wasm-tools&lt;/code>
workload, add a project reference to
&lt;code>integrations/wasm/csharp/src/AngularTs.Wasm.csproj&lt;/code>, and publish the application
for &lt;code>browser-wasm&lt;/code>.&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>dotnet workload install wasm-tools
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>dotnet publish -c Release -r browser-wasm
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>The host adapter initializes .NET with the AngularTS imports and binds the guest
to a scope.&lt;/p></description></item><item><title>Go WebAssembly</title><link>https://angular-wave.github.io/angular.ts/docs/integrations/wasm-go/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://angular-wave.github.io/angular.ts/docs/integrations/wasm-go/</guid><description>&lt;p>AngularTS owns the page while Go handles domain logic in a Wasm module.&lt;/p>
&lt;h2 id="add-the-binding">Add the binding&lt;a class="td-heading-self-link" href="#add-the-binding" aria-label="Heading self-link">&lt;/a>&lt;/h2>
&lt;p>The binding is distributed as source. Point &lt;code>go.mod&lt;/code> at
&lt;code>integrations/wasm/go&lt;/code>, generate the application&amp;rsquo;s AngularTS metadata, compile
for &lt;code>js/wasm&lt;/code>, and place Go&amp;rsquo;s &lt;code>wasm_exec.js&lt;/code> beside the output.&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>go generate ./...
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#000">GOOS&lt;/span>&lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span>js &lt;span style="color:#000">GOARCH&lt;/span>&lt;span style="color:#ce5c00;font-weight:bold">=&lt;/span>wasm go build -o main.wasm .
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>cp &lt;span style="color:#4e9a06">&amp;#34;&lt;/span>&lt;span style="color:#204a87;font-weight:bold">$(&lt;/span>go env GOROOT&lt;span style="color:#204a87;font-weight:bold">)&lt;/span>&lt;span style="color:#4e9a06">/misc/wasm/wasm_exec.js&amp;#34;&lt;/span> .
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Load the generated AngularTS bootstrap module from the page.&lt;/p>
&lt;h2 id="guidance">Guidance&lt;a class="td-heading-self-link" href="#guidance" aria-label="Heading self-link">&lt;/a>&lt;/h2>
&lt;ul>
&lt;li>Keep callback wrappers reachable while AngularTS owns them.&lt;/li>
&lt;li>Release watches when their scope is destroyed.&lt;/li>
&lt;li>Batch related scope updates.&lt;/li>
&lt;li>Keep durable shared state in AngularTS models.&lt;/li>
&lt;/ul>
&lt;h2 id="complete-example">Complete example&lt;a class="td-heading-self-link" href="#complete-example" aria-label="Heading self-link">&lt;/a>&lt;/h2>
&lt;p>Use &lt;code>integrations/wasm/go/examples/basic_app&lt;/code>, or browse all &lt;a href="../examples/">integration
examples&lt;/a>.&lt;/p></description></item><item><title>Rust WebAssembly</title><link>https://angular-wave.github.io/angular.ts/docs/integrations/wasm-rust/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://angular-wave.github.io/angular.ts/docs/integrations/wasm-rust/</guid><description>&lt;p>AngularTS owns the page while Rust handles domain logic and services in a Wasm
module.&lt;/p>
&lt;h2 id="add-the-binding">Add the binding&lt;a class="td-heading-self-link" href="#add-the-binding" aria-label="Heading self-link">&lt;/a>&lt;/h2>
&lt;p>The binding is distributed as source. Add &lt;code>integrations/wasm/rust/crates/angular-ts&lt;/code>
as a path dependency, install the &lt;code>wasm32-unknown-unknown&lt;/code> target and
&lt;code>wasm-bindgen-cli&lt;/code>, then compile the guest and generate its Web loader.&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>cargo build --target wasm32-unknown-unknown
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>wasm-bindgen target/wasm32-unknown-unknown/debug/app.wasm &lt;span style="color:#4e9a06">\
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#4e9a06">&lt;/span> --target web &lt;span style="color:#4e9a06">\
&lt;/span>&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>&lt;span style="color:#4e9a06">&lt;/span> --out-dir pkg
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Initialize the generated module before bootstrapping AngularTS.&lt;/p>
&lt;h2 id="guidance">Guidance&lt;a class="td-heading-self-link" href="#guidance" aria-label="Heading self-link">&lt;/a>&lt;/h2>
&lt;ul>
&lt;li>Use typed fields instead of raw paths.&lt;/li>
&lt;li>Propagate contract and decode failures.&lt;/li>
&lt;li>Keep watch guards for exactly as long as the subscription is needed.&lt;/li>
&lt;li>Keep durable shared state in AngularTS models.&lt;/li>
&lt;/ul>
&lt;h2 id="complete-examples">Complete examples&lt;a class="td-heading-self-link" href="#complete-examples" aria-label="Heading self-link">&lt;/a>&lt;/h2>
&lt;p>Use &lt;code>integrations/wasm/rust/examples/basic_app&lt;/code> for application registration and
&lt;code>integrations/wasm/rust/examples/scope_bridge&lt;/code> for direct scope exchange. See
all &lt;a href="../examples/">integration examples&lt;/a>.&lt;/p></description></item><item><title>Zig WebAssembly</title><link>https://angular-wave.github.io/angular.ts/docs/integrations/wasm-zig/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://angular-wave.github.io/angular.ts/docs/integrations/wasm-zig/</guid><description>&lt;p>AngularTS owns the page while Zig handles domain logic in a Wasm module.&lt;/p>
&lt;h2 id="add-the-binding">Add the binding&lt;a class="td-heading-self-link" href="#add-the-binding" aria-label="Heading self-link">&lt;/a>&lt;/h2>
&lt;p>The binding is distributed as source. Add
&lt;code>integrations/wasm/zig/src/angular_ts.zig&lt;/code> as an &lt;code>angular-ts&lt;/code> module and compile
the guest for &lt;code>wasm32-freestanding&lt;/code> without an entry point.&lt;/p>
&lt;p>Load the result through &lt;code>app.wasm(...)&lt;/code> and bind it to the component scope from
the host adapter.&lt;/p>
&lt;h2 id="guidance">Guidance&lt;a class="td-heading-self-link" href="#guidance" aria-label="Heading self-link">&lt;/a>&lt;/h2>
&lt;ul>
&lt;li>Call &lt;code>deinit()&lt;/code> for owned decoded results and watch registrations.&lt;/li>
&lt;li>Use allocator-aware decoding only when the application needs custom ownership.&lt;/li>
&lt;li>Apply related field changes through one update.&lt;/li>
&lt;li>Keep durable shared state in AngularTS models.&lt;/li>
&lt;/ul>
&lt;h2 id="complete-example">Complete example&lt;a class="td-heading-self-link" href="#complete-example" aria-label="Heading self-link">&lt;/a>&lt;/h2>
&lt;p>Use &lt;code>integrations/wasm/zig/examples/todo&lt;/code>, or browse all &lt;a href="../examples/">integration
examples&lt;/a>.&lt;/p></description></item></channel></rss>