Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
jQuery vs AngularJS, dochi?
Search
大澤木小鐵
December 05, 2013
Programming
3.1k
20
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
jQuery vs AngularJS, dochi?
大澤木小鐵
December 05, 2013
More Decks by 大澤木小鐵
See All by 大澤木小鐵
Effective Unit Testing
jaceju
3
660
JSConf Asia 2014 Sessions
jaceju
4
460
What happens in Laravel 4 bootstraping
jaceju
9
610
Deal with Laravel assets by Bower & Gulp
jaceju
30
2.1k
Leaning MVC By Example
jaceju
0
440
ng-conf_2014
jaceju
2
1.1k
The Power of JavaScript in JSConf.Asia 2013
jaceju
5
460
Begining Composer
jaceju
24
5.5k
Checkup your web pages
jaceju
44
3.2k
Other Decks in Programming
See All in Programming
ドリフトを絶対に許さない(?)CDK運用 / CDK Ops with Zero Tolerance for Drifts (?)
akihisaikeda
1
200
AI時代のPHPer生存戦略 ~「言語、もうなんでもよくない?」に本気で向き合う~
vivion
0
770
VibeCodingからAgenticWorkflowへ
starfish719
0
550
OpenSpecのproposalにbrainstormingを持たせてみた
tigertora7571
1
240
AI時代に設計が 最大の生産性レバーになる 意図駆動開発とデータを消さない設計|Don't Delete Your Data or Your Intent — Design as the Deepest Lever in the AI Era
tomohisa
1
980
複数の Claude Code が"放置"されてしまう問題をCLI ダッシュボードを自作して解決した話
sumihiro3
1
700
リアルな遅延を測る仕様
kota_yata
1
110
AWS CDK を「作」ってみた 〜フルスクラッチで見えた CDK の裏側〜 / aws-cdk-from-scratch
gotok365
3
2.8k
PHP Application における Kubernetes 内 gRPC 通信
ganchiku
0
590
Japan Community Day at Kubecon + CloudNativeCon Japan 2026: Learning Container Privilege Control by Building My Own Low-Level Container Runtime
ternbusty
1
160
自動化したのに回らない テスト運用の壁―AI時代の品質責任と生産性
mfunaki
0
260
<title><a id="</title>君はこのHTMLをパースできるか"></a></title> #雑LT_study
pizzacat83
0
150
Featured
See All Featured
Ten Tips & Tricks for a 🌱 transition
stuffmc
0
170
Dominate Local Search Results - an insider guide to GBP, reviews, and Local SEO
greggifford
PRO
0
290
コードの90%をAIが書く世界で何が待っているのか / What awaits us in a world where 90% of the code is written by AI
rkaga
63
45k
The MySQL Ecosystem @ GitHub 2015
samlambert
251
13k
The untapped power of vector embeddings
frankvandijk
2
1.8k
Taking LLMs out of the black box: A practical guide to human-in-the-loop distillation
inesmontani
PRO
3
2.3k
Java REST API Framework Comparison - PWX 2021
mraible
34
9.6k
Leadership Guide Workshop - DevTernity 2021
reverentgeek
1
340
The Illustrated Children's Guide to Kubernetes
chrisshort
51
53k
Beyond borders and beyond the search box: How to win the global "messy middle" with AI-driven SEO
davidcarrasco
3
210
Self-Hosted WebAssembly Runtime for Runtime-Neutral Checkpoint/Restore in Edge–Cloud Continuum
chikuwait
0
710
How STYLIGHT went responsive
nonsquared
100
6.2k
Transcript
dochi? jQuery AngularJS vs
@jaceju ⼤大澤⽊木⼩小鐵
該學 jQuery 還是 AngularJS ?
選⼿手介紹
⽤用 CSS 選擇器語法來選擇想要的元素! 然後對這些元素進⾏行操作或綁定事件處理程式 jQuery <button class="post"></button>! ! <script>! $('.post').on('click',
function () {! ...! });! </script>
將 HTML 當成程式平台⽽而⾮非單純的⽂文件,! 將狀態和事件直接⽤用⾃自訂的 HTML 標籤或屬性來表達。 AngularJS <button ng-click="post('bob')"> </button>
Round 1
http://goo.gl/CAja7s 範例畫⾯面 客⼾戶說:⼀一定要給我⽀支援 IE 7 以上的版本
<!DOCTYPE html>! <html>! <body>! ! <ul>! <li><a href="#">Home</a></li>! <li><a href="#">Profile</a></li>!
<li><a href="#">Messages</a></li>! <li><a href="#">Settings</a></li>! </ul>! ! <p>Click Me</p>! ! </body>! </html>! HTML 結構 http://goo.gl/CAja7s
jQuery
程式運作⽅方式 1. 在 p 標籤上綁定⼀一個按下事件處理程式。 2. 當 p 標籤被按下時,切換選單元件的 上下滑特效。
程式碼 $(function () {! var $menu = $('body > ul');
// 找到選單! var $button = $('body > p'); // 找到按鈕! ! $button.on('click', function () {! $menu.slideToggle(); // 切換上下滑效果! });! });! http://goo.gl/N4nLtS
var $menu = $('#menu');! var $button = $('.button'); <ul id="menu">
... </ul>! <p class="button"> ... </p> 改⽤用 id / class
AngularJS
程式運作⽅方式 1. 利⽤用變數 isClosed 來記住 ⺫⽬目前選單呈現狀態。 2. 透過 ng-click 來綁定
p 標籤的事件, 以決定 isClosed 的值。 3. 透過 ng-class 與 isClosed 來決定要不要顯⽰示選單。
程式碼 <!DOCTYPE html>! <html>! <body ng-app ng-init="isClosed=true">! ! <ul class="closed"
ng-class="{ closed: isClosed }">! <li><a href="#">Home</a></li>! <li><a href="#">Profile</a></li>! <li><a href="#">Messages</a></li>! <li><a href="#">Settings</a></li>! </ul>! ! <p ng-click="isClosed = !isClosed">Click Me</p>! ! <script src="angular.min.js"></script>! </body>! </html>! http://goo.gl/Fjo52H
CSS3 transition ul { ...! overflow-y: hidden;! max-height: 500px;! transition-property:
all;! transition-duration: 1s;! }! ul.closed {! max-height: 0;! }! http://goo.gl/Fjo52H
等等, CSS3 ?
Can I use transition? http://goo.gl/FUAyDT
說好的 IE 7 呢?
jQuery AngularJS 勝 IE ⽀支援度
Round 2
http://goo.gl/wUhIim 範例畫⾯面
HTML 結構 <!DOCTYPE html>! <html>! <body>! ! <p>Current Value: <span>1</span></p>!
! <p><input type="range" value="1" ! min="1" max="10" /></p>! <p><input type="text" value="1" /></p>! ! </body>! </html>! http://goo.gl/wUhIim
AngularJS
程式運作⽅方式 1. 利⽤用變數 val 來記住⺫⽬目前的數值。 2. 透過 ng-bind 將 val
變數綁定⾄至 span 標籤顯⽰示。 3. 透過 ng-model 將 val 變數與 input / span 標籤做雙向資料綁定 (Two Way Data-Binding) 。
程式碼 http://goo.gl/Tbx6UD <!DOCTYPE html>! <html ng-app>! <body ng-init="val=1">! ! <p>Current
Value: <span ng-bind="val">1</span></p>! <p><input type="range" min="1" max="10"! ng-model="val" /></p>! <p><input type="text" ng-model="val" /></p>! ! <script src="angular.min.js"></script>! </body>! </html>!
jQuery
程式運作⽅方式 1. 利⽤用變數 val 來記住⺫⽬目前的數值。 2. 當操作 slider 元件時,透過 input
事件 來更新其他元件的內容或值。 3. 當操作 text 元件時,透過 keyup 事件 來更新其他元件的內容或值。
程式碼 http://goo.gl/nhwtyN (function () {! var val = 1;! var
$span = $('span').text(val);! var $slider = $('input[type=range]').val(val);! ! ! $slider.on('input', function () {! val = $(this).val(); // 更新 val 數值! $span.text(val); // 同步 $span 內容! ! });! ! ! ! ! ! ! })();
程式碼 (function () {! var val = 1;! var $span
= $('span').text(val);! var $slider = $('input[type=range]').val(val);! var $text = $('input[type=text]').val(val);! ! $slider.on('input', function () {! val = $(this).val(); // 更新 val 數值! $span.text(val); // 同步 $span 內容! $text.val(val); // 同步 $text 值! });! ! $text.on('keyup', function () {! val = $(this).val(); // 更新 val 數值! $span.text(val); // 同步 $span 內容! $slider.val(val); // 同步 $slider 值! });! })(); http://goo.gl/nhwtyN
val $span $text 程式碼⾏行數: 9
val $span $text $slider 程式碼⾏行數: 16
val $span $text new element $slider 程式碼⾏行數: 25
val $span $text new element $slider new element 程式碼⾏行數: 36
val $span $text new element $slider new element new element
程式碼⾏行數: 49
val $span $text new element $slider new element new element
程式碼⾏行數! ⼤大爆炸!!
jQuery AngularJS 勝 元件互動便利性
時間來不及 快點做結論
jQuery AngularJS 主要開發⽅方式 盡可能不修改 HTML 將⾴頁⾯面邏輯寫在 JS 中 HTML 為主,
JS 為輔 適⽤用場合 畫⾯面特效 互動表單 元素特效 透過 JavaScript 計算 CSS3 (或 jQuery-like API 輔助) 擴充機制 plugins directives IE ⽀支援度 IE6 以上 (1.x) IE8 以上
先學 j Query 然後依專案性質決定使⽤用哪⼀一個 還是要摻在⼀一起做成撒尿⽜牛丸也可以 再學 AngularJS