SlideShare a Scribd company logo
vue-template-parserを作っている話
s1240075 棗
光幹
自己紹介
名前:棗 光幹
大学:会津大学学部2年(24期)
好きな技術:Web
好きな言語:Golang, JavaScript
SNS:natsumen
マイブーム:うまるちゃん、言語処理系
目次
1. vue-template-parserって?
2. 動機
3. 中身について
4. まとめ
vue-template-parserって?
● .vueファイルをパースするライブラリ
● vue用パーサコンビネータ
● JavaScript実装
● まだ途中です
vue-template-parserって?
● .vueファイルをパースするライブラリ
● vue用パーサコンビネータ
● JavaScript実装
● まだ途中です
● 進捗はまだ温まってないです。
動機
● アルバイトで少々Vue.jsを書いてた。
● vueのVSCode pluginを書きたかった。
● 既存vueのparserを使いたかったが,いい感じのがなかった。
● ので、自作しよう。
中身について
● template部分 -> htmlparser2 で実装
● script部分 -> babylon で実装
● style部分 -> reworkcss/css で実装 ?(未定)
中身について
● template部分 -> htmlparser2 で実装
● script部分 -> babylon で実装
● style部分 -> reworkcss/css で実装 ?(未定)
目標!
templateとscript部分を依存関係含めASTの構造に
直せるようにする。
tempalte部分
● メインでhtmlparser2を利用。
● htmlparser2の結果をさらに自分で解析していく。
● htmlparser2は、タグ構造なら(たぶん)なんでもよしなにパースしてくれる。
htmlparser2
htmlparser2
こんな感じでタグがパースされる。
これをscriptのデータとひも付けたり
する。で、その途中。
script部分
● メインでbabylonを利用。
● パースできないものがあったら、随時自実装。
babylonとは
● webフロントでおなじみのBabelの内部で利用されている
JavaScriptパーサー。
JS parser AST
generato
r
JS
traverser
AST
babylonとは
● webフロントでおなじみBabelの内部で利用されている
JavaScriptパーサー。
JS babylon AST
generato
r
JS
traverser
AST
babylon便利だ、楽しいな!
基本はこの2つのみ。
babylon.parser(code, [option])
babylon.parserExpression(code, [option])
返り値は Babel AST formatというオブジェクト。
babel-log(ライブラリ)とかで見れる。
babylon便利だ、楽しいな!
fileやmoduleなど
形式の指定。
JSXなどなどもパ
ースできる。
babylon便利だ、楽しいな!
結構長い。
5*5+(4-2)*2+9 で 452行分いく。
ASTのNodeの情報 Nodeの位置とかト
ークンの情報
(より細かい)
babylon便利だ、楽しいな!
bindingする変数や関数、コンポーネントを
htmlparser2のtreeとひも付ける。
babylon便利だ、楽しいな!
bindingする変数や関数、コンポーネントを
htmlのtreeとひも付ける。
そんな感じで依存関係をもたせた
templateとscriptの二つのASTオブジ
ェクトの入った配列を返す。
これから
● とりあえず、ファイル一つパースできるように。
● pug(元jade)対応とかcss対応。
● 依存関係を拾う。(子と親コンポーネントとか)
● もはや、自作でパーサー書いてみたり。
まとめ
● htmlparser2はけっこうよしなにやってくれる。
● babylon便利。
● BabelなどJSのトランスパイル文化は楽しい。
● 言語処理系は楽しい。
おわり
ご清聴ありがとう
ございました!

More Related Content

PPT
Perl Beginners #7 おとなのWAF
PDF
2013-09 テンプレートエンジンMixer2紹介 HTML5J&JJUG合同勉強会LT
PDF
0から学んだポストモダンPerl @ YAPC::Asia Tokyo 2013
PDF
201311 webデザイナとエンジニアのチームワークを加速させるテンプレートエンジンmixer2 devlove現場甲子園
PDF
究極にして至高のWAF
PPTX
自動的に開発環境設定(1)
PDF
今すぐブラウザでES6を使おう
PDF
C# で Single Page Web アプリが開発できるフレームワーク&開発環境 「Blazor」 ― その概要と Web アプリ開発者にもたらす利点
Perl Beginners #7 おとなのWAF
2013-09 テンプレートエンジンMixer2紹介 HTML5J&JJUG合同勉強会LT
0から学んだポストモダンPerl @ YAPC::Asia Tokyo 2013
201311 webデザイナとエンジニアのチームワークを加速させるテンプレートエンジンmixer2 devlove現場甲子園
究極にして至高のWAF
自動的に開発環境設定(1)
今すぐブラウザでES6を使おう
C# で Single Page Web アプリが開発できるフレームワーク&開発環境 「Blazor」 ― その概要と Web アプリ開発者にもたらす利点

What's hot (20)

PDF
テンプレートエンジンにMixer2を使うとSeleniumでのテストもラクになるかもねという話
PDF
Selenium再入門-W3C勧告とページオブジェクトパターンと私-201707webエンジニア勉強会#2神田
PDF
C# で Single Page Web アプリを 開発できる Blazor ― その魅力
PDF
むずかしくないJavaScriptのやさしい話 jQueryからの次のステップ #ndsmeetup8
PDF
がんばらなくても C# で Single Page Web アプリケーションが書けてしまう「Blazor」とは
PDF
Blazor 触ってみた
KEY
Beginners scala 20121113
PDF
JavaScriptと共に歩いて行く決意をした君へ
PDF
20130511 jjug ccc講演 さらばjsp JAXBとmixer2
PPTX
[社内勉強会]Gradleを使おう
PPTX
Meguro es7
PDF
JavaScript 研修
PDF
いまさら聞けない!?Backbone.js 超入門
PPTX
Chrome-eject がこの先生きのこるには
ODP
HTML5 アプリ開発
PDF
20140405 mavenセントラルリポジトリへの登録のコツ 第5回渋谷java
PDF
2013 08-19 jjug
ODP
今流行りのウェブアプリ開発環境Yeoman
PDF
BACKBONE.JSによるWebアプリケーション開発について
PDF
なぜ初心者は webpackが解らないのか?- Why can’t you understand the webpack? -
テンプレートエンジンにMixer2を使うとSeleniumでのテストもラクになるかもねという話
Selenium再入門-W3C勧告とページオブジェクトパターンと私-201707webエンジニア勉強会#2神田
C# で Single Page Web アプリを 開発できる Blazor ― その魅力
むずかしくないJavaScriptのやさしい話 jQueryからの次のステップ #ndsmeetup8
がんばらなくても C# で Single Page Web アプリケーションが書けてしまう「Blazor」とは
Blazor 触ってみた
Beginners scala 20121113
JavaScriptと共に歩いて行く決意をした君へ
20130511 jjug ccc講演 さらばjsp JAXBとmixer2
[社内勉強会]Gradleを使おう
Meguro es7
JavaScript 研修
いまさら聞けない!?Backbone.js 超入門
Chrome-eject がこの先生きのこるには
HTML5 アプリ開発
20140405 mavenセントラルリポジトリへの登録のコツ 第5回渋谷java
2013 08-19 jjug
今流行りのウェブアプリ開発環境Yeoman
BACKBONE.JSによるWebアプリケーション開発について
なぜ初心者は webpackが解らないのか?- Why can’t you understand the webpack? -
Ad

More from Koki Natsume (9)

PDF
Studentgo1
PDF
Spring aizu-lt-2018
PPTX
Goで学ぶDApp(aizu.go#2)
PPTX
Pwaを作ってみる(ejリクールトlt 2017/10/18)
PPTX
Alt#0x008 2017/5/20
PPTX
Gcflt会2017/4/2
PPTX
機械学習勉強会2017/5/14
PPTX
Alt2016
PPTX
機械学習勉強会2017/2/19(nn基礎)
Studentgo1
Spring aizu-lt-2018
Goで学ぶDApp(aizu.go#2)
Pwaを作ってみる(ejリクールトlt 2017/10/18)
Alt#0x008 2017/5/20
Gcflt会2017/4/2
機械学習勉強会2017/5/14
Alt2016
機械学習勉強会2017/2/19(nn基礎)
Ad

Vue template-parserを作っている話