Xin kinh nghiệm áp dụng AngularJS vào thực tế

bạn nên làm một ví dụ về Angular JS, đọc hiểu kiến trúc rồi sẽ hiểu.

Cứ view source, find .js thấy có cái angular.js là biết liền bạn à

http://vibigaba.esy.es-hello world

Trang nhà bạn xài jQuery thui chứ angular cái gì bạn!!!
<script type="text/javascript" src="/js/pre/queryloader2.min.js"></script>
<script type="text/javascript" src="/lib/jquery/jquery-2.1.1.min.js"></script>
<script type="text/javascript" src="/lib/bootstrap/3.3.6/js/bootstrap.min.js"></script>
<script type="text/javascript" src="/lib/select2/select2.min.js"></script>
<script type="text/javascript" src="/lib/validate/jquery.validate.min.js"></script>
<script type="text/javascript" src="/lib/twitter-bootstrap-wizard/jquery.bootstrap.wizard.min.js"></script>
<script type="text/javascript" src="/lib/lazyload/jquery.lazyload.min.js"></script>
<script type="text/javascript" src="/lib/image-map-resizer/imageMapResizer.min.js"></script>
<script type="text/javascript" src="/js/pre/pre-login.min.js?v=15"></script>

Toàn một đống thư viện của jquery, bootstrap???
Đã xài cái angular thì chả cần cái jquery validate làm chi cho mệt!!!

Mình nghĩ là angular xài cho back end mới thể hiện được sức mạnh của nó???

vả lại angular js là sự phủ định của jQuery ( angular chứa hàng tá các function của jQuery),
Phủ định luôn của route của server chẳng hạn như route của CodeIgniter.

thế hệ của nó là bạn đồng hành của note.js

Sai cơ bản, angular dùng làm front-end, hoạt động ở client side.

Sai nốt, angular.element sẽ gọi function jquery nếu đang dùng, nếu không thì sẽ jqLite.

2 Likes

Câu 2: “sẽ gọi function jquery nếu đang dùng, nếu không thì sẽ jqLite” điều này có nghĩa là không có mợ (jQuery) thì chợ vẫn đông (jqLite) phải không bạn. --> Angular chỉ hữu nghị cho bạn jQuery chơi chung thội í …

Giả sử trang web bạn có 2 cái thế này

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>

<script src="http://ajax.googleapis.com/ajax/libs/angularjs/1.4.8/angular.min.js"></script>

Thì việc gì bạn lại không disabled cái jQuery cho rãnh nợ (nhẹ cho web hơn)

Câu 1: từ từ mình trả lại sau nhé vì có nhiều liên quan đến khái niệm front end và back end

Mình quan niệm về front end và back end như thế này, bạn cho ý kiến nhé.

Giả sử mình có một công ty và đặc biệt là công ty mình làm việc tất tần tật trên web ( có thể bọn google làm thế). Như vậy trang web của mình gồm 2 phần, một là các giao diện làm việc của “tất cả” các nhân viên của công ty, phần thứ 2 là phần còn lại của thế giới. Mình gọi phần 1 là back end, phần 2 mình gọi là front end …end

Cái chú nói nó không gọi là back-end, nó là internal system, không public ra bên ngoài. nếu nói như chú chỉ cần nó public cái này ra ngoài thì nó thành front end ah?
Khái niệm thì phải rõ và được người nhiều người chấp nhận,
front end: phần xử lý tương tác trực tiếp với người dùng: (appl hay web điều thế)
back end : xử lý về data, và xử lý trên remote server.

bởi vì chú nói phủ định tức là nó có thể thay thế jquery, cái này là không đúng, nó có thể không dùng jquery nhưng không có nghĩa là thay thế đươc.

1 Like

Angular’s jqLite

jqLite provides only the following jQuery methods:

addClass() - Does not support a function as first argument
after()
append()
attr() - Does not support functions as parameters
bind() - Does not support namespaces, selectors or eventData
children() - Does not support selectors
clone()
contents()
css() - Only retrieves inline-styles, does not call getComputedStyle(). As a setter, does not convert numbers to strings or append 'px', and also does not have automatic property prefixing.
data()
detach()
empty()
eq()
find() - Limited to lookups by tag name
hasClass()
html()
next() - Does not support selectors
on() - Does not support namespaces, selectors or eventData
off() - Does not support namespaces, selectors or event object as parameter
one() - Does not support namespaces or selectors
parent() - Does not support selectors
prepend()
prop()
ready()
remove()
removeAttr()
removeClass() - Does not support a function as first argument
removeData()
replaceWith()
text()
toggleClass() - Does not support a function as first argument
triggerHandler() - Passes a dummy event object to handlers
unbind() - Does not support namespaces or event object as parameter
val()
wrap()

Nhìn thấy một đống binh mã của nó chưa, nó đầy đủ để người dùng không cần dùng jQuery nữa
cái nào cũng có thậm chí:

Hàm convert json to string trong jQuery là :JSON.stringify({id:1,ten:“ten den ho”})
của nó là angular.toJson({…})

selector : $("#myDiv")
của nó là angular.element("#myDiv")

tóm lại nó chiếm võ đài của jQuery…hix hix hix :astonished:

Thực ra theo mình nghĩ thì angular là sự kết hợp của jQuery và ui widget, có thời gian mình cũng thích cái ui widget này, nhưng nay có angular thì khỏi cần nữa…

Mình làm 1 project về AngularJS 1.x và nhận xét như sau: AngularJS 1.x là 1 framework thiết kế tốt nhưng nhiều cái khá dở:

  • Mình không thể tạo 2 variable, constant hay controller có cùng tên trong 2 module khác nhau được!!!.
  • Nếu việc xử lý quá nhiều làm cho trang bị trễ, vd nếu một view mà có cái table cỡ 10 cột, 100 dòng và thêm phần localization, biểu đồ, thì nó sẽ mất gần nửa giây để render và hiển thị ra.
  • Scope trở nên thừa, mà nếu dùng scope nhiều mình sẽ khó biết cái model trên template nó nằm ở controller nào. thay vào đó mình dùng từ khóa this.
  • Các directive toàn là những cái làm cho jQuery chạy được trên Angular, trong khi ng ta khuyên nên bỏ jQuery khi làm việc với Angular.
  • Và quan trọng là code AngularJS chẳng có cảm giác code Javascript gì cả. Các cấu trúc có sẵn, và mình chỉ nhét code vào.

Tin vui là Angular2 sẽ khắc phục được những nhược điểm trên (Mình nghe nói thế).

Mình mới học angular thôi nhưng mình thích angular 1 thôi, cái angular 2 kia đọc khó hiểu quá, chắc có lẽ phải sử dụng thành thục cái angular 1 rồi mới tới cái angular 2 kia.

“Scope trở nên thừa, mà nếu dùng scope nhiều mình sẽ khó biết cái model trên template nó nằm ở controller nào. thay vào đó mình dùng từ khóa this.” cái này hay đấy bạn mình thấy người ta hay xài, vả lại nó khiến cho biến này thành private cũng tốt thôi, để xài thử cho biết, vậy là không cần inject cái $scope nữa à?

Còn cái route của angular mình cũng không chơi bởi vì thích xài cái mvc của Codeigniter, việc kết hợp của angular1 + Codeigniter mình thấy cũng ăn ý lém.

Xu hướng hiện nay là :slight_smile:
angular (client ) + nodejs (server) + bootstrap ( css)

Xài angular cho table bạn có cái tip nào không?

ý mình nói là hiển thị một data table vào table html, sau đó add,del,edit, and final is save all to data server!!! ( cái này tui ADO.net gọi là update table )

đau ai nói cái này, và đa số nếu không có gì đăc biệt thì không cần jquery.
cái ta nói là dùng “phủ định” là không đúng.

Cái này do toàn bộ chỉ xài 1 “ng-app”. toàn bô các module khác điều được inject vào module cha, cho nên về mặt lý thuyết nó sẽ không phân biệt được dùng cái nào. (hình như là nó sẽ hiểu cái load sau cùng).

Dùng ui-grid

1 Like

uh ui-grid hả, thấy nó đẩy vào một đống js thấy oải

1 file js với 1 file css là ok rồi

1 Like

Mình thích làm thế này

http://vibigaba.esy.es/index.php/tut_jquery/view/24/order%20implement

Cái nào cũng public ra ngoài cả, duy cái cho nội bộ thì mình đóng một cái chình ìnch login vào. Dạo qua internet mình thấy khái niệm front và back end vẫn còn mơ hồ lắm. Mình thích khái niệm này hơn.:sunglasses:

Cứ có _ngcontent là biết ợ
div _ngcontent-c2="" class=“col-md-4 float-left”>TEXT1</div

83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?