?Sass=scss編程
Sass 是css預處理器
css預處理器用編程思維寫一些可以轉成css的東西
優點:更加簡潔? 適應性更強? 可讀性更佳?? 更易于代碼的維護
1 .Sass與scss 區別
??????? 1 .文件擴展名不同(后綴名)
??????? 2 .語法不同
Sass語法:???????div????????? color:red
Scss語法:????div{????? color:red;???? }
2 .Cmd命令
1 .ping_??:檢測你的網絡通不通
2 .ipconfig_:查看本機IP
3 .cls_:清屏
4 .D:_ :切換盤符
5 .?Tab:自動補全文件名稱
6 .???/?????? 進入根源目錄
7 .??./?????? 同級
8 .??../???? 上一級
9 .??cd_?????? 進入文件夾
10 .?dir_?? 當前文件下的所有文件
11 .?path??? 環境變量
12 .?安裝的文件名_-v??? 查看版本號
13 .gem?install?? sass???? 安裝sass
3 .將scss裝換為css文件
命令行(1.2.3)
1 .sass_a.scss????? 出現的scss文件
2.sass_a.scss_a.css????? scss裝換為css文件
3 .sass_--watch_a.scss:a.css????? 監聽sass文件到css文件
4 .通過編輯器
???? 輸出方式?? (--style?nested)
1 . nested?? 嵌套輸出方式(開發)??格式:? red;}
2 .? compact??? 緊湊輸出方式??? (代碼在一行)
3 .? expanded???? 展開輸出方式??? (我們常用)
4 .? compressed????? 壓縮輸出方式???? (項目上線時候用)
5 .軟件編譯
6 .sass聲明變量??? ??(格式??? $a:20;)
1 .調用變量
?1 .直接調用(屬性值調用)
??? 格式:???$width:10;???? div{width:? $width;}
2 .插值使用(選擇器?? 屬性名調用)
???????????格式:? $width:width;?? .div{#{$width}:100px;}
$box:".box";??? #{$box}{width:100px;}
7 .變量
1 .普通變量(全局變量)格式? $color:red;? div{color:$color;}
2 .局部變量?? 格式? nav{$color:blue;? background: $color;}
3 .默認變量? !Default(用于sass引入scss文件)格式 $color:red !Default;
8 .嵌套方法(3種) & = 父級
1 .選擇器嵌套?? 格式nav{ a{color: $color;header &{color:$color;}}}?
2 .屬性嵌套?? 格式 font{ border:{top: 1px solid red;}}
3 .偽類嵌套? 格式.clearfix{&:before,&after{color:red;}&after{background: red;}}?
9 .混合宏? @mixin? a{} div{@include a}
1 .不帶參數???? 格式 @mixin a{color:red}
2 .帶默認參數???? 格式 @mixin a($wdith:5px){width:$wdith}
3 .帶參數????? 格式 @mixin border($x,$y){border:$x;width: $y;}
調用參數 .nav{@include
border(50px,100px)}
4 .復雜的混合宏
格式@mixin
box-shadow($shadow...) {box-shadow: 10px 5px red;}
調用參數 div{ @include
box-shadow}
10 .sass繼承? (繼承的是代碼塊)
1 .@extend 繼承的是標簽名,在css文件中div和p 同存在
格式 div{color:
red;}p{font-size: 12px; @extend div;
2 .sass占位符(%)(%后的代碼不在css文件中出現)
格式? %nav{width: 10px;}? div{@extend %nav;}
%nav 的代碼:不被@extend調用? 在css中div不出現
???????????:調用@extend????? 在css中%nav不出現
3 .優點:更加干凈簡潔
11 .混合宏?繼承?? 占位符的區別
混合宏:不會合并代碼可傳參??? 格式@mixin a{color: red;}div{@include a}
繼承:可以合并代碼,不能傳參?
占位符:不調用不產生css代碼 css中%后的代碼不顯示
12 .注釋
1 .//css不編譯
2 ./*?*/? css會編譯
3 .@charset “utf-8”文件編碼(文字)
13 .sass數據類型(6種)
1 .數字類型 number :有數字就為number
2 .字符串 string :有引號:“文字”,無引號:英文
3 .顏色 color:red?? #.....? rgba()
4 .布爾類型:true? false
5 .空:null
6 .值列表? :空格逗號分開
格式:(1)margin:10px 20px 30px 40px;? (2)font-family:“..”,“..”;
14 . sass運算 ?注意空格
1 .加( + ):單位統一???????? 格式 width:20px + 8或8px;
2 .減( - ):單位統一????????? 格式 width:20px - 8或8px;
3 .乘( * ):一個有單位一個無單位??????格式 width:20px * 8;
4 .除( / ):一個有單位一個無單位
????方式一:()括起來:width:(100px / 2)
????方式二:變量的情況:$x:10px;$y:5;? width:$x / $y
????方式三:有其他運算符:width:100px / 2 + 3;
5 .顏色運算:只允許16進制的顏色運算
格式:color:#1b2032 +
#307149;有一位大于16 就-16
6 .字符串運算:
方式一:左邊帶“”,右邊無引號,css 中帶“”;
方式二:左邊不帶“”,右邊有引號,css中無引號;
[if !supportLists]15.???[endif]sass控制命令
1 .@if 條件判斷{對}@else {否}@else if 條件判斷{ }
格式:$w:10px;???? div{ width:$w;@if $w>20px{color:red;}
@else {color:blue;}或 @else if 條件判斷{ }}
2 .@for循環語句
方式一:@for $i from 1to 2 {.div#{$i}{width:1px}}? From to? :包開始不包結束
方式二:@for $i from 1through 2 {}??????? From through? 包開始包結束
3 .@while 語句不滿足不執行滿足才執行
格式? @while條件{條件為true執行}
$i:5;@while $i>0 {div{width:$i *
2px}$i:$i - 1}
4 .@each 便利值列表
??? 格式 @each $i in top,bottom{div{border-#{$i}:1px; }
16.sass與less的區別
LESS是基于JavaScript運行,所以LESS是在客戶端處理.
Sass是基于Ruby的,是在服務器端處理的。
less沒有輸出設置,sass有4種輸出設置
sass有if for循環,less沒有
less定義變量用@
scss定義變量用$
Zepto? 現代高瀏覽器的js 庫 移動端事件? (on/off)
格式?? $(“div”).Tap(function(){
})
1 .Touch
1.Tap????輕觸屏幕
2.singleTap? 單擊
3.doubleTap? 雙擊
4.longTap??長按 >750ms 觸發
2 .滑過事件
?????1.swipe? 任意滑
?????2.swipeLeft?? 左滑
?????3.swipeRight? 右滑
?????4.swipeUp???? 上滑
??5.swipeDown?? 下滑
3 .解決bug??
document.addEventListener("touchstart",function(event){event.preventDefault();})
4 .原生js / jq 移動端的事件
要用事件綁定? 格式
?????div.addEventlistener(“touchstart”,function(){})
1 .ontouchstart??? 開始觸碰????? /? touchstart
2 .ontouchmove??? 屏幕上移動???? /? touchmove
3 .ontouchend???? 觸碰結束?????? /? touchend
5 .Zepto 與 jq 區別
1 .zepto針對移動端,不支持ie10以下
2 . jq Dom操作時,不能設置id,???? zepto可以
3 .jq的width()和height() 會忽略padding和border, zepto是根據盒模型計算
?? 格式:var width=$(“img”). width()
4 .zepto的? each()只能遍歷數組,不能遍歷對象
?Swiper
1 .鏈接結構
???????
2 .html結構
class="swiper-container">
class="swiper-wrapper">
class="swiper-pagination">分頁器
?? ?
?? ? 右箭頭
?? ? 滾動條
3 .js結構
???? var mySwiper = new Swiper('.swiper-container',{})?
4 .配置選項
?? 1.* loop: true,自動循環播放(true播放? false不播放)
?? 2.*autoplay:3000,? 自動播放切換時間默認0
?? 3.* autoplayDisableOnInteraction: true,不執行
用戶操作完swiper,是否禁止自動播放,false 執行
?? 4.autoplayStopOnLast:true,停止自動切換
?????????播放到最后一張圖停止? false不停止自動切換
?? 5. grabCursor:true,改變鼠標的形狀(小手)
?? 6.* direction:vertical垂直輪播默認horizontal 水平
?? 7. initialSlide:0,設定初始的Slide
?? 8.* speed:300, 滑動時間
?? 9.* prevButton:'.swiper-button-prev',左鍵
? 10.* nextButton:'.swiper-button-next',右鍵
? 11.* effect:‘flip’ 3d 翻轉‘coverflow’3d流‘cube’方塊‘fade’淡入
? 12. SlidesPerview:2,設置同時顯示slide的數量
? 13.* pagination : '.swiper-pagination',開啟分頁器?
? 14.* paginationClickable :true,手點小原點圖動
? 15.paginationElement:‘a’設置原點的標簽
? 16. paginationType:”fraction”,分頁(1/3)‘bullets’原點
‘progress’進度條‘custom’自定義
???? 17 .* scrollbar:‘swiper-scrollbar’開啟滾動條
? 18. scrollbarDraggable:true,?? 滾動條控制slide
5 .回調函數
1 .onTouchstart:function(){} 開始觸碰是執行函數
??????Touchmove觸碰屏幕移動 Touchend 觸碰結束
?? 2.* onSlideChangeStart:function(){}開始切換時執行函數
6 .Swipre方法(對象名.方法)
?? 1.* mySwiper.activeIndex 返回當前slide的下標
2 .mySwiper.clickedIndex 返回最后點擊的slide的下標
?? 3.* muSwiper.slideTo()跳轉到某一個指定的slide上
?? 4.*onlyExternal? 禁止拖動? 雙輪播時需要
IScroll
1 .html結構 ??
- 第一
2 .js 結構 ???????var myiscroll=newIScroll("#wrapper",{})
3 .配置參數
??1. bounce:false,false無彈力效果默認true有彈力效果
2.mouseWheel:true,開啟鼠標滾輪?false=默認關閉鼠標滾輪
3.scrollbars:true,開啟滾動條?false=默認關閉滾動條
4.interactiveScrollbars:true,拖動滾動條 false 無拖動
5.fadeScrollbars:true,滾動條淡入淡出?false無效果
6.scrollY:true,豎著滾動???
7.scrollX:true,橫著滾動
4 .問題堅決方案
當內容比父元素wrapper小的時候,就不能滾動了,可以動態給內容設置
min-height,讓內容的最小高度比父元素大1像素,參考:
if($("#wrapper>div").height()<$("#wrapper").height()){\????? $("#wrapper>div").css({'min-height':$('#wrapper').height()+1+'px'})}?
5 .方法(對象.方法)??
?? 1.Scroll.y??? 當前位置
?? 2.startY? 開始滾動的位置
?? 3.maxScrollY?? 最大滑動距離
4 .refresh()?? 重新加載頁面
?? 5.scrollTo(0,.maxscrollY)跳轉到某一個位置
node
1 .node.js? ????是運行在服務器的JavaScript.
2 .好處:?? nodejs基于googlede v8引擎.執行效率高.速度快性能好
3 .特點:
1 .Node.js 異步IO模型? 2 .回調函數? 3 .單線程??? 4.跨平臺
4 .運行方式
1 .cmd命令:? node_?到node中??? ctrl+c返回?? node.js_進入js文件
2 .在終端上直接寫代碼
3 .通過node打開外部文件
5 .commonJs規范:
1 .每個文件就是一個模塊,有自己的作用域。在一個文件里面定義的變量、函數、類,都是私有的,對其他文件不可見。
2 .每個模塊內部,module代表當前模塊,是一個對象,它exports屬性,是對外的接口。
7.模塊:
1 .概念:每一個文件就是一個模塊
2 .原生模塊(fs,http,path,url,queryString...)
3 .文件模塊??? (自己寫的都叫做文件塊,.js??? .json??.node )
4 .主模塊:????? 會包含其他模塊,最終運行他。
8 .模塊加載:
1 .require(模塊路徑)??
要注意:模塊路徑直接寫模塊名,代表的是原生模塊,
如果想引入文件模塊, 那么需要使用相對路徑或者絕對路徑的方式
2 .exports(導出對象)
3 .module(當前模塊)
格式
var a=5;
1. exports.num=a;?? //(把a當作num的屬性值? 暴露出去)
2. module.exports.num=a;? //(把a當作num的屬性值? 暴露出去)
3. module.exports=a;?? //(輸出的是具體的值)
4. exports=a;???? //(輸出的是空對象)
exports????只能導出對象?? module.exports?? 可以導出對象,以及具體的值
9 .原理:
exports -> {} <- module.exports(輸出時,優先加載)
10 .模塊初始化:? 一個模塊被加載,并執行后,會初始化一次,隨后模塊里的內容都會被緩存起來,下次直接用就可以了???
11 .常用的原生模塊:
???? fs、http、url、path、queryString
12 .模塊加載:
1 .加載原生模塊 :(直接寫模塊名)???? var fs=require("fs");
2 .加載文件模塊:?? 相對路徑(同級目錄要加./)、絕對路徑
13 .引入一個包名:
???? 包的概念:一個文件夾就是一個包
???? 1、包必須要有:?index.js? .json? .node?(入口文件)
???? 2、package.json(包管理文件){“main”:“./文件”}
???? 如果直接加載包名,會去尋找index這個文件,如果沒有index,建立一個package.json文件,并且設置一個main屬性(入口文件)????
14 .node_modules目錄
???? 查找模塊的機制:從當前目錄開始查找node_modules,如果沒有,返回父級繼續查找,一直找到根目錄,如果還沒有,報錯
15 .NPM?? 包的管理工具
npm??包管理工具?? https://www.npmjs.com/
16 .安裝包:
1 .全局安裝? npm install包名 -g
?????????? (不管在哪運行,默認都會安裝到c盤的AppData文件夾下)
2 .本地安裝? npm install包名??? (安裝到當前目錄下)
3 .卸載包:npm uninstall 包名
4 .查看包:?? npm list?
5 .查看某個包的版本號:?? npm list包名
6 .更新: npm updata包名
7 .安裝中國的npm 方式
npm install -g cnpm
npm install -g cnpm
-registry=https://registry.npm.taobao.org
17 .node.js 文件系統
1 .讀取文件內容
格式:varfs=require("fs");??fs.readFile("./a.txt",function(err,data){
?????????? if(err){console.log(err);}???? console.log(data.toString());?? });
2 .打開某個文件
var fs=require("fs");?fs.open("../3.fs","r+",function(err){//打開某個文件夾,
???? ? if(err){//判斷報錯console.log(err);}??? //讀取文件
???? ?fs.readFile("./a.txt",function(err,data){???? if(err){console.log(err);}
console.log(data.toString()); //輸出文件內容轉化成字符串??? });});
3 .寫入文件? 注:寫入的內容會替換掉以前的內容
var fs=require("fs");var
str="吃了嗎";
fs.writeFile("./a.txt",str,function(err){
???? ?? if(err){console.log(err);?? }?????console.log("寫入成功");???? });
可以寫成String /Buffer(流)
4 .刪除文件
?varfs=require("fs");???fs.unlink("./a.txtj",function(err){
???? ?? if(err){console.log(err);}??? console.log('刪除完成');??? })
18 .http
1 .http模塊:搭建 HTTP 服務端???var http =require(“http”)
2 .參數
1 . request? :客戶端請求 2 .response :服務端返回3 .端口號:1024-65535
3 .訪問服務器:
1、本地服務器ip:? http://127.0.0.1:8080
2、???????? http://localhost:8080
3、通過本機ip? 192.168.1.75:8080
4 . 創建服務器
http .createServer(function(req,res){ }).listen(端口號,function(){ });
寫法:http.createServer(function(req,res){
???? ??????? res.writeHead()//響應頭
???? ??????? res.write()?? //返回數據,可以寫多個
???? ???????? res.end()? //服務器返回數據并斷開連接,? 必須有且只有一次
}).listen(端口號,function(){???? });
??????????????? 端口號:網絡(1-1024)??? 本地(1024-65535)
???????????? 5 .方法
?????1 .? res.writeHead(狀態字,文件解釋格式)?????//響應頭
????????????????????? res.writeHead(200,{“content-Type”:”text/html ;? charset=utf-8”}
(1).狀態碼:單設置? StartusCode=200;
200 服務器成功返回數據??? 404:文件沒有找到
500:服務器錯誤? 503:服務器超時
2 .文件解釋格式? setHeader?? 只設置響應主體
單設置? SetHeader=content-Type:text/html? charset=utf-8
Text.html? 解釋標簽?? Text/plain? 純文本
?????3 .? res.write ( “設置響應的數據” )??//返回數據,可以寫多個
?????4 . res.end()? //服務器返回數據并斷開連接,?必須有且只有一次
5 .req.ur???? 拿到客戶端輸入的地址??? 要注意??????????/代表根目錄
6 .req.method? 拿到客戶端的請求方式? 默認都是get
6 .問題
修改服務器代碼必須要重啟服務器,重啟的時候要終止服務。?
端口占用:? 1、改端口?? 2、終止服務(小紅點)
7 .
http://www.baidu.com:80/main/index.html?user=zf&pass=123#info_cc
http: 協議名???????????????????????www.baidu.com:服務器地址
/main/index.html :文件路徑??????user=zf&pass=123:查詢字符串
#info_cc:片段標識符
19 .url模塊
1 .方法
(1).url.parse(url字符串,true);
第二個參數為true,可以把query部分轉化成對象
url對象里面會有個pathname屬性,這個屬性裝的就是文件路徑
[if !supportLists](2) [endif].url.format(對象)
可以把url對象轉成url字符串????
2 .路由:
[if !supportLists](1)[endif].通過用戶在地址欄輸入的url,?獲取其中的文件路徑,在服務器中做? 匹配,? 如果? 用戶輸入的文件路徑與服務器中的文件路徑相同,就返回對應頁面(通過fs模塊加載頁面并返回),如果不存在就返回404
????Var?? url?? =require(“url”)
(2).默認? /首頁
search.html?? 搜索頁面??????news.html?? 新聞頁面
(3).查找路徑的方法
??????? __dirname? 絕對路徑??? __filename? 當前文件的路徑
20 .querystring? 查詢字符串
1 .作用:對http請求所帶的數據進行解析
Var querystring =require (“querystring”)
2 .方法
(1).parse(4個參數)字符串轉化為對象
??????? Str:反序列化的字符串?????Separator:設置分隔符默認&
??????? Eq :賦值符? 默認=?????Options :maxKeys :number類型最大長度字符串
(2). stringify ()?? 對象轉化字符串
??????? Obj:序列化的對象???separator:字符連接符? 默認&
??????? Eq :連接值與字符??options:字符串換成百分比形式
(3). get 方式
?向服務器發送請求時? 拿數據是似地哪里拿不安全一般用 true
[if !supportLists](4)[endif]. post 在后臺傳數據接數據
1 .傳遞? :拼接字符串
2 . 方法
[if !supportLists](1)[endif].req.on(“data”,function(data){ })
? 不停觸發data 事件,拿到客戶端傳輸過來的數據通過拼接字符串把數據組合到一起?
格式:var str=“”;req.on(“data”,function(chunk){str+=chunk})
?????????? 3 .req .on(“end”,function(){console.log(str)})傳遞結束
AJAX
1 .什么是ajax:
?? AJAX全稱為“Asynchronous JavaScript and XML”
?? AJAX =異步 JavaScript 和 XML。
?? 使用XMLHttpRequest對象與Web服務器進行異步數據通信;
?? 使用JavaScript綁定和處理所有數據。
?? AJAX是一種用于創建快速動態網頁的技術。通過在后臺與服務器進行少量數據交換,AJAX 可以使網頁實現異步更新。這意味著可以在不重新加載整個網頁的情況下,對網頁的某部分進行更新.
2 .ajax的原理:
?? Ajax的工作原理相當于在用戶和服務器之間加了—個中間層(AJAX引擎),使用戶操作與服務器響應異步化,
?? Ajax的原理簡單來說通過XMLHttpRequest對象來向服務器發送異步請求,從服務器獲得數據,然后用javascript來操作DOM而更新頁面。
3 .ajax的核心:
?? Ajax其核心有JavaScript、XMLHTTPRequest、DOM對象組成
4 .ajax的優缺點:
?? 優點:? 1 .無刷新更新數據。???2 .異步與服務器通信。
??????? 3 .前端和后端負載平衡?4 .界面與應用的分離
?? 缺點:? 1 .無法后退??? 2.AJAX的安全問題??? 3 .AJAX不能很好支持移動設備。
5 .對象:
new XMLHttpRequest//? 是對于現代瀏覽使用的
new ActiveXObject("Microsoft.XMLHTTP")? 是對IE5\6這兩個版本使用的
6 .處理兼容可以采用:? 創建對象
??????? var xhr;
??????? if(window.XMLHttpRequest){
????????????? xhr=newXMLHttpRequest();
??????? }elseif(window.ActiveXObject){
????????????? xhr=newActiveXObject("Microsoft.XMLHTTP");
??????? }else{? alert("你的瀏覽器太垃圾,趕緊換");???? }
7 .方法: 建立連接
?? xhr.open(method,url,async)? 與服務器進行連接??
??????? method:請求方式???? get?? post
??????? url:請求服務器上文件的路徑,
??????? async: true(異步) false(同步)
8 .send()? 發送請求
如果是get方式,? 參數放一個null
如果是post方式,參數要放?? 請求的時候攜帶的數據
9 .屬性:
1 .responseText 服務器返回的數據(字符串形式)
??????? responseXML????????? 服務器返回的數據(XML格式)
2 .onreadystatechange?? 當XMLHttpRequest的狀態被改變時,會觸發這個事件
3 .readystate??? 這個參數表示的就是XMLHttpRequest的狀態0?? 1?? 2??3?? 4
4 .status???? 服務器的狀態????????例如200?? 404?? 。
10 .寫ajax的步驟:
1 .必須new 一個XMLHttpRequest?? 這么個對象
2 .與服務器進行連接?? open()
3 .發送請求????? send()
4 .監聽狀態有無改變??? ?onreadystatechange
5 .判斷狀態碼???
11 .post 與 get 的區別
?? POST是發送數據,GET是接受數據;
?? POST發送數據的安全性較好,而GET較差;
?? POST發送數據不限制大小,而GET大小受限2~100k
12 .請求方式
如果ajax是get方式:
?? 服務器直接通過地址欄就可以獲取到對應的參數
如果是post方式請求
?? ajax這邊需要3個步驟,
?GET->POST?? setRequestHeader()??? send(攜帶請求的參數)
服務器怎么接收參數:通過req.on("data")??? 和??req.on("end")? 兩個事件來接受
13 .ajax的post請求:
xhr.open('POST', url, true);//第一步:GET換成POST
xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
//第二步:修改請求頭,模仿form提交
xhr.send('user=guoyu&age=28');//第三步:要提交的數據放到send方法中
[if !supportLists]14. [endif]josn
1、什么是json?
?? JSON指的是 JavaScript 對象表示法(JavaScript Object Notation)
?? JSON是輕量級的文本數據交換格式
?? JSON獨立于語言
?? JSON具有自我描述性,更易理解
2、JSON 語法規則
?? 遵守鍵值對
?? 每條數據逗號分隔,
?? json中只存在{} 和? []
3、文件后綴名??? .json
4、???????? JSON.parse()???? ??? 字符串轉對象
??????? JSON.stringify()??? 對象轉字符串
5、JSON與XML的區別
?? JSON更小更快更易簡析????????? XML大小不易簡析
[if !supportLists]15、[endif]JQ? ajax
1.
[if !supportLists](1)[endif]? 、*url?? 請求文件的地址
[if !supportLists](2)[endif]、async? 是否同異步?true異步
[if !supportLists](3)[endif]、beforesend?請求發送前執行的回調函數
[if !supportLists](4)[endif]、complete??請求之后執行的回調函數
[if !supportLists](5)[endif]、data? 發送到服務器的數據
[if !supportLists](6)[endif]、dataType?服務器返回的數據類型? HTML
[if !supportLists](7)[endif]、error :function(){ }請求失敗
[if !supportLists](8)[endif]、success:function(){ } 請求成功
[if !supportLists](9)[endif]、type? 請求方式
2.$.get的參數
[if !supportLists](1)[endif]、url?? 地址?
[if !supportLists](2)[endif]、data? 攜帶的數據?
[if !supportLists](3)[endif]、fn
[if !supportLists](4)[endif]、type?? 數據返回的格式
[if !supportLists]3. [endif]$.post(? )??
4. $.getJSON(?? )
5. $ .each( 數組,function(){} )?
16、跨域??
? 1.是指瀏覽器不能執行其他網站的腳本,它是由瀏覽器對javaScript施加的安全限制
? 2.同源策略 : 協議名? 域名? 端口相同
? 3.解決跨域
?????(1)、Access - Control - Allow - Origin : “*”=
?????(2)、JSONP
var?gulp=require("gulp");
gulp.task(任務名,[依賴任務],function)
gulp.src(路徑)? //匹配/找到某個文件
gulp.dest(路徑)? //在何處生成文件
gulp.watch(要監聽的文件路徑,[當文件發生變化時要執行的任務]);
.pipe(連接的文件)?連接作用