AngularJS – 跟著Google玩網頁!
今天馬老師要與大家分享的是一個前端開發的函式庫AngularJS,前面的文章中都有提到,因為近年來行動裝置的普及讓Javascript大為活躍,不過傳統的Javascript在相容性上、操作上都非常的不方便,所以才有了許許多多Javascript的函式庫與框架的誕生,例如:jQuery、KnockoutJS、GSAP、PaperJS…等,每個Javascript的函式庫和框架的大小、作用和目的都不盡相同,有的是為了特效;有的則是為了方便操作,那今天為何要跟大家分享AngularJS呢?因為…它是名牌!
為何說AngularJS是名牌呢?因為目前他是由Google來負責維護。初始版本是在2009年誕生的,比jQuery晚了三年,言下之意就會比jQuery好嗎?當然也不能這麼說,jQuery在目前還是一個非常火燙的前端開發函式庫,應該要說他們兩個在使用的架構和目的上會有所不同,這篇文章也來比較一下同樣的案例,在兩種語法上面撰寫的不同。
不過首先我們要知道基本的AngularJS開發方式,今天的案例我們利用JS Bin的線上開發網頁來說明,大家也可以到這個平台上來試著玩看看!如果需要利用AngularJS開發自己的網頁,也可以到AngularJS的官方網頁把JS下載到資料夾之後引用到網頁裡。
1. 首先點選Add library後選擇AngularJS Stable,這樣該平台就會加入AngularJS的函式庫進入頁面。
2. 在標籤中,加入ng-app的屬性,讓整份文件都可以使用AngularJS。
3. 接下來就可以在左手邊body標籤內開始輸入一些程式碼來測試,AngularJS在輸出方面有個基本的結構式「{{ }}」,大家輸入以下的程式碼來測試看看結果:
<!DOCTYPE html> <html ng-app> <head> <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.3.2/angular.min.js"></script> <meta charset="utf-8"> <title>JS Bin</title> </head> <body> <p>{{ '馬老師雲端研究室' }}</p> <p>35+62={{ 35+62 }}</p> <p>NT{{ 62000 | currency }}</p> </body> </html>
可以看到輸出的結果應該是:(在JS Bin上面看AngularJS輸出結果)
馬老師雲端研究室 35+62=97 NT$62,000.00
同樣的如果我們要利用jQuery來完成這樣的頁面,程式碼就會變成:(在JS Bin上面看jQuery輸出結果)
<!DOCTYPE html> <html> <head> <script src="https://code.jquery.com/jquery-1.11.1.min.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/numeral.js/1.4.5/numeral.min.js"></script> <meta charset="utf-8"> <title>JS Bin</title> </head> <body> <p></p> <p></p> <p></p> </body> </html> <script> $("p:eq(0)").text('馬老師雲端研究室') $("p:eq(1)").text('35+62=' + (35 + 62)) $("p:eq(2)").text('NT' + (numeral(62000).format('$ 0,0.00'))) </script>
請注意,為了要完成第三項貨幣型式的呈現,我們還必須去引用這個網站的jQuery Plugin才有辦法比較輕鬆的實現。從上面的案例可以看的出來jQuery是由HTML DOM來抓到對象,再針對對象做操作,而AngularJS不管顯示的效果為何,就是在需要有程式運算的地方出現,所以AngularJS也被稱為符合MVC結構的Javascript函式庫(MVC是一種寫程式的結構,全名是Model View Controller,大家可以上網Google就可以查到很多與MVC相關的資料),但如果你有進入官網,可以看到官網上他的標題是「AngularJS – Superheroic JavaScript MVW Framework」,翻譯成中文大概是「AngularJS是一個符合MV…Whatever什麼什麼隨便啦!的超級函式庫」,可以看出Google的惡搞功夫。
再來示範第二個案例,本案例利用購物行為來製作相關的頁面讓大家參考,程式碼如下:
<!DOCTYPE html> <html ng-app> <head> <script src="http://ajax.googleapis.com/ajax/libs/angularjs/1.3.2/angular.min.js"></script> <meta charset="utf-8"> <title>JS Bin</title> </head> <body ng-init="stock=120;price=325;quantity=1;total=0"> <p>馬老師雲端研究室 滑鼠墊</p> <p>剩餘:<span ng-model="stock">{{ stock-quantity }}</span>個</p> <p>單價:<span ng-model="price">{{ price | currency:"NT$":0 }}</span>元</p> <p>數量:<input type="number" min="0" max="{{ stock }}" ng-model="quantity"></p> <p>總金額:<span ng-model="total">{{ price*quantity | currency:"NT$":0 }}</span></p> </body> </html>
輸出結果:(在JS Bin上面看AngularJS輸出結果)
在這個案例裡面有四個項目,分別是商品剩餘數量、單價、數量、總金額,使用者唯一可以改變的只有數量,但頁面中會自動運算剩餘數量和總金額,其中在語法body標籤中,加上了ng-init屬性,代表設定這幾個項目的預設值,stock(剩餘數量)120個、price(單價)325元、quantity(數量)1個,total(總金額)325元。接下來在span內的ng-model就是去綁定該定義項目,{{ }}則是顯示該項目或運算結果,另外貨幣格式的部分,也是用了一些設定讓貨幣在這個案例裡面顯示得更為接近台幣格式,另外還是用HTML5 input標籤的min和max來限制欄位內的值。 而這個案例如果轉換為jQuery的寫法,大概會是下面這樣子:(在JS Bin上面看jQuery輸出結果)
<!DOCTYPE html> <html> <head> <script src="http://code.jquery.com/jquery-1.11.1.min.js"></script> <script src="http://cdnjs.cloudflare.com/ajax/libs/numeral.js/1.4.5/numeral.min.js"></script> <meta charset="utf-8"> <title>JS Bin</title> </head> <body> <p>馬老師雲端研究室 滑鼠墊</p> <p>剩餘:<span id="stock"></span>個</p> <p>單價:<span id="price"></span>元</p> <p>數量:<input type="number" min="0" ng-model="quantity" id="quantity"></p> <p>總金額:<span id="total"></span>元</p> </body> </html> <script> var stock = 120; var price = 325; var quantity = 1; var total = 325; $("#stock").text(stock) $("#price").text('NT' + (numeral(price).format('$ 0,0'))) $("#quantity").val(quantity).attr( "max", stock) $("#total").text('NT' + (numeral(total).format('$ 0,0'))) $("#quantity").change(function () { quantity = $(this).val() newstock = stock - $(this).val() total = price * $(this).val() $("#stock").text( newstock) $("#price").text('NT' + (numeral(price).format('$ 0,0'))) $("#total").text('NT' + ( numeral(total).format('$ 0,0'))) }) </script>
後記:以上兩個案例示範的是jQuery和AngularJS在撰寫頁面的不同,不過因為這篇文章原本就是要以AngularJS為主,所以挑的案例當然會是AngularJS比較佔優勢的內容,還是跟我常說的一樣,做不同的東西就要用不同的工具,用錯了工具不是做不到,但可能是會事倍功半的!另外文章中的程式碼,都是嵌入遠端的JS檔,所以也可以把整個程式碼複製到你熟悉的網頁開發軟體內,一樣會看到同樣的結果喔!
canadian pharmacy india: Canadian Pharmacy – canada cloud pharmacy
{Tôi đã cực kỳ hài lòng khám phá trang web này. Tôi cần cảm ơn bạn {vì đã|dành thời gian cho|chỉ vì điều này|vì điều này|cho bài đọc tuyệt vời này!! Tôi chắc chắn thực sự thích từng của nó và tôi cũng đã đánh dấu trang để xem thông tin mới trên trang web của bạn.|Tôi có thể chỉ nói rằng thật thoải mái để khám phá một người mà thực sự hiểu họ là gì thảo luận trên internet. Bạn thực sự hiểu cách đưa một rắc rối ra ánh sáng và làm cho nó trở nên quan trọng. Nhiều người hơn cần phải kiểm tra điều này và hiểu khía cạnh này của. Thật ngạc nhiên bạn không nổi tiếng hơn vì bạn chắc chắn sở hữu món quà.|Rất tốt bài viết. Tôi chắc chắn yêu thích trang web này. Tiếp tục làm tốt!|Thật khó đến những người có hiểu biết sâu rộng về điều này, tuy nhiên, bạn có vẻ bạn biết mình đang nói gì! Cảm ơn|Bạn cần tham gia một cuộc thi dành cho một trang web trên internet hữu ích nhất. Tôi sẽ khuyến nghị trang web này!|Một động lực đáng giá bình luận. Tôi tin rằng bạn nên viết thêm về chủ đề này, nó có thể không là một điều cấm kỵ vấn đề nhưng thường xuyên mọi người không thảo luận vấn đề như vậy. Đến phần tiếp theo! Trân trọng.|Chào buổi sáng! Tôi chỉ muốn cho bạn một rất cho thông tin tuyệt vời bạn có ngay tại đây trên bài đăng này. Tôi đang quay lại trang web của bạn để biết thêm thông tin sớm nhất.|Khi tôi ban đầu để lại bình luận tôi có vẻ như đã nhấp hộp kiểm -Thông báo cho tôi khi có bình luận mới- và từ bây giờ bất cứ khi nào có bình luận được thêm vào tôi nhận được 4 email cùng chính xác một bình luận. Có một phương pháp dễ dàng bạn có thể xóa tôi khỏi dịch vụ đó không? Cảm kích.|Lần sau nữa Tôi đọc một blog, Tôi hy vọng rằng nó không thất bại nhiều như bài này. Rốt cuộc, Tôi biết điều đó là sự lựa chọn của tôi để đọc hết, nhưng tôi thực sự tin bạn sẽ có điều gì đó thú vị để nói. Tất cả những gì tôi nghe được là một loạt tiếng rên rỉ về điều gì đó mà bạn có thể sửa nếu bạn không quá bận tìm kiếm sự chú ý.|Đúng với bài viết này, tôi thực sự cảm thấy trang web tuyệt vời này cần nhiều hơn nữa sự chú ý.
cefdinir 300mg us – omnicef usa buy clindamycin sale
{Tôi đã cực kỳ hài lòng khám phá trang này. Tôi muốn cảm ơn bạn {vì đã|dành thời gian cho|chỉ vì điều này|vì điều này|cho bài đọc tuyệt vời này!! Tôi chắc chắn thích thú từng một chút nó và tôi cũng đã đánh dấu để xem thông tin mới trên trang web của bạn.|Tôi có thể chỉ nói rằng thật nhẹ nhõm để khám phá một cá nhân mà thực sự biết họ là gì đang nói về trực tuyến. Bạn chắc chắn biết cách đưa một vấn đề ra ánh sáng và làm cho nó trở nên quan trọng. Nhiều người hơn nữa nên xem điều này và hiểu khía cạnh này câu chuyện của bạn. Tôi đã ngạc nhiên rằng bạn không nổi tiếng hơn vì bạn chắc chắn nhất có món quà.|Rất hay bài đăng. Tôi hoàn toàn yêu thích trang web này. Tiếp tục viết!|Thật khó tìm những người có học thức về điều này, tuy nhiên, bạn có vẻ bạn biết mình đang nói gì! Cảm ơn|Bạn cần tham gia một cuộc thi dành cho một trang web trên web tốt nhất. Tôi chắc chắn sẽ khuyến nghị blog này!|Một động lực chắc chắn đáng giá bình luận. Tôi tin rằng bạn nên viết thêm về chủ đề này, nó có thể không là một điều cấm kỵ vấn đề nhưng điển hình mọi người không nói về chủ đề những điều này. Đến phần tiếp theo! Trân trọng!|Xin chào! Tôi chỉ muốn cho bạn một rất to cho thông tin xuất sắc bạn có ngay tại đây trên bài đăng này. Tôi sẽ là quay lại trang web của bạn để biết thêm thông tin sớm nhất.|Khi tôi ban đầu để lại bình luận tôi có vẻ như đã nhấp hộp kiểm -Thông báo cho tôi khi có bình luận mới- và từ bây giờ bất cứ khi nào có bình luận được thêm vào tôi nhận được 4 email cùng chính xác một bình luận. Phải có một phương pháp dễ dàng bạn có thể xóa tôi khỏi dịch vụ đó không? Cảm ơn.|Lần sau Tôi đọc một blog, Hy vọng rằng nó không thất bại nhiều như bài này. Rốt cuộc, Vâng, đó là sự lựa chọn của tôi để đọc, dù sao thì tôi thực sự nghĩ bạn sẽ có điều gì đó hữu ích để nói về. Tất cả những gì tôi nghe được là một loạt khóc lóc về điều gì đó mà bạn có thể sửa nếu bạn không quá bận tìm kiếm sự chú ý.|Đúng với bài viết này, tôi thực sự nghĩ trang web này cần nhiều hơn nữa sự chú ý.
neurontin 600 mg tablet: medicine neurontin 300 mg – cost of neurontin 100mg
{Tôi đã khá hài lòng khám phá trang web này. Tôi cần cảm ơn bạn {vì đã|dành thời gian cho|chỉ vì điều này|vì điều này|cho bài đọc tuyệt vời này!! Tôi chắc chắn thích thú từng của nó và tôi cũng đã đánh dấu trang để xem thông tin mới trong trang web của bạn.|Tôi có thể chỉ nói rằng thật nhẹ nhõm để tìm thấy một người mà thực sự hiểu họ là gì thảo luận trên mạng. Bạn chắc chắn hiểu cách đưa một vấn đề ra ánh sáng và làm cho nó trở nên quan trọng. Nhiều người hơn nữa nên đọc điều này và hiểu khía cạnh này câu chuyện của bạn. Thật ngạc nhiên bạn không nổi tiếng hơn cho rằng bạn chắc chắn nhất có món quà.|Tốt bài viết trên blog. Tôi hoàn toàn yêu thích trang web này. Tiếp tục với nó!|Thật gần như không thể tìm thấy những người hiểu biết trong chủ đề cụ thể này, nhưng bạn nghe có vẻ bạn biết mình đang nói gì! Cảm ơn|Bạn cần là một phần của một cuộc thi dành cho một trang web trên web tốt nhất. Tôi chắc chắn sẽ khuyến nghị trang web này!|Một hấp dẫn chắc chắn đáng giá bình luận. Không còn nghi ngờ gì nữa rằng bạn nên viết thêm về chủ đề này, nó có thể không là một điều cấm kỵ vấn đề nhưng thường xuyên mọi người không nói về vấn đề như vậy. Đến phần tiếp theo! Chúc mọi điều tốt đẹp nhất!|Xin chào! Tôi chỉ muốn cho bạn một rất to cho thông tin xuất sắc bạn có ngay tại đây trên bài đăng này. Tôi đang quay lại trang web của bạn để biết thêm thông tin sớm nhất.|Sau khi tôi ban đầu bình luận tôi có vẻ như đã nhấp vào hộp kiểm -Thông báo cho tôi khi có bình luận mới- và từ bây giờ mỗi lần được thêm vào tôi nhận được bốn email cùng chính xác một bình luận. Phải có một cách bạn có thể xóa tôi khỏi dịch vụ đó không? Chúc mừng.|Lần sau Tôi đọc một blog, Tôi hy vọng rằng nó không làm tôi thất vọng nhiều như bài này. Rốt cuộc, Tôi biết điều đó là sự lựa chọn của tôi để đọc, tuy nhiên tôi thực sự nghĩ bạn sẽ có điều gì đó hữu ích để nói về. Tất cả những gì tôi nghe được là một loạt phàn nàn về điều gì đó mà bạn có thể sửa nếu bạn không quá bận tìm kiếm sự chú ý.|Đúng với bài viết này, tôi hoàn toàn cảm thấy trang web này cần nhiều hơn nữa sự chú ý.
neurontin 2400 mg: 32 neurontin – neurontin 300 mg price in india
{Tôi đã háo hức khám phá trang web này. Tôi muốn cảm ơn bạn {vì đã|dành thời gian cho|chỉ vì điều này|vì điều này|cho bài đọc tuyệt vời này!! Tôi chắc chắn thích từng một phần nó và tôi đã đã đánh dấu trang để xem điều mới trên trang web của bạn.|Tôi có thể chỉ nói rằng thật thoải mái để khám phá một người mà thực sự biết họ là gì thảo luận trực tuyến. Bạn chắc chắn hiểu cách đưa một rắc rối ra ánh sáng và làm cho nó trở nên quan trọng. Nhiều người hơn nên đọc điều này và hiểu khía cạnh này câu chuyện của bạn. Tôi đã ngạc nhiên bạn không nổi tiếng hơn vì bạn chắc chắn có món quà.|Tốt bài viết. Tôi chắc chắn đánh giá cao trang web này. Cảm ơn!|Thật gần như không thể tìm thấy những người hiểu biết về điều này, nhưng bạn nghe có vẻ bạn biết mình đang nói gì! Cảm ơn|Bạn nên tham gia một cuộc thi dành cho một blog trên web hữu ích nhất. Tôi sẽ Rất khuyến nghị blog này!|Một hấp dẫn đáng giá bình luận. Không còn nghi ngờ gì nữa rằng bạn nên xuất bản thêm về chủ đề này, nó có thể không là một điều cấm kỵ chủ đề nhưng điển hình mọi người không thảo luận những chủ đề những điều này. Đến phần tiếp theo! Trân trọng.|Chào buổi sáng! Tôi chỉ muốn cho bạn một rất cho thông tin tuyệt vời bạn có ở đây trên bài đăng này. Tôi sẽ là quay lại trang web của bạn để biết thêm thông tin sớm nhất.|Khi tôi ban đầu để lại bình luận tôi có vẻ như đã nhấp vào hộp kiểm -Thông báo cho tôi khi có bình luận mới- và bây giờ mỗi lần được thêm vào tôi nhận được bốn email có cùng nội dung. Có lẽ có một phương pháp dễ dàng bạn có thể xóa tôi khỏi dịch vụ đó không? Kudos.|Lần sau nữa Tôi đọc một blog, Hy vọng rằng nó không làm tôi thất vọng nhiều như bài này. Rốt cuộc, Tôi biết điều đó là sự lựa chọn của tôi để đọc hết, nhưng tôi thực sự nghĩ bạn sẽ có điều gì đó hữu ích để nói. Tất cả những gì tôi nghe được là một loạt khóc lóc về điều gì đó mà bạn có thể sửa nếu bạn không quá bận tìm kiếm sự chú ý.|Đúng với bài viết này, tôi thực sự nghĩ trang web tuyệt vời này cần nhiều hơn nữa sự chú ý.
ventolin 100mcg online: Ventolin inhaler best price – ventolin 6.7g
Hi! I simply want to offer you a big thumbs up for the excellent info you have here on this post. I am coming back to your website for more soon.
furosemida: lasix tablet – lasix generic name
Hi, I do think your blog could be having browser compatibility issues. When I take a look at your website in Safari, it looks fine however, if opening in IE, it has some overlapping issues. I merely wanted to provide you with a quick heads up! Aside from that, wonderful blog!
ventolin purchase: buy Ventolin – ventolin 50 mg
Everything is very open with a very clear description of the issues. It was really informative. Your site is extremely helpful. Thanks for sharing!
This is amazing! Filled with helpful details and extremely clear. Thanks for offering this.
can i buy ventolin over the counter singapore: ventolin online nz – ventolin over the counter
ANSWER: Suicide is unfortunately too common and little discussed.
The internet is one place to get low price of is sildenafil the same as viagra the fast and easy way. Top pharmacies provide excellent service
The blood clots don’t just stay there, they are dissolved by the blood thinners, Coumadin or Lovenox.
More language questions googletag.
People with low incomes are likely to can sildenafil cause ed and manage your health problem
The woman must consult a doctor immediately so that miscarriage can be stopped.
I blog frequently and I truly thank you for your information. The article has really peaked my interest. I am going to book mark your website and keep checking for new information about once per week. I opted in for your Feed too.
Like in the previous examples, constructed out the remaining segments of the horn, creating the amount by alternating the areas of mild and shadow.
This is a topic which is close to my heart… Best wishes! Where are your contact details though?
Hey there Sean. I googled “I’m transferring to thailand” and your web page came up.
Discuss the options for colorectal cancer prevention and screening with your health care provider.
Legitimate Internet privacies provide a convenient way to buy п»їlevitra and save your money.
Boiling or cleaning them with alcohol does not guarantee that they’re sterile and safe.
Anyone experiencing any of these symptoms should seek immediate medical attention.
best prices can be located by making use of online promotions to online pharmacy uk orlistat guarantee top performance?
Pineal astrocytic tumor any grade : A pineal astrocytic tumor forms in tissue around the pineal gland and may be any grade.
ventolin inhaler no prescription: Ventolin inhaler price – ventolin tabs 4mg
ordering neurontin online: neurontin cap 300mg – cost of neurontin 800 mg
neurontin 300mg capsule: neurontin 600 mg cost – neurontin 4 mg
Helpful Blog! We appeared to be just discussing there are lots screwy outcomes at the issue you now purely changed my very own belief. Thank you really significantly a perfect write-up
Howdy, There’s no doubt that your website could be having web browser compatibility problems. Whenever I look at your blog in Safari, it looks fine however, if opening in I.E., it has some overlapping issues. I simply wanted to provide you with a quick heads up! Other than that, fantastic website.
Howdy! I could have sworn I’ve been to this site before but after going through some of the posts I realized it’s new to me. Regardless, I’m certainly pleased I came across it and I’ll be bookmarking it and checking back frequently.