SlideShare una empresa de Scribd logo
1 de 48
Descargar para leer sin conexión
Gulp.js + Sublime plugin

⾃自動化前端任務流程
講者:廖洧杰
About Me
• 前端⼯工程師
• Desktop / Mobile 前端開發
• ⾼高雄前端發起⼈人 (2013/3)
• ⺫⽬目前投⼊入Node.js、MongoDB
進⼊入主題
什麼是⾃自動化?
節省⼈人⼯工時間
讓機器⾃自動處理任務
為什麼前端要導⼊入
⾃自動化?
CSS Sprite
舉個例⼦子
CSS Sprites
!
.logo{	
width:46px;	
height:46px;	
background: url(all.png) 0 0;	
}
http://www.smashingmagazine.com/2009/04/27/the-mystery-of-css-sprites-techniques-tools-and-tutorials/
⼈人⽣生第⼀一個CSS sprite
1. 設計這張CSS Sprites花了我四個⼩小時
2. 圖⽚片時常需要開啟PS進⾏行編輯,必須精準定位
3. ⾃自訂class名稱
4. 時常位移沒算準,顯⽰示出額外的圖⽰示
5. 有新圖⽰示時,新增⼀一個⾄至少要10分鐘以上
後來改⽤用線上服務

http://goo.gl/J2nizo
直到遇上

Sass、Compass
@import "compass/utilities/sprites";	
@import "my-icons/*.png";	
@include all-my-icons-sprites;
!
.my-icons-delete,	
.my-icons-edit,	
{ background: url('/images/my-icons-
s34fe0604ab.png') no-repeat; }	
!
.my-icons-delete { background-position: 0
0; }	
.my-icons-edit { background-position: 0
-32px; }	
-64px; }	
將圖⽚片丟進資料夾,

⾃自動幫你合併圖⽚片、命名Class
要將前端開發盡量整合
在同條線上⾮非常困難
https://github.com/JacksonTian/fks
Gulp
使⽤用javascript撰寫任務排程
將前後端任務有條理地
交給Gulp去運⾏行
前端開發流程
• 後端環境建置(Node.js、Ruby、PHP)
• 前端程式語⾔言(Jade、Coffee、Sass)
• Framework選擇(Angular、Bootstrap、jQuery)
• 程式優化⽅方案(測試、編譯、壓縮)
安裝Gulp
• 安裝Node.js
• 安裝Gulp npm install gulp -g
Gulp必備檔案
• package.json:整理gulp plugin
• gulpfile.js:撰寫任務化流程
• ⽇日後有⼈人加⼊入專案,

只要有這兩隻就能瞬間將環境建⽴立好
Gulp起⼿手式(上)
!
• gulp.task(name[, deps], fn)

定義⼀一個任務名稱,接下來指定任務的⼯工作內容
• gulp.watch(glob[, opts, cb])

關注特定檔案是否更動
• gulp.src(glob) 

指定檔案來源
• gulp.dest(folder) 

檔案存檔位置
Gulp起⼿手式(下)
• gulpfile.js
!
var gulp = require('gulp');	
!
gulp.task('default',['build'] function() {	
// 系統預設直接執⾏行	
});	
!
gulp.task('build', function() {	
// 其他task預設不執⾏行,可透過default預先載⼊入	
});
Gulp起⼿手式(下)
• gulpfile.js
!
var gulp = require('gulp');	
!
gulp.task('default',['build'] function() {	
// 系統預設直接執⾏行	
});	
!
gulp.task('build', function() {	
// 其他task預設不執⾏行,可透過default預先載⼊入	
});
步驟⼀一:預設載⼊入gulp,才可使⽤用gulp功能。

例:gulp.task、gulp.watch

Gulp起⼿手式(下)
• gulpfile.js
!
var gulp = require('gulp');	
!
gulp.task('default',['build'] function() {	
// 系統預設直接執⾏行	
});	
!
gulp.task('build', function() {	
// 其他task預設不執⾏行,可透過default預先載⼊入	
});步驟⼆二:新增⼀一個task任務,命名為default,
當gulp啟動時,default會預設觸發。
Gulp起⼿手式(下)
• gulpfile.js
!
var gulp = require('gulp');	
!
gulp.task('default',['build'] function() {	
// 系統預設直接執⾏行	
});	
!
gulp.task('build', function() {	
// 其他task預設不執⾏行,可透過default預先載⼊入	
});
步驟三:其他task系統預設不執⾏行,但可透過default預先載⼊入
gulp-connect
建⽴立web server
1.輸⼊入指令碼安裝
npm install gulp-connect —-save-dev
node_modules gulp-connect
"devDependencies": {	
"gulp-connect": "^2.2.0"	
}
package.json
2.在gulpfile.js撰寫語法









var gulp = require('gulp'),	
connect = require('gulp-connect');	
gulp.task('server', function() {	
connect.server();	
});	
gulp.task('default',['server'],function(){});
2.在gulpfile.js撰寫語法









var gulp = require('gulp'),	
connect = require('gulp-connect');	
gulp.task('server', function() {	
connect.server();	
});	
gulp.task('default',['server'],function(){});	
步驟⼀一:載⼊入node_modules裡⾯面的gulp-connect模組
2.在gulpfile.js撰寫語法









var gulp = require('gulp'),	
connect = require('gulp-connect');	
gulp.task('server', function() {	
connect.server();	
});	
gulp.task('default',['server'],function(){});	
步驟⼆二:撰寫task任務,命名為server,
connect.server()是gulp-connect的其中⼀一個功能,
即創⽴立⼀一個web server。
2.在gulpfile.js撰寫語法









var gulp = require('gulp'),	
connect = require('gulp-connect');	
gulp.task('server', function() {	
connect.server();	
});	
gulp.task('default',['server'],function(){});	
步驟三:為了讓server能直接開啟,所以寫在預設
default裡⾯面。
Sass、Livereload
npm install gulp-compass --dev-save
gulpfile.js

var gulp = require('gulp'),	
connect = require('gulp-connect'),	
compass = require('gulp-compass');	
gulp.task('server', function() {	
connect.server({	
livereload: true	
});	
});	
gulp.task('compass', function() {	
gulp.src('./sass/*.sass')	
.pipe(compass())	
.pipe(gulp.dest('./css'))	
.pipe(connect.reload());	
});	
gulp.task('default',['server','compass'],function(){	
gulp.watch('./sass/*',['compass']);	
});
gulpfile.js

var gulp = require('gulp'),	
connect = require('gulp-connect'),	
compass = require('gulp-compass');	
gulp.task('server', function() {	
connect.server({	
livereload: true	
});	
});	
gulp.task('compass', function() {	
gulp.src('./sass/*.sass')	
.pipe(compass())	
.pipe(gulp.dest('./css'))	
.pipe(connect.reload());	
});	
gulp.task('default',['server','compass'],function(){	
gulp.watch('./sass/*',['compass']);	
});	
gulp-connect預設有livereload設定,

這些api⽤用法都要去NPM 官網都會寫。
ˇ
var gulp = require('gulp'),	
connect = require('gulp-connect'),	
compass = require('gulp-compass');	
gulp.task('server', function() {	
connect.server({	
livereload: true	
});	
});	
gulp.task('compass', function() {	
gulp.src('./sass/*.sass')	
.pipe(compass())	
.pipe(gulp.dest('./css'))	
.pipe(connect.reload());	
});	
gulp.task('default',['server','compass'],function(){	
gulp.watch('./sass/*',['compass']);	
});	
gulp.src指定檔案,*號代表所有Sass檔案,
可透過pipe將任務依序傳遞,
gulp.dest是指最終將檔案所放置的位置,
connect.reload()則是將瀏覽器重新refresh。
ˇ
var gulp = require('gulp'),	
connect = require('gulp-connect'),	
compass = require('gulp-compass');	
gulp.task('server', function() {	
connect.server({	
livereload: true	
});	
});	
gulp.task('compass', function() {	
gulp.src('./sass/*.sass')	
.pipe(compass())	
.pipe(gulp.dest('./css'))	
.pipe(connect.reload());	
});	
gulp.task('default',['server','compass'],function(){	
gulp.watch('./sass/*',['compass']);	
});	
利⽤用gulp.watch監聽根⺫⽬目錄Sass資料夾內的檔案,
有更新就觸發compass的task。
合併與壓縮js
gulp-concat、gulp-uglify
npm install gulp-concat gulp-uglify --dev-save
gulpfile.js

var gulp = require('gulp'),	
concat = require(‘gulp-concat')	
uglify = require('gulp-uglify');	
gulp.task('js', function() { 	
gulp.src('./js/*.js') 	
.pipe(concat(‘app.js')) //將所有js合併成app.js	
.pipe(uglify()) //壓縮js	
.pipe(gulp.dest(‘./dist/js/')) 	
});	
!
gulp.task('default',['js'],function(){	
gulp.watch(‘./js/*',['js']); //監聽js檔案	
});
DEMO
熱⾨門Plugin
• gulp-connect 開啟server
• gulp-concat 合併
• gulp-imagemin 圖⽚片壓縮
• gulp-clean 清除檔案
• gulp-rename 重新命名
• gulp-minify-css 壓縮CSS
• gulp-jshint JS Debug
• gulp-uglify 壓縮檔案
preprocessor
• gulp-compass
• gulp-less
• gulp-stylus
• gulp-jade
• gulp-slim
• gulp-coffee
• gulp-livescript
BrowserSync
跨載具測試、livereload
npm install browser-sync gulp --save-dev
Bower
前端框架管理 by bower.json
npm install gulp-bower gulp --save-dev
hologram
透過Sass、CSS註解同步撰寫style guides⽂文件
npm install gulp-hologram gulp --save-dev
mocha
web測試
npm install gulp-mocha gulp --save-dev
建⽴立⾃自⼰己的⼀一條⻯⿓龍開發流程
建⽴立前後端環境 開發編譯
style⽂文件web測試專案上線
版本控管
後續維護
sublime plugin
• 1.emmet - 減少打錯字的機會
• 2.HTML CSS JS Prettify - ⾃自動排版
• 3.SublimeLinter - Debug Code
• 4.autofilename - ⾃自動搜尋檔案位置
Thanks
Q&A

Más contenido relacionado

La actualidad más candente

Project life cycle
Project life cycleProject life cycle
Project life cycleMaryam Juma
 
コルーチンでC++でも楽々ゲーム作成!
コルーチンでC++でも楽々ゲーム作成!コルーチンでC++でも楽々ゲーム作成!
コルーチンでC++でも楽々ゲーム作成!amusementcreators
 
HoloLens 2 開発入門
HoloLens 2 開発入門HoloLens 2 開発入門
HoloLens 2 開発入門Akihiro Ueyama
 
【関東GPGPU勉強会#2】OpenCVのOpenCL実装oclMat
【関東GPGPU勉強会#2】OpenCVのOpenCL実装oclMat【関東GPGPU勉強会#2】OpenCVのOpenCL実装oclMat
【関東GPGPU勉強会#2】OpenCVのOpenCL実装oclMatYasuhiro Yoshimura
 
地域公共交通の計画手法
地域公共交通の計画手法地域公共交通の計画手法
地域公共交通の計画手法masa_f
 
ドローン用フライトコントローラ「Dronecode」の概要( #KOF2015 )
ドローン用フライトコントローラ「Dronecode」の概要( #KOF2015 )ドローン用フライトコントローラ「Dronecode」の概要( #KOF2015 )
ドローン用フライトコントローラ「Dronecode」の概要( #KOF2015 )博宣 今村
 
ARコンテンツ作成勉強会:UnityとVuforiaではじめるAR [主要部分]
ARコンテンツ作成勉強会:UnityとVuforiaではじめるAR [主要部分]ARコンテンツ作成勉強会:UnityとVuforiaではじめるAR [主要部分]
ARコンテンツ作成勉強会:UnityとVuforiaではじめるAR [主要部分]Takashi Yoshinaga
 
コンポーネント単位で考えるWeb制作
コンポーネント単位で考えるWeb制作コンポーネント単位で考えるWeb制作
コンポーネント単位で考えるWeb制作祐磨 堀
 
Android カスタムROMの作り方
Android カスタムROMの作り方Android カスタムROMの作り方
Android カスタムROMの作り方Masahiro Hidaka
 
Pythonによる高位設計フレームワークPyCoRAMでFPGAシステムを開発してみよう
Pythonによる高位設計フレームワークPyCoRAMでFPGAシステムを開発してみようPythonによる高位設計フレームワークPyCoRAMでFPGAシステムを開発してみよう
Pythonによる高位設計フレームワークPyCoRAMでFPGAシステムを開発してみようShinya Takamaeda-Y
 
ある企業様の転職プレゼン面接で内定した資料を公開&説明します
ある企業様の転職プレゼン面接で内定した資料を公開&説明しますある企業様の転職プレゼン面接で内定した資料を公開&説明します
ある企業様の転職プレゼン面接で内定した資料を公開&説明しますとらのこ
 
設計品質とアーキテクチャ
設計品質とアーキテクチャ設計品質とアーキテクチャ
設計品質とアーキテクチャToru Koido
 
창의적 인재로 거듭나는 디자인씽킹 맛보기
창의적 인재로 거듭나는 디자인씽킹 맛보기창의적 인재로 거듭나는 디자인씽킹 맛보기
창의적 인재로 거듭나는 디자인씽킹 맛보기윤혁 조
 
Overview of the .Net Collection Framework and Immutable Collections
Overview of the .Net Collection Framework and Immutable CollectionsOverview of the .Net Collection Framework and Immutable Collections
Overview of the .Net Collection Framework and Immutable CollectionsYoshifumi Kawai
 
クリーンアーキテクチャの考え方にもとづく Laravel との付き合い方 #phpconokinawa
クリーンアーキテクチャの考え方にもとづく Laravel との付き合い方 #phpconokinawaクリーンアーキテクチャの考え方にもとづく Laravel との付き合い方 #phpconokinawa
クリーンアーキテクチャの考え方にもとづく Laravel との付き合い方 #phpconokinawaShohei Okada
 

La actualidad más candente (20)

Project life cycle
Project life cycleProject life cycle
Project life cycle
 
コルーチンでC++でも楽々ゲーム作成!
コルーチンでC++でも楽々ゲーム作成!コルーチンでC++でも楽々ゲーム作成!
コルーチンでC++でも楽々ゲーム作成!
 
ISFで遊ぼう!
ISFで遊ぼう!ISFで遊ぼう!
ISFで遊ぼう!
 
Rx入門
Rx入門Rx入門
Rx入門
 
HoloLens 2 開発入門
HoloLens 2 開発入門HoloLens 2 開発入門
HoloLens 2 開発入門
 
【関東GPGPU勉強会#2】OpenCVのOpenCL実装oclMat
【関東GPGPU勉強会#2】OpenCVのOpenCL実装oclMat【関東GPGPU勉強会#2】OpenCVのOpenCL実装oclMat
【関東GPGPU勉強会#2】OpenCVのOpenCL実装oclMat
 
地域公共交通の計画手法
地域公共交通の計画手法地域公共交通の計画手法
地域公共交通の計画手法
 
ドローン用フライトコントローラ「Dronecode」の概要( #KOF2015 )
ドローン用フライトコントローラ「Dronecode」の概要( #KOF2015 )ドローン用フライトコントローラ「Dronecode」の概要( #KOF2015 )
ドローン用フライトコントローラ「Dronecode」の概要( #KOF2015 )
 
ARコンテンツ作成勉強会:UnityとVuforiaではじめるAR [主要部分]
ARコンテンツ作成勉強会:UnityとVuforiaではじめるAR [主要部分]ARコンテンツ作成勉強会:UnityとVuforiaではじめるAR [主要部分]
ARコンテンツ作成勉強会:UnityとVuforiaではじめるAR [主要部分]
 
コンポーネント単位で考えるWeb制作
コンポーネント単位で考えるWeb制作コンポーネント単位で考えるWeb制作
コンポーネント単位で考えるWeb制作
 
Android カスタムROMの作り方
Android カスタムROMの作り方Android カスタムROMの作り方
Android カスタムROMの作り方
 
Pythonによる高位設計フレームワークPyCoRAMでFPGAシステムを開発してみよう
Pythonによる高位設計フレームワークPyCoRAMでFPGAシステムを開発してみようPythonによる高位設計フレームワークPyCoRAMでFPGAシステムを開発してみよう
Pythonによる高位設計フレームワークPyCoRAMでFPGAシステムを開発してみよう
 
辺彩色
辺彩色辺彩色
辺彩色
 
XAML Islands
XAML IslandsXAML Islands
XAML Islands
 
ある企業様の転職プレゼン面接で内定した資料を公開&説明します
ある企業様の転職プレゼン面接で内定した資料を公開&説明しますある企業様の転職プレゼン面接で内定した資料を公開&説明します
ある企業様の転職プレゼン面接で内定した資料を公開&説明します
 
gRPC入門
gRPC入門gRPC入門
gRPC入門
 
設計品質とアーキテクチャ
設計品質とアーキテクチャ設計品質とアーキテクチャ
設計品質とアーキテクチャ
 
창의적 인재로 거듭나는 디자인씽킹 맛보기
창의적 인재로 거듭나는 디자인씽킹 맛보기창의적 인재로 거듭나는 디자인씽킹 맛보기
창의적 인재로 거듭나는 디자인씽킹 맛보기
 
Overview of the .Net Collection Framework and Immutable Collections
Overview of the .Net Collection Framework and Immutable CollectionsOverview of the .Net Collection Framework and Immutable Collections
Overview of the .Net Collection Framework and Immutable Collections
 
クリーンアーキテクチャの考え方にもとづく Laravel との付き合い方 #phpconokinawa
クリーンアーキテクチャの考え方にもとづく Laravel との付き合い方 #phpconokinawaクリーンアーキテクチャの考え方にもとづく Laravel との付き合い方 #phpconokinawa
クリーンアーキテクチャの考え方にもとづく Laravel との付き合い方 #phpconokinawa
 

Similar a Gulp.js 自動化前端任務流程

使用kslite支持第三方内容开发
使用kslite支持第三方内容开发使用kslite支持第三方内容开发
使用kslite支持第三方内容开发leneli
 
Sencha SDK Tools简介:IE6上也可以用CSS3?
Sencha SDK Tools简介:IE6上也可以用CSS3?Sencha SDK Tools简介:IE6上也可以用CSS3?
Sencha SDK Tools简介:IE6上也可以用CSS3?Frank Cheung
 
淺談 Groovy 與 Gradle
淺談 Groovy 與 Gradle淺談 Groovy 與 Gradle
淺談 Groovy 與 GradleJustin Lin
 
Kissy design
Kissy designKissy design
Kissy designyiming he
 
浅析浏览器解析和渲染
浅析浏览器解析和渲染浅析浏览器解析和渲染
浅析浏览器解析和渲染Ailsa126
 
【第一季第四期】JavaScript Optimization
【第一季第四期】JavaScript Optimization【第一季第四期】JavaScript Optimization
【第一季第四期】JavaScript Optimizationtbosstraining
 
如何在有限資源下實現十年的後端服務演進
如何在有限資源下實現十年的後端服務演進如何在有限資源下實現十年的後端服務演進
如何在有限資源下實現十年的後端服務演進Mu Chun Wang
 
使用NodeJS构建静态资源管理系统
使用NodeJS构建静态资源管理系统使用NodeJS构建静态资源管理系统
使用NodeJS构建静态资源管理系统Frank Xu
 
Using google appengine_1027
Using google appengine_1027Using google appengine_1027
Using google appengine_1027Wei Sun
 
Dive into kissy
Dive into kissyDive into kissy
Dive into kissyjay li
 
一拍一产品背后的故事(React实战)
一拍一产品背后的故事(React实战)一拍一产品背后的故事(React实战)
一拍一产品背后的故事(React实战)Kejun Zhang
 
Responsive Web UI Design
Responsive Web UI DesignResponsive Web UI Design
Responsive Web UI Designjay li
 
2012 java two-desktop-appliction-using-j-ruby-with-swt
2012 java two-desktop-appliction-using-j-ruby-with-swt2012 java two-desktop-appliction-using-j-ruby-with-swt
2012 java two-desktop-appliction-using-j-ruby-with-swttka
 
Node.js在淘宝的应用实践
Node.js在淘宝的应用实践Node.js在淘宝的应用实践
Node.js在淘宝的应用实践taobao.com
 
Using google appengine (2)
Using google appengine (2)Using google appengine (2)
Using google appengine (2)Wei Sun
 
Javascript autoload
Javascript autoloadJavascript autoload
Javascript autoloadjay li
 
Kissy模块化实践
Kissy模块化实践Kissy模块化实践
Kissy模块化实践yiming he
 
D2_node在淘宝的应用实践_pdf版
D2_node在淘宝的应用实践_pdf版D2_node在淘宝的应用实践_pdf版
D2_node在淘宝的应用实践_pdf版Jackson Tian
 
模糊也是一種美 - 從 BlurHash 探討前後端上傳圖片架構
模糊也是一種美 - 從 BlurHash 探討前後端上傳圖片架構模糊也是一種美 - 從 BlurHash 探討前後端上傳圖片架構
模糊也是一種美 - 從 BlurHash 探討前後端上傳圖片架構Mu Chun Wang
 

Similar a Gulp.js 自動化前端任務流程 (20)

使用kslite支持第三方内容开发
使用kslite支持第三方内容开发使用kslite支持第三方内容开发
使用kslite支持第三方内容开发
 
Sencha SDK Tools简介:IE6上也可以用CSS3?
Sencha SDK Tools简介:IE6上也可以用CSS3?Sencha SDK Tools简介:IE6上也可以用CSS3?
Sencha SDK Tools简介:IE6上也可以用CSS3?
 
淺談 Groovy 與 Gradle
淺談 Groovy 與 Gradle淺談 Groovy 與 Gradle
淺談 Groovy 與 Gradle
 
Kissy design
Kissy designKissy design
Kissy design
 
浅析浏览器解析和渲染
浅析浏览器解析和渲染浅析浏览器解析和渲染
浅析浏览器解析和渲染
 
【第一季第四期】JavaScript Optimization
【第一季第四期】JavaScript Optimization【第一季第四期】JavaScript Optimization
【第一季第四期】JavaScript Optimization
 
Mvc
MvcMvc
Mvc
 
如何在有限資源下實現十年的後端服務演進
如何在有限資源下實現十年的後端服務演進如何在有限資源下實現十年的後端服務演進
如何在有限資源下實現十年的後端服務演進
 
使用NodeJS构建静态资源管理系统
使用NodeJS构建静态资源管理系统使用NodeJS构建静态资源管理系统
使用NodeJS构建静态资源管理系统
 
Using google appengine_1027
Using google appengine_1027Using google appengine_1027
Using google appengine_1027
 
Dive into kissy
Dive into kissyDive into kissy
Dive into kissy
 
一拍一产品背后的故事(React实战)
一拍一产品背后的故事(React实战)一拍一产品背后的故事(React实战)
一拍一产品背后的故事(React实战)
 
Responsive Web UI Design
Responsive Web UI DesignResponsive Web UI Design
Responsive Web UI Design
 
2012 java two-desktop-appliction-using-j-ruby-with-swt
2012 java two-desktop-appliction-using-j-ruby-with-swt2012 java two-desktop-appliction-using-j-ruby-with-swt
2012 java two-desktop-appliction-using-j-ruby-with-swt
 
Node.js在淘宝的应用实践
Node.js在淘宝的应用实践Node.js在淘宝的应用实践
Node.js在淘宝的应用实践
 
Using google appengine (2)
Using google appengine (2)Using google appengine (2)
Using google appengine (2)
 
Javascript autoload
Javascript autoloadJavascript autoload
Javascript autoload
 
Kissy模块化实践
Kissy模块化实践Kissy模块化实践
Kissy模块化实践
 
D2_node在淘宝的应用实践_pdf版
D2_node在淘宝的应用实践_pdf版D2_node在淘宝的应用实践_pdf版
D2_node在淘宝的应用实践_pdf版
 
模糊也是一種美 - 從 BlurHash 探討前後端上傳圖片架構
模糊也是一種美 - 從 BlurHash 探討前後端上傳圖片架構模糊也是一種美 - 從 BlurHash 探討前後端上傳圖片架構
模糊也是一種美 - 從 BlurHash 探討前後端上傳圖片架構
 

Más de 洧杰 廖

一拳前端考題
一拳前端考題一拳前端考題
一拳前端考題洧杰 廖
 
Sass&rwd前端版型架構規劃
Sass&rwd前端版型架構規劃Sass&rwd前端版型架構規劃
Sass&rwd前端版型架構規劃洧杰 廖
 
自從學會Sass / Compass後,考試都考100分!
自從學會Sass / Compass後,考試都考100分!自從學會Sass / Compass後,考試都考100分!
自從學會Sass / Compass後,考試都考100分!洧杰 廖
 
Vertical rhythm
Vertical rhythmVertical rhythm
Vertical rhythm洧杰 廖
 
前端開發流程分享
前端開發流程分享前端開發流程分享
前端開發流程分享洧杰 廖
 
那些年,我們曾經做過的wireframe、mockup、prototype
那些年,我們曾經做過的wireframe、mockup、prototype那些年,我們曾經做過的wireframe、mockup、prototype
那些年,我們曾經做過的wireframe、mockup、prototype洧杰 廖
 
Sass-Front-End Developers Taiwan Party - 5
Sass-Front-End Developers Taiwan Party - 5Sass-Front-End Developers Taiwan Party - 5
Sass-Front-End Developers Taiwan Party - 5洧杰 廖
 
高雄前端社群 #6 絕對教會你jQuery動畫效果
高雄前端社群 #6 絕對教會你jQuery動畫效果高雄前端社群 #6 絕對教會你jQuery動畫效果
高雄前端社群 #6 絕對教會你jQuery動畫效果洧杰 廖
 
高雄前端社群 #4 psdtohtml workshop
高雄前端社群 #4 psdtohtml workshop高雄前端社群 #4 psdtohtml workshop
高雄前端社群 #4 psdtohtml workshop洧杰 廖
 
高雄前端社群 #3 SASS workshop
高雄前端社群 #3 SASS workshop高雄前端社群 #3 SASS workshop
高雄前端社群 #3 SASS workshop洧杰 廖
 
現代化網頁基礎排版技術
現代化網頁基礎排版技術現代化網頁基礎排版技術
現代化網頁基礎排版技術洧杰 廖
 
如何逐步提升CSS的可利用性、模組化
如何逐步提升CSS的可利用性、模組化如何逐步提升CSS的可利用性、模組化
如何逐步提升CSS的可利用性、模組化洧杰 廖
 

Más de 洧杰 廖 (12)

一拳前端考題
一拳前端考題一拳前端考題
一拳前端考題
 
Sass&rwd前端版型架構規劃
Sass&rwd前端版型架構規劃Sass&rwd前端版型架構規劃
Sass&rwd前端版型架構規劃
 
自從學會Sass / Compass後,考試都考100分!
自從學會Sass / Compass後,考試都考100分!自從學會Sass / Compass後,考試都考100分!
自從學會Sass / Compass後,考試都考100分!
 
Vertical rhythm
Vertical rhythmVertical rhythm
Vertical rhythm
 
前端開發流程分享
前端開發流程分享前端開發流程分享
前端開發流程分享
 
那些年,我們曾經做過的wireframe、mockup、prototype
那些年,我們曾經做過的wireframe、mockup、prototype那些年,我們曾經做過的wireframe、mockup、prototype
那些年,我們曾經做過的wireframe、mockup、prototype
 
Sass-Front-End Developers Taiwan Party - 5
Sass-Front-End Developers Taiwan Party - 5Sass-Front-End Developers Taiwan Party - 5
Sass-Front-End Developers Taiwan Party - 5
 
高雄前端社群 #6 絕對教會你jQuery動畫效果
高雄前端社群 #6 絕對教會你jQuery動畫效果高雄前端社群 #6 絕對教會你jQuery動畫效果
高雄前端社群 #6 絕對教會你jQuery動畫效果
 
高雄前端社群 #4 psdtohtml workshop
高雄前端社群 #4 psdtohtml workshop高雄前端社群 #4 psdtohtml workshop
高雄前端社群 #4 psdtohtml workshop
 
高雄前端社群 #3 SASS workshop
高雄前端社群 #3 SASS workshop高雄前端社群 #3 SASS workshop
高雄前端社群 #3 SASS workshop
 
現代化網頁基礎排版技術
現代化網頁基礎排版技術現代化網頁基礎排版技術
現代化網頁基礎排版技術
 
如何逐步提升CSS的可利用性、模組化
如何逐步提升CSS的可利用性、模組化如何逐步提升CSS的可利用性、模組化
如何逐步提升CSS的可利用性、模組化
 

Gulp.js 自動化前端任務流程