105 lines
2.3 KiB
TeX
105 lines
2.3 KiB
TeX
\documentclass{beamer}
|
|
% \usetheme{Boadilla}
|
|
\usetheme{Madrid}
|
|
|
|
\usepackage{bookmark}
|
|
\usepackage{graphicx}
|
|
\usepackage{fancyvrb}
|
|
|
|
\setbeamercovered{transparent}
|
|
|
|
\title{enterprise}
|
|
\subtitle{UI Framework Project}
|
|
\author{Michael Zhang}
|
|
\date{\today}
|
|
|
|
\begin{document}
|
|
|
|
\begin{frame}
|
|
\titlepage
|
|
\note{Briefly discuss what is enterprise, a bit about the origin of its name.}
|
|
\end{frame}
|
|
|
|
\begin{frame}
|
|
\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}
|
|
|
|
\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 {
|
|
name: String = "",
|
|
}
|
|
|
|
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}
|
|
|
|
\include{general}
|
|
|
|
\include{codegen}
|
|
|
|
\begin{frame}
|
|
\frametitle{Future work}
|
|
|
|
\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.)
|
|
\item Interpreted executor for fast prototyping.
|
|
\item Backend code generation.
|
|
\end{itemize}
|
|
\end{frame}
|
|
|
|
\end{document}
|