2020-02-25 05:51:39 +00:00
\documentclass { beamer}
% \usetheme{Boadilla}
\usetheme { Madrid}
\usepackage { bookmark}
\usepackage { graphicx}
\usepackage { fancyvrb}
\setbeamercovered { transparent}
\title { enterprise}
\subtitle { UI Framework Project}
\author { Michael Zhang}
2020-02-25 08:29:00 +00:00
\date { \today }
2020-02-25 05:51:39 +00:00
\begin { document}
\begin { frame}
\titlepage
\note { Briefly discuss what is enterprise, a bit about the origin of its name.}
\end { frame}
\begin { frame}
2020-02-25 08:29:00 +00:00
\frametitle { What's out there today?}
\begin { itemize} [<+>]
\item React: Immediate-mode style framework
\item Elm: Functional message-passing framework
\item Svelte: Compile-time framework
\item Roll your own... ?
\end { itemize}
\end { frame}
\begin { frame}
\frametitle { High-level goals}
2020-02-25 05:51:39 +00:00
\begin { itemize} [<+>]
\item Declarative-style programming.
\note { In UI design, we really don't care about how the logic is implemented. We don't care how the browser draws the styles, or what order on-hover handlers are added to dropdowns.}
\item No framework bloat.
\note { enterprise is more like a compiler than a framework in the sense that the code it generates doesn't need to contain the actual compilation process.}
\item Separation of business logic and implementation.
\note { Talk about Epic?}
\end { itemize}
\end { frame}
\begin { frame} [fragile]
\frametitle { What do I have today?}
\begin { itemize}
\item Foundations for event analysis.
\item WASM code generation.
\end { itemize}
Example:
\begin { verbatim}
component HelloWorld {
model {
2020-02-25 08:29:00 +00:00
name: String = "",
2020-02-25 05:51:39 +00:00
}
view {
<input bind:value="name" />
"Hello, " { name} "!"
}
}
\end { verbatim}
\end { frame}
\begin { frame}
\frametitle { How does it work?}
\begin { enumerate}
\item Parsing DSL syntax.
\item Assemble dependency graph.
\item Generate code.
\end { enumerate}
\end { frame}
\include { parsing}
\include { deps}
2020-02-25 08:29:00 +00:00
\include { general}
2020-02-25 05:51:39 +00:00
\include { codegen}
\begin { frame}
2020-02-25 08:29:00 +00:00
\frametitle { Future work}
2020-02-25 05:51:39 +00:00
\begin { itemize}
\item Full DSL, independent from Rust.
\item Cassowary-based constraint solving for layout.
\item Asynchronous event handlers.
\item Eliminating unnecessary model stores.
\item Connecting to other frameworks (GTK, Iced, etc.)
2020-02-25 08:29:00 +00:00
\item Interpreted executor for fast prototyping.
\item Backend code generation.
2020-02-25 05:51:39 +00:00
\end { itemize}
\end { frame}
\end { document}