小規模案件で作られた秘伝のタレ

30
小規模案件で 作られた 秘伝のタレ

Upload: muyuu-fujita

Post on 07-Jul-2015

604 views

Category:

Technology


0 download

DESCRIPTION

第5回 HTML5minutes! 〜triton-js〜 で話したLTです

TRANSCRIPT

Page 1: 小規模案件で作られた秘伝のタレ

小規模案件で作られた秘伝のタレ

Page 2: 小規模案件で作られた秘伝のタレ

自己紹介me = "なまえ": "むゆう"

"ツイッター": "@anticyborg"

"所属": "フリーランス"

"職種": "フロントエンドエンジニア"

Page 3: 小規模案件で作られた秘伝のタレ

主な仕事• 小規模のWebページ制作• 複数案件平行で走る• 0から作って納品なタイプも多い

Page 4: 小規模案件で作られた秘伝のタレ

よく思うこと• 制作期間が短い案件が多い• htmlもcssもjsも同じような記述が多い• JSでのUI実装は大体自作のものになる

• ライブラリの解析・カスタムにかける時間で作れる

Page 5: 小規模案件で作られた秘伝のタレ

テンプレート化汎用名ものはできるだけテンプレート化• 汎用な記述• ディレクトリ構成• ビルドタスク

Page 6: 小規模案件で作られた秘伝のタレ

日付と1行概要のテキスト.recentDateList ul.recentDateList__list li.recentDateList__item .recentDateList__.date 2014/01/01 .recentDateList__.desc 新着情報テキスト li.recentDateList__item .recentDateList__.date 2014/01/01 .recentDateList__.desc 新着情報テキスト

Page 7: 小規模案件で作られた秘伝のタレ

日付と1行概要のテキスト.recentDateList &__list margin: 10px

&__item overflow: hidden

&__date float: left width: 100px

&__desc overflow: hidden

Page 8: 小規模案件で作られた秘伝のタレ

タブ.tabWrap .tab .tab__list a.tab__item(href="#ct1") タブテキスト .tab__list a.tab__item(href="#ct2") タブテキスト .tabContent .tabContent__item タブの中身 .tabContent__item タブの中身

Page 9: 小規模案件で作られた秘伝のタレ

タブ.tab &__list float: left &__item display: block.tabContent &__item display: block &:is-hide display: none

Page 10: 小規模案件で作られた秘伝のタレ

タブapp.Tab = (ele, tab, content) -> self = @ @ele = $(ele) @hide = -> @ele.find(content).addClass "is-hide"

@show = (that) -> id = $(that).attr 'href' @ele.find(id).removeClass "is-hide"

@ele.on "click", tab, -> self.hide() self.show @ this

Page 11: 小規模案件で作られた秘伝のタレ

BEM でのモジュール化

Page 12: 小規模案件で作られた秘伝のタレ

BEMで叶うこと• モジュール単位のcss

• 衝突しないcss

• 拡張しやすいcss

Page 13: 小規模案件で作られた秘伝のタレ

BEM is ステキ

Page 14: 小規模案件で作られた秘伝のタレ

モジュール• パーツのひとまとまりをモジュールとして考え、ファイルを分割していく

• 作ったモジュールを分かりやすく、使い回しやすいように配置する

Page 15: 小規模案件で作られた秘伝のタレ

モジュールを意識した構成

app └ src/ └ jade/ └ sass/ └ module/ _recentDateList.sass _tab.sass style.sass └ coffee/ └ tab/ tab.coffee app.coffee

Page 16: 小規模案件で作られた秘伝のタレ

よりモジュールを意識した構成

src/ └ sass/ style.sass └ coffee/ app.coffee └ modules/ └ recentDeteList/ _recentDateList.sass └ tab/ _tab.sass tab.coffee

Page 17: 小規模案件で作られた秘伝のタレ

テンプレート的なhtml入れたり

src/ └ sass/ style.sass └ coffee/ app.coffee └ modules/ └ recentDeteList/ _recentDateList.sass _recentDateList.jade └ tab/ _tab.jade _tab.sass tab.coffee

Page 18: 小規模案件で作られた秘伝のタレ

丹念に繰り返す

Page 19: 小規模案件で作られた秘伝のタレ

しばらく経ったある日

Page 20: 小規模案件で作られた秘伝のタレ

各所に散らばったファイルを結合

Page 21: 小規模案件で作られた秘伝のタレ

sassは style.sass に記述style.sass@import "layout/header"@import "layout/footer"

@import "../modules/recentDateList/recentDateList"@import "../modules/tab/tab"

Page 22: 小規模案件で作られた秘伝のタレ

coffee は gulpで

Page 23: 小規模案件で作られた秘伝のタレ

gulpfile.coffeegulp.task('concat', function() { gulp.src([ 'modules/tab/tab.js' 'modules/aaa/aaa.js' 'modules/bbb/bbb.js' 'modules/bbb/bbbView.js' ]) .pipe(concat('all.js')) .pipe(gulp.dest('./dist/'))});

Page 24: 小規模案件で作られた秘伝のタレ

使い回す際はフォルダ毎コピー不要なモジュールをコメントアウト

Page 25: 小規模案件で作られた秘伝のタレ

コメントアウトstyle.sass@import "layout/header"@import "layout/footer"

@import "../modules/recentDateList/recentDateList"// @import "../modules/tab/tab"

Page 26: 小規模案件で作られた秘伝のタレ

コメントアウトgulpfile.coffeegulp.task('concat', function() { gulp.src([ 'modules/tab/tab.js' 'modules/aaa/aaa.js' # 'modules/bbb/bbb.js' # 'modules/bbb/bbbView.js' ]) .pipe(concat('all.js')) .pipe(gulp.dest('./dist/'))});

Page 27: 小規模案件で作られた秘伝のタレ

吐き出されるファイルには不要なファイルは出力されない

Page 28: 小規模案件で作られた秘伝のタレ

ステキ

Page 29: 小規模案件で作られた秘伝のタレ

何故こんな面倒なことをやるのか• Web Componentの襲来に備える• 世界が Web Component を認めなくても問題ない

• モジュール単位で作れば組み合わせも可能

Page 30: 小規模案件で作られた秘伝のタレ

よし!module作ろうぜ!