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
650
JSConf Asia 2014 Sessions
jaceju
4
450
What happens in Laravel 4 bootstraping
jaceju
9
600
Deal with Laravel assets by Bower & Gulp
jaceju
30
2.1k
Leaning MVC By Example
jaceju
0
430
ng-conf_2014
jaceju
2
1.1k
The Power of JavaScript in JSConf.Asia 2013
jaceju
5
450
Begining Composer
jaceju
24
5.5k
Checkup your web pages
jaceju
44
3.2k
Other Decks in Programming
See All in Programming
今さら聞けないCancellationToken
htkym
0
220
AutonomyとControlのあいだ:Graflowで記述するAIエージェント協調
myui
0
110
Composerを使ったサプライチェーン攻撃の様子を眺めてみる #phpstudy
o0h
PRO
2
230
Javaの型とAI時代に型が大事な理由 / java types and type in AI era
kishida
2
110
The Arts and Crafts of Work in the AI Era — Toward Mastery in Software Development
kuranuki
1
730
技術記事、AIに書かせるか、自分で書くか? 〜それでも私が自分の手で書く理由〜 / #QiitaConference
jnchito
2
1.3k
AI駆動開発で崩れていくコードベースを立て直す
kyoko_nr_nr
1
440
ふつうのFeature Flag実践入門
irof
7
3.6k
生成AI時代にこそ効くGo | Why Go Works in the Age of Generative AI
mom0tomo
8
3.2k
ユニットテストの先へ:テスト技法で要求・仕様を整理するJava開発実践 / Beyond_Unit_Testing_Practical_Java_Development_Techniques_for_Organizing_Requirements_and_Specifications
shimashima35
0
370
正しくソフトウェアを作る、前提を疑うための認知の視点 / doubt-premise
minodriven
17
6.2k
Language Server 使ってる? 〜VSCode と Zed の場合〜 / Are you using a Language Server? ~For VS Code and Zed~
handlename
0
770
Featured
See All Featured
世界の人気アプリ100個を分析して見えたペイウォール設計の心得
akihiro_kokubo
PRO
71
40k
The Organizational Zoo: Understanding Human Behavior Agility Through Metaphoric Constructive Conversations (based on the works of Arthur Shelley, Ph.D)
kimpetersen
PRO
0
360
jQuery: Nuts, Bolts and Bling
dougneiner
66
8.5k
Thoughts on Productivity
jonyablonski
76
5.2k
Data-driven link building: lessons from a $708K investment (BrightonSEO talk)
szymonslowik
1
1.1k
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
35
3.5k
Mozcon NYC 2025: Stop Losing SEO Traffic
samtorres
1
250
JAMstack: Web Apps at Ludicrous Speed - All Things Open 2022
reverentgeek
1
460
DBのスキルで生き残る技術 - AI時代におけるテーブル設計の勘所
soudai
PRO
65
55k
SEO for Brand Visibility & Recognition
aleyda
0
4.6k
The Power of CSS Pseudo Elements
geoffreycrofte
82
6.3k
Stewardship and Sustainability of Urban and Community Forests
pwiseman
0
220
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