104 lines
No EOL
2.5 KiB
TeX
104 lines
No EOL
2.5 KiB
TeX
\begin{frame}[fragile]
|
|
\frametitle{Deep dive into dependency calculation}
|
|
|
|
\begin{columns}
|
|
\begin{column}{0.5\textwidth}
|
|
\begin{Verbatim}[fontsize=\small]
|
|
component HelloWorld {
|
|
model {
|
|
name: String = "",
|
|
}
|
|
|
|
view {
|
|
<input bind:value="name" />
|
|
"Hello, " {name} "!"
|
|
}
|
|
}
|
|
\end{Verbatim}
|
|
\end{column}
|
|
\begin{column}{0.3\textwidth}
|
|
Points of interest:
|
|
|
|
\begin{itemize}
|
|
\item \texttt{bind:value} statement
|
|
\item Code segment \texttt{\{name\}}
|
|
\end{itemize}
|
|
\end{column}
|
|
\end{columns}
|
|
\end{frame}
|
|
|
|
\begin{frame}
|
|
\frametitle{Generated dependency chart}
|
|
|
|
\begin{center}
|
|
\includegraphics[width=0.6\textwidth]{{./dot/helloworld.dot}.pdf}
|
|
\end{center}
|
|
\end{frame}
|
|
|
|
\begin{frame}
|
|
\frametitle{Generated dependency chart}
|
|
|
|
\begin{columns}
|
|
\begin{column}{0.4\textwidth}
|
|
\includegraphics[width=\textwidth]{{./dot/helloworld.dot}.pdf}
|
|
\end{column}
|
|
\begin{column}{0.5\textwidth}
|
|
\begin{itemize}[<+>]
|
|
\item Symbolizes all interactions within the application.
|
|
\item All possible dependent actors are uniquely identified.
|
|
\item Simple DFS will tell us all updates that need to occur.
|
|
\end{itemize}
|
|
\end{column}
|
|
\end{columns}
|
|
\end{frame}
|
|
|
|
\begin{frame}
|
|
\frametitle{Case study 2: TodoMVC}
|
|
|
|
\begin{center}
|
|
\includegraphics[width=0.7\textwidth]{./todomvc.png}
|
|
\end{center}
|
|
\end{frame}
|
|
|
|
\begin{frame}[fragile]
|
|
\frametitle{Case study 2: dependencies of TodoMVC}
|
|
|
|
\begin{center}
|
|
\includegraphics[width=0.85\textwidth]{{./dot/todomvc.dot}.pdf}
|
|
|
|
\begin{BVerbatim}[fontsize=\tiny]
|
|
component TodoMVC {
|
|
model {
|
|
value: String = "",
|
|
todos: List<String> = List::new(),
|
|
}
|
|
|
|
view {
|
|
<input bind:value="value"
|
|
on:submit={|o@todos, o@value| { set!(todos = todos.with(value));
|
|
set!(value = ""); }} />
|
|
<ul>
|
|
[for (key, line) in {todos} : List<String>]
|
|
<li>{line}</li>
|
|
[/for]
|
|
</ul>
|
|
}
|
|
}
|
|
\end{BVerbatim}
|
|
\end{center}
|
|
\end{frame}
|
|
|
|
\begin{frame}
|
|
\frametitle{Challenges with TodoMVC}
|
|
|
|
\begin{itemize}
|
|
\item Everything within iterator must be parameterized.
|
|
\begin{itemize}
|
|
\item Generated code must be parameterized as well.
|
|
\end{itemize}
|
|
\item "Reconciliation", or re-updating the model on change.
|
|
\begin{itemize}
|
|
\item Consider hash-map-backed linked list implementations.
|
|
\end{itemize}
|
|
\end{itemize}
|
|
\end{frame} |