Svelteコンパイラ・ハンドブック
(lihautan.com)- Svelteのコンパイル段階を分かりやすく説明
#1 .svelte ファイルを読み込んでASTに変換
→ HTMLは独自にパースし、ScriptはAcorn、CSSはcss-treeを使用
#2 ASTを探索して参照と依存関係を追跡
→ Componentインスタンスを作成し、変数を見つけてマーク
#3 コードブロックとフラグメントを生成
→ DOM/SSR Renderer
#4 コード生成
#1 .svelte ファイルを読み込んでASTに変換
→ HTMLは独自にパースし、ScriptはAcorn、CSSはcss-treeを使用
#2 ASTを探索して参照と依存関係を追跡
→ Componentインスタンスを作成し、変数を見つけてマーク
#3 コードブロックとフラグメントを生成
→ DOM/SSR Renderer
#4 コード生成
2件のコメント
数日前に紹介されたToast UI Editor(https://ja.news.hada.io/topic?id=1823)もそうですし、Language Server Protocol(https://en.wikipedia.org/wiki/Language_Server_Protocol)もそうですが、ASTを活用するプロジェクトがますます増えていますね。以前、JSファイルをテキストではなくASTとして渡して、ブラウザエンジンがより速く解釈できるようにしようという主張も見た気がしますが、この記事(https://blog.cloudflare.com/binary-ast)ではなかったものの、似たようなアイデアだと思います.
暗黙的に生成されるASTではなく、もう少し意味のある形で手作業でASTを作るようになると、今度はS式系の関数型言語になりますが、その中間で出会えたら面白そうですね。
一度読めば、外部コントリビューターがSvelteのコードにコントリビュートしやすくなりそう