SlideShare uma empresa Scribd logo
1 de 45
Baixar para ler offline
以CodeIgniter為基礎的網頁前 
端程式設計 
By 
Fillano
自我介紹 
• 渾名:Fillano、費大公 
• 本名:馮旭平 
• 工作:後端…有時兼前端 
• 常用語言:Javascript, 
PHP, 
Java, 
C#, 
HTML, 
CSS 
• 出沒地點:iT邦幫忙、?、G+、plurk、 
twiEer…(帳號皆為fillano)
講題 
• 前端工程師的工作 
• 與CodeIgniter合作的前端工作 
• 前端工程師的難處 
• 讓前端工作更快樂
前端工程師的工作
前端工程的歷史 
• 最早,Web只有前端(WWW: 
1990, 
HTML: 
1993) 
• 經由HTTP傳送內容(0.9: 
1991, 
1.0: 
1996, 
1.1: 
1997) 
• 對於動態資料的需求,產生了後端工程 
• 對於網頁呈現的需求,產生了前端工程 
– Javascript, 
1995 
– CSS, 
1996 
– DOM, 
1998
前端工程師的工作 
• AJAX的應用大約在2005開始發展,網頁的 
工作越來越複雜,前端工程師這個職務應 
運而生 
• 主要工作內容範疇(from 
wiki) 
– Assessbility:讓網頁可以在更多裝置上正常瀏 
覽 
– Usability:讓操作介面更好用 
– Performance:讓應用程式效能更好
Accessibility 
• 需要處理瀏覽器相容性的問題 
– Reset 
– Normalize 
– Hacks… 
• 需要處理裝置解析度的問題 
– RWD… 
• 需要能管理日趨複雜的CSS 
– 架構方法:OOCSS, 
SMACSS, 
BEM… 
– 中介語言:LESS, 
SASS, 
COMPASS…
Usability 
• UI/UX…各種人機介面設計、用戶體驗方法 
與考量 
– 視覺效果 
– 資訊呈現 
– 互動方式
Performance 
• 包含從資料由伺服器丟出來之後所有的效 
能問題 
– 傳送時間 
– 瀏覽器呈現資料的速度 
– 網頁中的程式執行
為了解決這些問題… 
• 我們會使用許多Javascript 
Library 
• 我們會使用Javascript 
Framework 
• 我們會使用Bootstrap 
• 我們會使用最佳化工具 
• 我們會使用各種中介語言 
– Compile 
to 
Javascript 
– Compile 
to 
CSS
與CODEIGNITER合作的前端工作
只要知道靜態檔放哪裡就好了 
• CodeIgniter安裝好後,會有幾個目錄跟檔案 
– .htaccess 
– index.php 
– system 
– applicadon 
• 為了管理方便,可以把靜態檔案全部放在 
一個目錄,例如assets
設定 
• 假設規劃靜態檔案都放在assets目錄 
• 可以透過在applicadon/config/config.php中, 
設定基底url:$config[‘base_url’] 
= 
‘/ 
codeigniter/’; 
• 然後在applicadon/config/autoload.php中, 
設定$autoload[‘helper’] 
= 
array(‘url’…); 
• 在view中,呼叫<?=base_url()?>/assets/path/ 
stadc_file,就可以取得正確的url
接下來 
• 除非… 
– 有什麼理由需要用到html 
/ 
form 等helper,或 
是Javascript 
Driver 
– 需要透過AJAX跟後端API收發資料 
• 前端的工作跟CodeIgniter基本上就沒關係了 
XD
前端工程師的難處
客戶會直接看到 
• 我的經驗 
– 客戶常常在Wireframe階段都沒感覺,看到畫面 
才開始發揮想像力 
– 對細節吹毛求疵 
– 需求書通常規範了流程、資料、模組等東西, 
對於呈現的部份反而比較模糊
常常在工作流程的最後面 
• 需求=>設計=>伺服器端程式=>套版=>驗收 
• 前面任一階段的延遲,壓力都會在後面爆 
發
技術瑣碎複雜 
• HTML 
x 
Javascript 
x 
CSS 
x 瀏覽器版本 
• 為了解決一些問題,需要使用更多的工具… 
讓需要的技能更複雜了 
• 技術的知識,對前端工程師來說是宿命 
• 透過工具,還是可以讓工作更順利
讓前端工作更快樂
還是利用工具 
• Bower:套件管理 
• Grunt:自動化 
• Yeoman:專案架構生成 
• Gulp:另一個自動化工具 
• 這些工具,都是使用Javascript(node.js)開 
發的,對於前端工程師來說,比較沒有進 
入障礙
套件管理 
• 專案常常會使用許多不同的Library及 
Framework 
,他們各自有版本及相依性,會 
造成維護上的困難 
• 安裝時,還需要自己到不同的專案網站下 
載,會很麻煩 
• 利用套件管理工具,只要用一個工具就可 
以完成這些工作
套件管理正夯 
• Java很早就有Maven可以做自動化及套件管 
理 
• PHP有Composer 
• Ruby有Gem 
• Node.js有NPM 
• 前端的話,有bower
使用bower的好處 
• 透過bower,就可以根據專案的需求,安裝需 
要的套件 
• 例如一個專案會使用到: 
– Bootstrap:需要jquery版本>1.9 
– Angular 
– Jquery-­‐easyui:需要jquery版本>1.9,但是不支援2.x 
• 使用bower安裝時,他會根據版本的需求,自 
動安裝依賴的jquery,並且調整成最合適的版 
本
Bower怎麼用 
• 先安裝node.js 
• 透過`npm 
install 
–g 
bower`來安裝bower 
• 套件的預設安裝目錄是bower_components, 
可以透過新增設定檔~/.bowerrc來修改預設 
值 
• 使用 
bower 
install 
[套件名稱]或是[url]來安 
裝套件 
• 使用bower 
init可以在專案目錄中加入 
bower.json,專案使用的套件會紀錄在這裡
實際操練 
• 安裝node.js 
• 安裝bower 
• 建立~/.bowerrc 
• 安裝套件並觀察安裝版本變化 
• 使用bower 
init建立bower.json,紀錄專案使 
用套件
Bower的相關資訊 
• 網站: hEp://bower.io/ 
• 怎麼指定版本: 
hEp://semver.org/ 
• (npm以及bower都使用一樣的版本號標準)
自動化 
• 專案進行時,會使用各種工具進行各種工作, 
例如 
– 用CoffeeScript寫Javascript 
– 把SASS編譯成CSS 
– 進行單元測試 
– Javascript壓縮 
– CSS壓縮 
– 圖檔最佳化 
– 版本管理 
• 使用不同的工具,還需要各自下命令,很麻煩
自動化工具的好處 
• 不用每次都自己下命令 
• 可以把不同工作,依照「相依性」組合起 
來,批次作業
常見的專案自動化工具 
• Java 
– Ant 
– Maven 
• PHP 
– Phing 
• Ruby 
– Rake 
• 在Node.js 
/ 前端最常用的則是:Grunt及 
Gulp
安裝Grunt 
• 同樣要先安裝Node.js 
• 用npm安裝: `npm 
install 
–g 
grunt` 
• 使用npm 
init或是手動建立package.json(至 
少要有name, 
version, 
devDependencies) 
• 依照需求安裝不同的任務(task) 
– 例如要拷貝檔案,可以使用copy任務,他的 
npm套件名稱是grunt-­‐contrib-­‐copy 
– 安裝指令就是 `npm 
install 
grunt-­‐contrib-­‐copy 
-­‐-­‐save-­‐dev`
使用grunt 
• 在專案根目錄新增Grunxile.js檔案 
• 檔案內容是Javascript程式,但是不難理解 
• 根據自己的需求,搜尋合適的任務 
• 使用 
`npm 
install 
[任務] 
-­‐-­‐save-­‐dev` 
命令來安 
裝任務 
• 撰寫Grunxile.js的內容 
• 使用 `grunt 
[任務名稱]` 
來執行任務
Grunxile.js的結構 
• 最外層程式: 
– module.exports 
= 
funcdon(grunt) 
{ 
… 
} 
• 任務設定: 
– grunt.initConfig() 
• 載入任務的npm模組 
– grunt.loadNpmTasks(“模組名稱”) 
• 註冊任務 
– grunt.registerTask(“任務名”, 
[“其他任務”, 
“其他 
任務”])
Grunt的概念 
• 任務皆以「設定」的方式,建立他執行的 
規則 
• 使用grunt.loadNpmTasks()載入的任務,使 
用他的任務名稱就可以直接執行 
• 可以用grunt.registerTask()自定任務,把經 
由任務模組載入的任務以及自定的任務組 
合起來執行
檔案指定的規則 
• 大部分的任務設定,都是在處理檔案,所 
以一定要知道在Grunxile.js中怎麼指定檔案 
• 除了使用檔案及目錄名稱,萬用字元*有特 
定的意義: 
– 「*」代表目錄下的所有檔案(代表任意數目的 
字元,但是不包含「/」) 
– 「**」代表目錄下的所有目錄及檔案(代表任 
意數目的字元,且包含「/」) 
– hEp://gruntjs.com/configuring-­‐tasks#globbing-­‐ 
paEerns
實際操作 
• 安裝Grunt 
• 撰寫package.json 
• 安裝grunt-­‐contrib-­‐clean, 
grunt-­‐contrib-­‐copy, 
grunt-­‐contrib-­‐uglify三個任務 
• 撰寫Grunxile.js 
• 定義build以及preview這兩個任務 
• 執行
還有很多好康的任務 
• grunt-­‐contrib-­‐cssmin:壓縮CSS檔 
• grunt-­‐contrib-­‐coffee:編譯Coffee 
Script檔 
• grunt-­‐contrib-­‐compass:編譯SASS檔案 
• grunt-­‐contrib-­‐watch:監控檔案,有變動時 
執行特定任務(ex. 編譯Coffee 
Script) 
• grunt-­‐contrib-­‐imagemin:適當地壓縮,最佳 
化圖檔 
• grunt-­‐s3:把檔案放到AWS 
S3上
Grunt的相關資訊 
• 網站: hEp://gruntjs.com/ 
• 查詢任務模組: hEp://gruntjs.com/plugins 
• 目前有3390個任務模組
專案架構產生器-­‐yeoman 
• 使用yeoman,可以依照自己對於專案及相 
依性的需求,快速建立架構好的專案目錄 
及檔案 
• 額外的相依性,也可以透過bower在架構產 
生後加上去
使用情境 
• 要使用的軟體、額外的相依套件夠明確, 
不必自己花時間拆東西、加東西 
• 願意使用別人架構好的專案架構與環境
以codeigniter為例 
• 先透過npm來安裝yeoman: 
`npm 
install 
-­‐g 
yo` 
• 然後安裝generator-­‐codeigniter: 
`npm 
install 
-­‐g 
generator-­‐codeigniter 
` 
• 建立專案目錄,在目錄中執行 `yo 
codeigniter` 
• 使用npm、bower、composer來安裝相依的 
套件 
• 執行grunt 
build來建構專案
Yoeman的相關資訊 
• 網站: hEp://yeoman.io/ 
• 尋找合適的產生器: 
hEp://yeoman.io/generators/
最後來看一下Gulp 
• 他跟grunt一樣,都是專案自動化工具 
• 不同點在於: 
– Grunt使用「設定」的方式來建立任務 
– Gulp則使用「寫程式」的方式來建立任務:使 
用pipe把任務串接起來 
• Grunt支援的任務比較多 
• Gulp執行效率會比較好
試用一下gulp 
• 只使用gulp-­‐uglify來把stadcs/js/ 
list_member.js壓成build/assets/js/ 
list_member.min.js 
• 程式碼 
• 執行結果
Gulp的相關資訊 
• 網頁: hEp://gulpjs.com/ 
• 查詢任務模組: hEp://gulpjs.com/plugins/ 
• 目前有673個任務模組…
總之 
• 能偷懶就盡量偷懶,可以交給機器做的事 
情,就不要自己做

Mais conteúdo relacionado

Mais procurados

twMVC#42 Windows容器導入由0到1
twMVC#42 Windows容器導入由0到1twMVC#42 Windows容器導入由0到1
twMVC#42 Windows容器導入由0到1twMVC
 
ASP.NET MVC 6 新功能探索
ASP.NET MVC 6 新功能探索ASP.NET MVC 6 新功能探索
ASP.NET MVC 6 新功能探索Will Huang
 
twMVC#36讓 Exceptionless 存管你的 Log
twMVC#36讓 Exceptionless 存管你的 LogtwMVC#36讓 Exceptionless 存管你的 Log
twMVC#36讓 Exceptionless 存管你的 LogtwMVC
 
ASP.NET 5 的創新與變革
ASP.NET 5 的創新與變革ASP.NET 5 的創新與變革
ASP.NET 5 的創新與變革Will Huang
 
Angular js twmvc#17
Angular js twmvc#17Angular js twmvc#17
Angular js twmvc#17twMVC
 
使用 Visual Studio Code 建構 JavaScript 應用程式
使用 Visual Studio Code 建構 JavaScript 應用程式使用 Visual Studio Code 建構 JavaScript 應用程式
使用 Visual Studio Code 建構 JavaScript 應用程式Will Huang
 
Reactive application with akka.NET & .NET Core
Reactive application with akka.NET & .NET CoreReactive application with akka.NET & .NET Core
Reactive application with akka.NET & .NET CoreChen-Tien Tsai
 
[Study4TW Visual Studio Everywhere] asp.net core 實務開發經驗分享
[Study4TW Visual Studio Everywhere] asp.net core 實務開發經驗分享[Study4TW Visual Studio Everywhere] asp.net core 實務開發經驗分享
[Study4TW Visual Studio Everywhere] asp.net core 實務開發經驗分享Duran Hsieh
 
快快樂樂學會 Angular 2 網站開發框架 (Modern Web 2016)
快快樂樂學會 Angular 2 網站開發框架 (Modern Web 2016)快快樂樂學會 Angular 2 網站開發框架 (Modern Web 2016)
快快樂樂學會 Angular 2 網站開發框架 (Modern Web 2016)Will Huang
 
React.js what do you really mean?
React.js what do you really mean?React.js what do you really mean?
React.js what do you really mean?昱安 周
 
twMVC#33聊聊如何自建 Facebook {廣告} 服務 with API
twMVC#33聊聊如何自建 Facebook {廣告} 服務 with API twMVC#33聊聊如何自建 Facebook {廣告} 服務 with API
twMVC#33聊聊如何自建 Facebook {廣告} 服務 with API twMVC
 
Angular.js & ASP.NET in Study4
Angular.js & ASP.NET in Study4Angular.js & ASP.NET in Study4
Angular.js & ASP.NET in Study4Kyle Shen
 
保哥線上講堂:利用 StyleCop 撰寫一致的 C# 程式碼風格
保哥線上講堂:利用 StyleCop 撰寫一致的 C# 程式碼風格保哥線上講堂:利用 StyleCop 撰寫一致的 C# 程式碼風格
保哥線上講堂:利用 StyleCop 撰寫一致的 C# 程式碼風格Will Huang
 
Node.js從無到有 基本課程
Node.js從無到有 基本課程Node.js從無到有 基本課程
Node.js從無到有 基本課程Simon Su
 
twMVC#42 Azure DevOps Service Pipeline設計與非正常應用
twMVC#42 Azure DevOps Service Pipeline設計與非正常應用twMVC#42 Azure DevOps Service Pipeline設計與非正常應用
twMVC#42 Azure DevOps Service Pipeline設計與非正常應用twMVC
 
快快樂樂學 Angular 2 開發框架
快快樂樂學 Angular 2 開發框架快快樂樂學 Angular 2 開發框架
快快樂樂學 Angular 2 開發框架Will Huang
 
Nuget介紹- 如何使用和建立自己的package
Nuget介紹- 如何使用和建立自己的packageNuget介紹- 如何使用和建立自己的package
Nuget介紹- 如何使用和建立自己的packageAlan Tsai
 
AngularJS training in Luster
AngularJS training in LusterAngularJS training in Luster
AngularJS training in LusterJason Chung
 
NodeJS基礎教學&簡介
NodeJS基礎教學&簡介NodeJS基礎教學&簡介
NodeJS基礎教學&簡介GO LL
 
利用Signalr打造即時通訊@Tech day geek
利用Signalr打造即時通訊@Tech day geek利用Signalr打造即時通訊@Tech day geek
利用Signalr打造即時通訊@Tech day geekJohnson Gau
 

Mais procurados (20)

twMVC#42 Windows容器導入由0到1
twMVC#42 Windows容器導入由0到1twMVC#42 Windows容器導入由0到1
twMVC#42 Windows容器導入由0到1
 
ASP.NET MVC 6 新功能探索
ASP.NET MVC 6 新功能探索ASP.NET MVC 6 新功能探索
ASP.NET MVC 6 新功能探索
 
twMVC#36讓 Exceptionless 存管你的 Log
twMVC#36讓 Exceptionless 存管你的 LogtwMVC#36讓 Exceptionless 存管你的 Log
twMVC#36讓 Exceptionless 存管你的 Log
 
ASP.NET 5 的創新與變革
ASP.NET 5 的創新與變革ASP.NET 5 的創新與變革
ASP.NET 5 的創新與變革
 
Angular js twmvc#17
Angular js twmvc#17Angular js twmvc#17
Angular js twmvc#17
 
使用 Visual Studio Code 建構 JavaScript 應用程式
使用 Visual Studio Code 建構 JavaScript 應用程式使用 Visual Studio Code 建構 JavaScript 應用程式
使用 Visual Studio Code 建構 JavaScript 應用程式
 
Reactive application with akka.NET & .NET Core
Reactive application with akka.NET & .NET CoreReactive application with akka.NET & .NET Core
Reactive application with akka.NET & .NET Core
 
[Study4TW Visual Studio Everywhere] asp.net core 實務開發經驗分享
[Study4TW Visual Studio Everywhere] asp.net core 實務開發經驗分享[Study4TW Visual Studio Everywhere] asp.net core 實務開發經驗分享
[Study4TW Visual Studio Everywhere] asp.net core 實務開發經驗分享
 
快快樂樂學會 Angular 2 網站開發框架 (Modern Web 2016)
快快樂樂學會 Angular 2 網站開發框架 (Modern Web 2016)快快樂樂學會 Angular 2 網站開發框架 (Modern Web 2016)
快快樂樂學會 Angular 2 網站開發框架 (Modern Web 2016)
 
React.js what do you really mean?
React.js what do you really mean?React.js what do you really mean?
React.js what do you really mean?
 
twMVC#33聊聊如何自建 Facebook {廣告} 服務 with API
twMVC#33聊聊如何自建 Facebook {廣告} 服務 with API twMVC#33聊聊如何自建 Facebook {廣告} 服務 with API
twMVC#33聊聊如何自建 Facebook {廣告} 服務 with API
 
Angular.js & ASP.NET in Study4
Angular.js & ASP.NET in Study4Angular.js & ASP.NET in Study4
Angular.js & ASP.NET in Study4
 
保哥線上講堂:利用 StyleCop 撰寫一致的 C# 程式碼風格
保哥線上講堂:利用 StyleCop 撰寫一致的 C# 程式碼風格保哥線上講堂:利用 StyleCop 撰寫一致的 C# 程式碼風格
保哥線上講堂:利用 StyleCop 撰寫一致的 C# 程式碼風格
 
Node.js從無到有 基本課程
Node.js從無到有 基本課程Node.js從無到有 基本課程
Node.js從無到有 基本課程
 
twMVC#42 Azure DevOps Service Pipeline設計與非正常應用
twMVC#42 Azure DevOps Service Pipeline設計與非正常應用twMVC#42 Azure DevOps Service Pipeline設計與非正常應用
twMVC#42 Azure DevOps Service Pipeline設計與非正常應用
 
快快樂樂學 Angular 2 開發框架
快快樂樂學 Angular 2 開發框架快快樂樂學 Angular 2 開發框架
快快樂樂學 Angular 2 開發框架
 
Nuget介紹- 如何使用和建立自己的package
Nuget介紹- 如何使用和建立自己的packageNuget介紹- 如何使用和建立自己的package
Nuget介紹- 如何使用和建立自己的package
 
AngularJS training in Luster
AngularJS training in LusterAngularJS training in Luster
AngularJS training in Luster
 
NodeJS基礎教學&簡介
NodeJS基礎教學&簡介NodeJS基礎教學&簡介
NodeJS基礎教學&簡介
 
利用Signalr打造即時通訊@Tech day geek
利用Signalr打造即時通訊@Tech day geek利用Signalr打造即時通訊@Tech day geek
利用Signalr打造即時通訊@Tech day geek
 

Destaque

20140816 工程師要如何準備一場成功的簡報!
20140816 工程師要如何準備一場成功的簡報!20140816 工程師要如何準備一場成功的簡報!
20140816 工程師要如何準備一場成功的簡報!Amigo 陳兆祥
 
20140824 認識與應用商業模式
20140824 認識與應用商業模式20140824 認識與應用商業模式
20140824 認識與應用商業模式Amigo 陳兆祥
 
20140920 創業前要作的事
20140920 創業前要作的事20140920 創業前要作的事
20140920 創業前要作的事Amigo 陳兆祥
 
20140809 如何加速行銷部門作業流程與編列預算
20140809 如何加速行銷部門作業流程與編列預算20140809 如何加速行銷部門作業流程與編列預算
20140809 如何加速行銷部門作業流程與編列預算Amigo 陳兆祥
 
20140824 如何協助業務部門達成業績目標與更精準的預測
20140824 如何協助業務部門達成業績目標與更精準的預測20140824 如何協助業務部門達成業績目標與更精準的預測
20140824 如何協助業務部門達成業績目標與更精準的預測Amigo 陳兆祥
 
20140824 從離職到開始 crm 顧問的轉變
20140824 從離職到開始 crm 顧問的轉變20140824 從離職到開始 crm 顧問的轉變
20140824 從離職到開始 crm 顧問的轉變Amigo 陳兆祥
 
20140724 中小企業 QNAP Virtualization Station 快速導入業務管理方案
20140724 中小企業 QNAP Virtualization Station 快速導入業務管理方案20140724 中小企業 QNAP Virtualization Station 快速導入業務管理方案
20140724 中小企業 QNAP Virtualization Station 快速導入業務管理方案Amigo 陳兆祥
 
High Availability and High Performance Server Side
High Availability and High Performance Server SideHigh Availability and High Performance Server Side
High Availability and High Performance Server SideAmigo 陳兆祥
 
You must know about CodeIgniter Popular Library
You must know about CodeIgniter Popular LibraryYou must know about CodeIgniter Popular Library
You must know about CodeIgniter Popular LibraryBo-Yi Wu
 
企業資源規劃(Erp)系統導入規劃
企業資源規劃(Erp)系統導入規劃企業資源規劃(Erp)系統導入規劃
企業資源規劃(Erp)系統導入規劃Simon Huang
 
PHP Frameworks & Introduction to CodeIgniter
PHP Frameworks & Introduction to CodeIgniterPHP Frameworks & Introduction to CodeIgniter
PHP Frameworks & Introduction to CodeIgniterJamshid Hashimi
 
Introduction To CodeIgniter
Introduction To CodeIgniterIntroduction To CodeIgniter
Introduction To CodeIgniterschwebbie
 
CodeIgniter PHP MVC Framework
CodeIgniter PHP MVC FrameworkCodeIgniter PHP MVC Framework
CodeIgniter PHP MVC FrameworkBo-Yi Wu
 
Why to choose laravel framework
Why to choose laravel frameworkWhy to choose laravel framework
Why to choose laravel frameworkBo-Yi Wu
 
Composer 套件管理
Composer 套件管理Composer 套件管理
Composer 套件管理Shengyou Fan
 
PHP 語法基礎與物件導向
PHP 語法基礎與物件導向PHP 語法基礎與物件導向
PHP 語法基礎與物件導向Shengyou Fan
 

Destaque (20)

20140816 工程師要如何準備一場成功的簡報!
20140816 工程師要如何準備一場成功的簡報!20140816 工程師要如何準備一場成功的簡報!
20140816 工程師要如何準備一場成功的簡報!
 
20140824 認識與應用商業模式
20140824 認識與應用商業模式20140824 認識與應用商業模式
20140824 認識與應用商業模式
 
20140920 創業前要作的事
20140920 創業前要作的事20140920 創業前要作的事
20140920 創業前要作的事
 
20140809 如何加速行銷部門作業流程與編列預算
20140809 如何加速行銷部門作業流程與編列預算20140809 如何加速行銷部門作業流程與編列預算
20140809 如何加速行銷部門作業流程與編列預算
 
20140824 如何協助業務部門達成業績目標與更精準的預測
20140824 如何協助業務部門達成業績目標與更精準的預測20140824 如何協助業務部門達成業績目標與更精準的預測
20140824 如何協助業務部門達成業績目標與更精準的預測
 
20140824 從離職到開始 crm 顧問的轉變
20140824 從離職到開始 crm 顧問的轉變20140824 從離職到開始 crm 顧問的轉變
20140824 從離職到開始 crm 顧問的轉變
 
20140724 中小企業 QNAP Virtualization Station 快速導入業務管理方案
20140724 中小企業 QNAP Virtualization Station 快速導入業務管理方案20140724 中小企業 QNAP Virtualization Station 快速導入業務管理方案
20140724 中小企業 QNAP Virtualization Station 快速導入業務管理方案
 
High Availability and High Performance Server Side
High Availability and High Performance Server SideHigh Availability and High Performance Server Side
High Availability and High Performance Server Side
 
You must know about CodeIgniter Popular Library
You must know about CodeIgniter Popular LibraryYou must know about CodeIgniter Popular Library
You must know about CodeIgniter Popular Library
 
企業資源規劃(Erp)系統導入規劃
企業資源規劃(Erp)系統導入規劃企業資源規劃(Erp)系統導入規劃
企業資源規劃(Erp)系統導入規劃
 
PHP Frameworks & Introduction to CodeIgniter
PHP Frameworks & Introduction to CodeIgniterPHP Frameworks & Introduction to CodeIgniter
PHP Frameworks & Introduction to CodeIgniter
 
Introduction To CodeIgniter
Introduction To CodeIgniterIntroduction To CodeIgniter
Introduction To CodeIgniter
 
Codeigniter
CodeigniterCodeigniter
Codeigniter
 
CodeIgniter PHP MVC Framework
CodeIgniter PHP MVC FrameworkCodeIgniter PHP MVC Framework
CodeIgniter PHP MVC Framework
 
Why to choose laravel framework
Why to choose laravel frameworkWhy to choose laravel framework
Why to choose laravel framework
 
RESTful API Design
RESTful API DesignRESTful API Design
RESTful API Design
 
工作坊簡介
工作坊簡介工作坊簡介
工作坊簡介
 
Composer 套件管理
Composer 套件管理Composer 套件管理
Composer 套件管理
 
從線上售票看作業系統設計議題
從線上售票看作業系統設計議題從線上售票看作業系統設計議題
從線上售票看作業系統設計議題
 
PHP 語法基礎與物件導向
PHP 語法基礎與物件導向PHP 語法基礎與物件導向
PHP 語法基礎與物件導向
 

Semelhante a 以Code igniter為基礎的網頁前端程式設計

前端自動化工具
前端自動化工具前端自動化工具
前端自動化工具國昭 張
 
Build desktop app_by_xulrunner
Build desktop app_by_xulrunnerBuild desktop app_by_xulrunner
Build desktop app_by_xulrunnerRack Lin
 
A brief introduction to Vagrant – 原來 VirtualBox 可以這樣玩
A brief introduction to Vagrant – 原來 VirtualBox 可以這樣玩A brief introduction to Vagrant – 原來 VirtualBox 可以這樣玩
A brief introduction to Vagrant – 原來 VirtualBox 可以這樣玩Wen-Tien Chang
 
美团前端架构简介
美团前端架构简介美团前端架构简介
美团前端架构简介pan weizeng
 
合久必分,分久必合
合久必分,分久必合合久必分,分久必合
合久必分,分久必合Qiangning Hong
 
[students AI workshop] Pytorch
[students AI workshop]  Pytorch[students AI workshop]  Pytorch
[students AI workshop] PytorchTzu-Wei Huang
 
浏览器渲染与web前端开发
浏览器渲染与web前端开发浏览器渲染与web前端开发
浏览器渲染与web前端开发Duoyi Wu
 
讓軟體開發與應用更自由 - 使用 Docker 技術
讓軟體開發與應用更自由 - 使用 Docker 技術讓軟體開發與應用更自由 - 使用 Docker 技術
讓軟體開發與應用更自由 - 使用 Docker 技術Yu Lung Shao
 
Nodejs & NAE
Nodejs & NAENodejs & NAE
Nodejs & NAEq3boy
 
Linux binary Exploitation - Basic knowledge
Linux binary Exploitation - Basic knowledgeLinux binary Exploitation - Basic knowledge
Linux binary Exploitation - Basic knowledgeAngel Boy
 
Artifacts management with CI and CD
Artifacts management with CI and CDArtifacts management with CI and CD
Artifacts management with CI and CDChen-Tien Tsai
 
D2_node在淘宝的应用实践_pdf版
D2_node在淘宝的应用实践_pdf版D2_node在淘宝的应用实践_pdf版
D2_node在淘宝的应用实践_pdf版Jackson Tian
 
课题二:Node.js那些事儿
课题二:Node.js那些事儿课题二:Node.js那些事儿
课题二:Node.js那些事儿Liu Allen
 
前端也能變全端
前端也能變全端前端也能變全端
前端也能變全端ericpi Bi
 
Node.js在淘宝的应用实践
Node.js在淘宝的应用实践Node.js在淘宝的应用实践
Node.js在淘宝的应用实践taobao.com
 
Angular 开发技巧 (2018 ngChina 开发者大会)
Angular 开发技巧 (2018 ngChina 开发者大会)Angular 开发技巧 (2018 ngChina 开发者大会)
Angular 开发技巧 (2018 ngChina 开发者大会)Will Huang
 
李成银:前端编译平台
李成银:前端编译平台李成银:前端编译平台
李成银:前端编译平台taobao.com
 
前端编译平台
前端编译平台前端编译平台
前端编译平台Welefen Lee
 

Semelhante a 以Code igniter為基礎的網頁前端程式設計 (20)

前端自動化工具
前端自動化工具前端自動化工具
前端自動化工具
 
Build desktop app_by_xulrunner
Build desktop app_by_xulrunnerBuild desktop app_by_xulrunner
Build desktop app_by_xulrunner
 
A brief introduction to Vagrant – 原來 VirtualBox 可以這樣玩
A brief introduction to Vagrant – 原來 VirtualBox 可以這樣玩A brief introduction to Vagrant – 原來 VirtualBox 可以這樣玩
A brief introduction to Vagrant – 原來 VirtualBox 可以這樣玩
 
美团前端架构简介
美团前端架构简介美团前端架构简介
美团前端架构简介
 
合久必分,分久必合
合久必分,分久必合合久必分,分久必合
合久必分,分久必合
 
[students AI workshop] Pytorch
[students AI workshop]  Pytorch[students AI workshop]  Pytorch
[students AI workshop] Pytorch
 
浏览器渲染与web前端开发
浏览器渲染与web前端开发浏览器渲染与web前端开发
浏览器渲染与web前端开发
 
讓軟體開發與應用更自由 - 使用 Docker 技術
讓軟體開發與應用更自由 - 使用 Docker 技術讓軟體開發與應用更自由 - 使用 Docker 技術
讓軟體開發與應用更自由 - 使用 Docker 技術
 
Nodejs & NAE
Nodejs & NAENodejs & NAE
Nodejs & NAE
 
Berserk js
Berserk jsBerserk js
Berserk js
 
Linux binary Exploitation - Basic knowledge
Linux binary Exploitation - Basic knowledgeLinux binary Exploitation - Basic knowledge
Linux binary Exploitation - Basic knowledge
 
Artifacts management with CI and CD
Artifacts management with CI and CDArtifacts management with CI and CD
Artifacts management with CI and CD
 
D2_node在淘宝的应用实践_pdf版
D2_node在淘宝的应用实践_pdf版D2_node在淘宝的应用实践_pdf版
D2_node在淘宝的应用实践_pdf版
 
课题二:Node.js那些事儿
课题二:Node.js那些事儿课题二:Node.js那些事儿
课题二:Node.js那些事儿
 
Zabbix in PPTV
Zabbix in PPTVZabbix in PPTV
Zabbix in PPTV
 
前端也能變全端
前端也能變全端前端也能變全端
前端也能變全端
 
Node.js在淘宝的应用实践
Node.js在淘宝的应用实践Node.js在淘宝的应用实践
Node.js在淘宝的应用实践
 
Angular 开发技巧 (2018 ngChina 开发者大会)
Angular 开发技巧 (2018 ngChina 开发者大会)Angular 开发技巧 (2018 ngChina 开发者大会)
Angular 开发技巧 (2018 ngChina 开发者大会)
 
李成银:前端编译平台
李成银:前端编译平台李成银:前端编译平台
李成银:前端编译平台
 
前端编译平台
前端编译平台前端编译平台
前端编译平台
 

Último

20170104 - transaction_pattern
20170104 - transaction_pattern20170104 - transaction_pattern
20170104 - transaction_patternJamie (Taka) Wang
 
20161220 - domain-driven design
20161220 - domain-driven design20161220 - domain-driven design
20161220 - domain-driven designJamie (Taka) Wang
 
20211119 - demystified artificial intelligence with NLP
20211119 - demystified artificial intelligence with NLP20211119 - demystified artificial intelligence with NLP
20211119 - demystified artificial intelligence with NLPJamie (Taka) Wang
 
函數微分_習題4.pptx 函數微分_習題4.pptx 函數微分_習題4.pptx
函數微分_習題4.pptx 函數微分_習題4.pptx 函數微分_習題4.pptx函數微分_習題4.pptx 函數微分_習題4.pptx 函數微分_習題4.pptx
函數微分_習題4.pptx 函數微分_習題4.pptx 函數微分_習題4.pptxNCU MCL
 
买假和真英国驾驶执照买了假的英国驾照,那跟真的有什么区别吗?买假和真正的澳大利亚驾驶执照【微信qoqoqdqd】
买假和真英国驾驶执照买了假的英国驾照,那跟真的有什么区别吗?买假和真正的澳大利亚驾驶执照【微信qoqoqdqd】买假和真英国驾驶执照买了假的英国驾照,那跟真的有什么区别吗?买假和真正的澳大利亚驾驶执照【微信qoqoqdqd】
买假和真英国驾驶执照买了假的英国驾照,那跟真的有什么区别吗?买假和真正的澳大利亚驾驶执照【微信qoqoqdqd】黑客 接单【TG/微信qoqoqdqd】
 
SymPy 在微積分上的應用_5.pptx SymPy 在微積分上的應用_5.pptx
SymPy 在微積分上的應用_5.pptx SymPy 在微積分上的應用_5.pptxSymPy 在微積分上的應用_5.pptx SymPy 在微積分上的應用_5.pptx
SymPy 在微積分上的應用_5.pptx SymPy 在微積分上的應用_5.pptxNCU MCL
 
函數畫圖_習題7.pptx 函數畫圖_習題7.pptx 函數畫圖_習題7.pptx
函數畫圖_習題7.pptx 函數畫圖_習題7.pptx 函數畫圖_習題7.pptx函數畫圖_習題7.pptx 函數畫圖_習題7.pptx 函數畫圖_習題7.pptx
函數畫圖_習題7.pptx 函數畫圖_習題7.pptx 函數畫圖_習題7.pptxNCU MCL
 
SymPy 在微積分上的應用_4.pptx SymPy 在微積分上的應用_4.pptx
SymPy 在微積分上的應用_4.pptx SymPy 在微積分上的應用_4.pptxSymPy 在微積分上的應用_4.pptx SymPy 在微積分上的應用_4.pptx
SymPy 在微積分上的應用_4.pptx SymPy 在微積分上的應用_4.pptxNCU MCL
 
函數畫圖_習題6.pptx 函數畫圖_習題6.pptx 函數畫圖_習題6.pptx
函數畫圖_習題6.pptx 函數畫圖_習題6.pptx 函數畫圖_習題6.pptx函數畫圖_習題6.pptx 函數畫圖_習題6.pptx 函數畫圖_習題6.pptx
函數畫圖_習題6.pptx 函數畫圖_習題6.pptx 函數畫圖_習題6.pptxNCU MCL
 
函數畫圖_習題5.pptx 函數畫圖_習題5.pptx 函數畫圖_習題5.pptx
函數畫圖_習題5.pptx 函數畫圖_習題5.pptx 函數畫圖_習題5.pptx函數畫圖_習題5.pptx 函數畫圖_習題5.pptx 函數畫圖_習題5.pptx
函數畫圖_習題5.pptx 函數畫圖_習題5.pptx 函數畫圖_習題5.pptxNCU MCL
 

Último (15)

20170104 - transaction_pattern
20170104 - transaction_pattern20170104 - transaction_pattern
20170104 - transaction_pattern
 
20161220 - domain-driven design
20161220 - domain-driven design20161220 - domain-driven design
20161220 - domain-driven design
 
20211119 - demystified artificial intelligence with NLP
20211119 - demystified artificial intelligence with NLP20211119 - demystified artificial intelligence with NLP
20211119 - demystified artificial intelligence with NLP
 
20200323 - AI Intro
20200323 - AI Intro20200323 - AI Intro
20200323 - AI Intro
 
函數微分_習題4.pptx 函數微分_習題4.pptx 函數微分_習題4.pptx
函數微分_習題4.pptx 函數微分_習題4.pptx 函數微分_習題4.pptx函數微分_習題4.pptx 函數微分_習題4.pptx 函數微分_習題4.pptx
函數微分_習題4.pptx 函數微分_習題4.pptx 函數微分_習題4.pptx
 
20200226 - AI Overview
20200226 - AI Overview20200226 - AI Overview
20200226 - AI Overview
 
20151111 - IoT Sync Up
20151111 - IoT Sync Up20151111 - IoT Sync Up
20151111 - IoT Sync Up
 
买假和真英国驾驶执照买了假的英国驾照,那跟真的有什么区别吗?买假和真正的澳大利亚驾驶执照【微信qoqoqdqd】
买假和真英国驾驶执照买了假的英国驾照,那跟真的有什么区别吗?买假和真正的澳大利亚驾驶执照【微信qoqoqdqd】买假和真英国驾驶执照买了假的英国驾照,那跟真的有什么区别吗?买假和真正的澳大利亚驾驶执照【微信qoqoqdqd】
买假和真英国驾驶执照买了假的英国驾照,那跟真的有什么区别吗?买假和真正的澳大利亚驾驶执照【微信qoqoqdqd】
 
Entities in DCPS (DDS)
Entities in DCPS (DDS)Entities in DCPS (DDS)
Entities in DCPS (DDS)
 
SymPy 在微積分上的應用_5.pptx SymPy 在微積分上的應用_5.pptx
SymPy 在微積分上的應用_5.pptx SymPy 在微積分上的應用_5.pptxSymPy 在微積分上的應用_5.pptx SymPy 在微積分上的應用_5.pptx
SymPy 在微積分上的應用_5.pptx SymPy 在微積分上的應用_5.pptx
 
20161027 - edge part2
20161027 - edge part220161027 - edge part2
20161027 - edge part2
 
函數畫圖_習題7.pptx 函數畫圖_習題7.pptx 函數畫圖_習題7.pptx
函數畫圖_習題7.pptx 函數畫圖_習題7.pptx 函數畫圖_習題7.pptx函數畫圖_習題7.pptx 函數畫圖_習題7.pptx 函數畫圖_習題7.pptx
函數畫圖_習題7.pptx 函數畫圖_習題7.pptx 函數畫圖_習題7.pptx
 
SymPy 在微積分上的應用_4.pptx SymPy 在微積分上的應用_4.pptx
SymPy 在微積分上的應用_4.pptx SymPy 在微積分上的應用_4.pptxSymPy 在微積分上的應用_4.pptx SymPy 在微積分上的應用_4.pptx
SymPy 在微積分上的應用_4.pptx SymPy 在微積分上的應用_4.pptx
 
函數畫圖_習題6.pptx 函數畫圖_習題6.pptx 函數畫圖_習題6.pptx
函數畫圖_習題6.pptx 函數畫圖_習題6.pptx 函數畫圖_習題6.pptx函數畫圖_習題6.pptx 函數畫圖_習題6.pptx 函數畫圖_習題6.pptx
函數畫圖_習題6.pptx 函數畫圖_習題6.pptx 函數畫圖_習題6.pptx
 
函數畫圖_習題5.pptx 函數畫圖_習題5.pptx 函數畫圖_習題5.pptx
函數畫圖_習題5.pptx 函數畫圖_習題5.pptx 函數畫圖_習題5.pptx函數畫圖_習題5.pptx 函數畫圖_習題5.pptx 函數畫圖_習題5.pptx
函數畫圖_習題5.pptx 函數畫圖_習題5.pptx 函數畫圖_習題5.pptx
 

以Code igniter為基礎的網頁前端程式設計