林罡北
2017.05.26
(Front-End Engineer)
Preprocessor
Transpiler
transpiler =transfer (轉換) + compiler(編譯)
.jade
.html
template engine
只要會按TAB TAB TAB TAB TAB
讓你快速產出html code,不會忘記加上end tag
我懶
Reference:
<header>
<p>我是Header</p>
</header>
<main id="content">
<h1>我是Page1</h1>
</main>
<footer>
<p>我是Footer</p>
</footer>
<header>
<p>我是Header</p>
</header>
<main id="content">
<h2>我是Page2</h2>
</main>
<footer>
<p>我是Footer</p>
</footer>
<header>
<p>我是Header</p>
</header>
<main id="content">
<h3>我是Page3</h3>
</main>
<footer>
<p>我是Footer</p>
</footer>page1.html
page2.html
page3.html
讓code可以reuse,舒服
Reference:
include "header.jade"
<main id="content">
<h1>我是Page1</h1>
</main>
include "footer.jade"
<header>
<p>我是Header</p>
</header>page1.jade
page2.jade
page3.jade
header.jade
<footer>
<p>我是Footer</p>
</footer>header.jade
include "header.jade"
<main id="content">
<h2>我是Page2</h2>
</main>
include "footer.jade"include "header.jade"
<main id="content">
<h3>我是Page3</h3>
</main>
include "footer.jade"Syntax Error
include "header.jade"
main#content
h1 我是Page1
include "footer.jade"
header
p 我是Headerpage1.jade
page2.jade
page3.jade
header.jade
footer
p 我是Footerheader.jade
include "header.jade"
main#content
h2 我是Page2
include "footer.jade"
include "header.jade"
main#content
h3 我是Page3
include "footer.jade"能不能再更好?
include "header.jade"
main#content
block main-content
include "footer.jade"
header
p 我是Headertemp.jade
page1.jade
page2.jade
header.jade
footer
p 我是Footerheader.jade
extends "temp.jade"
block main-content
h1 我是Page1
extends "temp.jade"
block main-content
h2 我是Page2Reference:
<div class="square">
1
</div><div class="square">
2
</div><div class="square">
3
</div>1
2
3
mixin square(number)
.square = number
- for (var i = 0; i < 3; i++)
+square(i+1)- var list = ["Uno", "Dos", "Tres"]
each item in list
+square(item)將CSS的開發軟工化,制定一套流程與規格,讓團隊依照規範,按照既定方式進行開發
OOCSS
Reference
Stylus Basic Sytanx
body
font 12px bold Helvetica, Arial, sans-serif
.button
text-align center
width 25px
border-radius 5pxbody
font: 12px bold Helvetica, Arial, sans-serif;
.button
text-align: center;
width: 25px;
border-radius: 5px;body{
font: 12px bold Helvetica, Arial, sans-serif;
}
.button{
text-align: center;
width: 25px;
border-radius: 5px;
}最後冒號跟分號也一起省略
現在是CSS的語法
首先省略大括號
.rectangle{
height: 20px;
width: 30px;
}3
2
.rectangle
$rectangle_with = 20px;
.rectangle
height: $rectangle_with
width: $rectangle_with*3/2
.rectangle
height: 20px
width: (@height*3/2)
in CSS
in Stylus
.fullwidth
width: 100%
.button
@extend .fullwidth
@extend .textCenter , .f20
height: 30px
background: red
code reuse!!
.f20
font-size: 20px
.textCenter
text-align: center
.paragraph
@extend .fullwidth, .f20
font-weight: bold
$fullwidth
width: 100%
$textCenter
text-align: center
$f20
font-size: 20px用OOCSS的想法
寫出屬於自己的Button class
this指向的是使用該物件的物件
this指向誰,在函數定義時不會被決定,真正會知道this指向誰時是在函數執行時(run time)
保留字new能夠改變this的指向
(大部分情況都可以這樣解釋)
function Doraemon(audioObject, playButton, accessoryImg, msgDiv) {
this.audioObject = audioObject;
this.playButton = playButton;
this.accessoryImg = accessoryImg;
this.msgDiv = msgDiv;
var dieValue;
this.start=function(){
this.playButton.addEventListener( "click", this.startGame, false );
this.audioObject.addEventListener( "ended", this.showDice, false );
this.accessoryImg.src = "blank.png";
}
this.startGame=function(){
audioObject.play();
}
this.showDice=function(){
dieValue = Math.floor( Math.random() * 10);
if ( isFinite( dieValue ) )
accessoryImg.src = pic_name[dieValue] + ".png";
else
accessoryImg.src = "blank.png";
msgDiv.innerHTML = "您抽到"+tool_name[dieValue]+"!";
}
}var doraemon = new Doraemon(audioObject, playButton, accessoryImg, msgDiv);
doraemon.start();<script src="http://code.jquery.com/jquery-3.2.1.min.js">
</script>
$(selector).action();基本語法
(selector) 表示想選取的DOM物件
$ 符號表示為jQuery語法
action() 表示對選取的DOM要執行的操作
Live Coding Now
class Doraemon {
constructor(audioObject, playButton, accessoryImg, msgDiv) {
this.audioObject = audioObject;
this.playButton = playButton;
this.accessoryImg = accessoryImg;
this.msgDiv = msgDiv;
}
start() {
this.playButton.addEventListener( "click", this.startGame, false );
this.audioObject.addEventListener( "ended", this.showDice, false );
this.accessoryImg.src = "blank.png";
}
startGame() {
audioObject.play();
}
// ..etc
}AmazingTalker F2E
Funhouse Inc. android Dev.
NTOUCS - 大四QQ