2017年2月5日 星期日

前端攻城屍自動化教學 2 ( gulp 安裝篇)

大家好,我是奶綠茶
上一篇介紹了現成的前端工具 prepros
但總是有些功能無法滿足
這篇就來介紹純手工的前端自動化工具 gulp
gulp 的官網一進去就會看到大大的
Automate and enhance your workflow
http://gulpjs.com/

1.
首先要安裝 npm (nodejs package manager)
安裝 nodejs 就會有 npm 的功能
https://nodejs.org/en/
測試一下是否正常
進入終端機模式(Terminal)
輸入
node -v
是否有出現版本號
再輸入
npm -v
是否有出現版本號


2. 安裝 gulp
以下教學參考官方的原文
https://github.com/gulpjs/gulp/blob/master/docs/getting-started.md
npm install --global gulp-cli
--global 指的是全域應用,也可以縮寫 -g

3. 開啟你的專案資料夾,並啟動 Terminal, 輸入
npm init
之後一直接 entry , entry , entry .....
就會產生一隻 package.json
裡面記錄了這個專案會用到的各種套件

4.安裝 gulp 到 devDependencies
npm install --save-dev gulp
--save-dev 可以縮寫成 -s -D
打開 package.json
可以看到 devDependencies 多了 gulp : xxx 版本號
測試一下是否運作正常
gulp
轉載請註明出處

2017年2月1日 星期三

Adobe Animate cc 廣告素材製作篇

大家好,我是奶綠茶
今天來介紹廣告素材的製作
使用的是 Adobe Animate CC
什麼,是新軟體!!!!!
大家不用怕,其實他的前身是 Adobe Flash
只是換個名字(去 Flash 化)
在使用的介面和功能都一模一模
如果本身就會使用 flash 的朋友一定不莫生
1. 開啟 Adobe Animate CC
選擇 HTML5 Canvas 格式


2.畫一個色塊,並轉成影片片段(MovieClip)元素


3. 拉影格拉至 25 ,選擇逼角移動補間動畫


4.這時可以看到影格間變成淺藍色


5. 幫元素取名為 box, 之後才可以用程式控制


6. 新增一個圖層,取名為 as (筆者的習慣)
加入程式碼,讓目前的時間軸停止動畫
this.stop();
一定要加寫 this 程式碼才會對


7. 點擊 box 元素後,播放時間軸動畫, 按下發佈,或是 Ctrol + Entry , 就可以看到動畫了。


8. 有時在交素材時,媒體端不充許外載其他的程式
因為 Adobe Animate CC HTML5 Canvas 技術是使用一套叫 createjs 的 framework
他有外部引用他的程式碼
所以我們要修改一下


9. 把 createjs 的程式碼載回本機


10. 跟你的 html, js 放在同一個資料夾下

11. 用記事本開啟 .html , 修改引用的路徑,完工

祝大家學習愉快
轉載請註明出處
SourceCodeDownload

2016年8月14日 星期日

前端攻城屍自動化教學 1 (入門軟體篇, 使用 prepros)

大家好,我是奶綠茶
寫程式的最高原則,就是要"懶"
"懶"指的是 "雜事交由電腦幫你完成"
你就可以專心在程式面上
比如說:
uglifyjs JS 自動幫你把 JS 壓成一行
自動幫你轉 sass/ scss
程式碼一存檔,html 就自動 reload
如果這些事還要手動處理就真的麻煩了

新手可以直接使用現成的軟體
https://prepros.io/
這是一套永久免費的軟體(如果覺的好用也支持一下作者)
免費版和正式版的功能都一樣,差在免費版三不五時會貼心的提醒你要不要付費

1. 下載軟體, 支援 PC(不支援 XP ) 和 Mac
2. 安裝, 一直下一步下一步下一步
3. 啟動軟體



4. 把你的專案資料夾拉進 prepros

5. 點選你的 js 檔
可以看到有五個選項
Auto Compile:當你存檔時是否要自動編譯,當然是要打勾呀。
SourceMaps:產生 sourcemap 檔,通常會搭配下方的 UglifyJS。
Uglify JS:幫你把 js 壓縮成一行。
Convert ES6 to ES5:將 ES6 的語法自動轉成 ES6。
Mangle Variables:將非全域變數的名字打亂。
筆者通常都是全勾。



6. 點選你的 css 檔
AutoCompile:是否存檔自動編譯
AutoPrefixCSS:自動加入 css3的 -web-kit 等前綴字。
SourceMaps:產生 sourceMap檔。
CompressCSS:將 css 壓縮成一行
Enable Cssnext:這個我還沒認真研究


7. 點選你的 html,接下右鍵
可以看到一個 Live Preview This File
按下後會啟動一個 localhost 的網頁,之後只要有修改 js, css ,都會自動 reload

8. 加掛 Proxy
live reload 預設只能跑 html, 如果想要執行 php 或是 asp.net 的話
可以在設定裡面開啟 Live Preview Custom Server

9. 其他
Prepros 也整合了 FTP ,可以讓你方便的直接上傳檔案

轉載請註明出處
SourceCodeDownload

2016年3月28日 星期一

JavaScript Namespae(命名空間)

大家好,我是奶綠茶
今天來討論 JavaScript Namesapce 命名空間
首先來了解一下 JS 的變數命名原理
var myVar = "milkmidi";
// 我是其他的程式碼
// 我是其他的程式碼
// ...
// 我是其他的程式碼
var myVar = 0;

可以發現 myVar 被宣告了二次
而後者變數會蓋掉前則
function 也是一樣的原理
function myFun(){
 
}
// 我是其他的程式碼
// 我是其他的程式碼
// ...
// 我是其他的程式碼
function myFun(){ 
 // 蓋掉之前同名的 myFun 函式
}

當然自己寫的程式不會發生同變數/函式
但如果跟其他人一起 Team Work 時,難保別人寫的名稱和你一樣
為了避免互蓋的問題
所以我們引用了 Namespace 的方法
但 JS 並沒有真正的 Namespace
而且是 Object 來模擬
// 用 Object 來當 Namespace
// 變數名稱就用自己的英文名來命名
var milkmidi = {};
milkmidi.myVar = "milkmidi";
milkmidi.myFun = function(){

}
// 我是其他的程式碼
// 我是其他的程式碼
// ...
// 我是其他的程式碼
var otherPartner = {};
otherPartner.myVar = "otherPartner";
otherPartner.myFun = function(){

}
// 要呼叫自己寫的函式就用 milkmidi.myFun();
// 同事寫的就用 otherPartner.myFun();

這樣就可以決解彼此互蓋問題。

決解自己蓋自己的命名空間
為了開發方便
會把自己常用的 JS 依功能來分類
JS 命名空間也只是用Object變數來模擬,一樣會發生蓋掉的問題
// script a.js
var milkmidi = {};
milkmidi.getTitle = function(){};

// script b.js
var milkmidi = {};
milkmidi.doFBLogin = function(){};

// script c.js
milkmidi.getTitle();
// 得到會 Error
// 因為 b.js 重新宣告了 var milkmidi = {};
// a.js 裡的變數被蓋掉

先了解一下 JS 的變數宣方法
變數如果是宣告在最外層,以下寫法是相同
var milkmidi = {}; // var 的變數會自動跟在 window 下
window.milkmidi = {}; // 直接把變數指定到 window 下
this.milkmidi = {}; // this 指的就是 window
所以在宣告變數前,要先檢查該變數是否存在

// 判斷命名空間是否存在
if ( !this.milkmidi ) {
 this.milkmidi = {};
}
// 縮寫,以下寫法相同
this.milkmidi = this.milkmidi || {};
var milkmidi = this.milkmidi || {};
var milkmidi = milkmidi || {};

進階技巧
寫程式要盡量封裝
用不到的變數不要給別人發現
先了解變數的生命週期是依 function 的宣告




var globalVar = "global";
function test(){
 var localVar = "local";
 // 在這可以取得 globalVar
}
// 但在這無法著得 test 裡的 localVar


// 匿名函式的建立與執行
(function(){ 
 // 這裡的程式碼會自動執行一次
})();



(function(){ 
 // 建立私有變數
 var localVar = "milkmidi";
 // 建立私有函式
 function getLocalVar(){
  return localVar;
 }
 // 這樣寫外部成員完全取不到
})();

// 結合 namespace 
var milkmidi = milkmidi || {};
(function( milkmidi ){
 var localVar = "milkmidi";
 // 建立私有函式
 function getLocalVar(){
  return localVar;
 }
 // 我想公開 getLocalVar 這個方法
 // 就可以寫
 milkmidi.getLocalVar = getLocalVar;
})( milkmidi );

// 外部成員就可以呼叫
milkmidi.getLocalVar();


祝大家學習愉快
轉載請註明出處

2016年3月7日 星期一

素材製作好工具 TexturePacker-4.x

大家好,我是奶綠茶
Flash 己經 byebye了
現在是 HTML5 時代
為了增加效能與載入速度
會把用到的素材圖片,壓成一大張
或是要製作成 SpriteSheet
現在 TexturePacker 4.x 推出來,來看看有什麼好用的新功能


把所有的圖片拉進來


奶綠我最常使用的是 CreateJS 和 PixiJS
選擇要輸出的格式,支援超多的啦


再按下 Publish
就會匯出你需要的格式,真的很方便
可以免費的下載使用
https://www.codeandweb.com/texturepacker
免費版會把你的一張圖更改掉,所以也只能用在教學或是測試
專案要用還是需要付費買一套的喔

TP:B65E3ECD
TP:B65E3ECD

2015年11月17日 星期二

HTML5 Application cache 離線版網頁

大家好,我是奶綠茶
HTML4 時代,網頁一定要連網才看的到
但有時在特定的場合,不一定有網路或是網路不穩定就什麼都看不到
現在 HTML5 提供了一個離線版的技術
原理就是用 HTML5 Application cache
事先把需要的檔案存在使用的裝置(PC, iOS, Android)
W3C的介紹:http://www.w3schools.com/html/html5_app_cache.asp
Application cache 有三個特性
1. 離線瀏覽(已經快取,直接從裝置載入)
2. 載入速度快(已經快取,直接從裝置載入)
3. 漸少伺服器的檔案請求(已經快取,直接從裝置載入)
(已經快取,直接從裝置載入),很重要,所以要說三次

以下為程式碼時間
1. 在你的 html tag 加上 manifest 的屬性,並直定一個 milkmidi.appcache 的文件檔
<html manifest="milkmidi.appcache">
</html>

網頁載入時,同時會一起載入 milkmidi.appcache 文件
該文件就是用來定義那些檔案要被快取

2. Manifest 文件
新增一個空白的記事本文件,副檔名存成 .appcache 即可
有三個特別的關鍵字要注意
CACHE MANIFEST
CACHE MANIFEST
app.css
milkmidi.png
app.js
告訴 Browser 要快取住 app.css , milkmidi.png , app.js這三個檔案
檔案路徑和 html 一樣,因為我的 demo 三個檔都跟 html 放在同一層路徑
如果你有開資料夾路徑的話,記得也要寫進去

不要快取的檔案
NETWORK
NETWORK
login.aspx

一般來說,快取都用在存放檔案(css,js,圖片等)
html 檔因為 K 數小,一般都很少快取
如果你的展示環境並沒有網路,一定要全都快取的話
就可以把你的 html 檔也寫進 .appcache 裡
或是用第三個關鍵字來處理
FALLBACK
FALLBACK
offline.html
有網路時,就會連你的 index.html
離線時,就載入 offline.html

3. 更新檔案
只要你的 appcache 有更動,Browser 就會自動重新載入 appcache 裡要快取的檔
這時可以用寫注解的方法
# 表示注解
CACHE MANIFEST
# 2015-11-7 v1.0.0
app.css
milkmidi.png.gif
app.js

NETWORK:
login.aspx

FALLBACK:
offline.html

線上Demo
轉載請註明出處
SourceCodeDownload