跳到主要內容

發表文章

webpack2 入門實戰 3 scss,html,file-loader

大家好,我是奶綠茶 上一篇 介紹了 webpack 的核心功能 loader 這篇再來補強各種常用的 loader css-loader:解悉 css 檔 extract-loader:這個有點難翻,下面會介紹 file-loader:存成實體的檔案, 如圖片 html-loader:解悉 html 檔 sass-loader:解悉 scss 檔 url-loader:解悉圖片路徑 webpack.config.js module.exports = { resolveLoader: { // 所有用到的 loader, -loader 可以不用打 moduleExtensions: [ "-loader" ], }, resolve: { // 在 require 檔案, 如果不想寫完整的路徑 // 可以加入這些目錄, 讓 webpack 自動尋找對的檔案 // 請注意我們加入了 src/img 路徑,後面會再介紹到 modules: [ path.resolve( 'src/html' ), path.resolve( 'src/img' ), path.resolve( 'src/css' ), path.resolve( 'src/js' ), path.resolve( "node_modules"), ], // 在 require 時可以不用打副檔名 extensions: [ ".js", ".scss" ] }, } 再來就是 loader 的介紹 scss 在這要做多組合的應用 先將 .scss 透過 scss-loader 轉換, 並產生 sourceMap 檔 再過 css-loader 最後再過 style-loader { test: /\.scss$/, // 多個 ...

webpack2 入門實戰 2 loader 篇

大家好我是奶綠茶 上一篇 介紹到基本的 webpack2 使用 這篇來介紹 webpack 的核心功能 loader 要告訴 webpack , 遇到什麼樣的檔案, 要用什麼樣的 loader 處理 我們就以 babel-loader 來做教學 1. 安裝 babel-loader babel-core:babel 的核心程式 babel-loader:webpack 用的 babel 轉換 loader babel-preset-es2015:babel 轉換成相下相容的語法 npm i -s -D babel-loader babel-core babel-preset-es2015 2. webpack.config.js 所有的 loader 規則都放在 module.rules 下 test:正則比對副檔名,只要是 .js 或 .jsx 都套用這個 loader loader:指定要套用的 loader options:要傳給 loader 的參數 注:loader寫法有二種,寫成一行, 用 ? 當參數傳 另一種就是寫 loader , 然後用 options 傳 個人比較愛後者 include:該 loader 只要找指定的資料夾,可加速 webpack 打包 exclude:同理,只是排除資料夾 var path = require( 'path' ); module.exports = { context: path.join( __dirname, '/src' ), entry: './js/app.js', output: { filename: 'bundle.js', path: path.resolve( __dirname, 'dist' ) }, module: { //https://webpack.js.org/configuration/module/ rules: [ { test: /\.(js|jsx)$/, // 寫法...

webpack2 入門實戰 1

大家好,我是奶綠茶 前端戰場不再只是寫寫 js / css , 各種框架、前處理工具百花齊放 身為前端工程師,不只要把程式寫完,還要寫好 老師說:選對好工具,事情就完成一半 如果你還在一隻 JS 打完全部程式,一隻 css 寫所有的 style 每次存檔還在手動 reload 網頁, 圖片壓 K 壓到不要不要的 透過奶綠伯的系列教學,讓你了解 webpack2 帶來的優勢 學會 webpack 可能不會加薪,但至少可以準時下班(誤) 1. 安裝 nodejs 請參考 gulp 安裝編 2. 安裝 global webpack , 筆者使用的是 2.2.1 版本 npm i webpack@2.2.1 -g 3. 在專案的根目錄放一隻 webpack.config.js entry:你的主 js 進入點 output.filename:webpack 打包後的檔名 output.path:webpack 打包後的路徑 var path = require('path'); module.exports = { entry: './src/app.js', output: { filename: 'bundle.js', path: path.resolve(__dirname, 'dist') } }; 4. require , module.exports 現在前端都 module 化 可以每個獨立的功能都寫成單一的 js module 除了好管理,也方便讓團隊使用 寫一隻 module_exports_util.js 每隻經過 webpack 打包的 js , 都會是獨立的檔案 所以變數都是私有的, 外部成員都無法得到 在這個 module 裡,我們想開放二個函式 add , getName 所以在最後的 module.exports 指定 筆記加入 jsdoc , 為了方便在開發時,能夠有型別的提示 var name = "milkmidi"; /** * @param {number} num1 * @param {number} num2 ...

前端攻城屍自動化教學 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 轉載請註明出處

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

前端攻城屍自動化教學 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 ,可以讓你方便...

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...