Tôi đã đọc qua các công thức sau đây, trong đó cho thấy một cách để tăng sức mạnh một frontend AngularJS với Google Cloud thiết bị đầu cuối backend:Sự khác nhau giữa init() và window.init() là gì?
Những gì tôi không hiểu phụ lục trên AngularJS và điểm cuối đám mây là khởi tạo. Các phần có liên quan như sau:
Phụ lục: Lời khuyên về AngularJS + điểm cuối đám mây khởi Mẹo # 1: Hãy cẩn thận về trình tự khởi
các lưu bút tải ứng dụng ba thư viện JS khác nhau trong trình tự sau :
- AngularJS
- ứng dụng lưu bút
- Google API Client, whi ch chứa các thiết bị đầu cuối chức năng
Để thực hiện theo trình tự này, index.html chứa
<script>
thẻ sau trong thẻ<head>
cho tải mỗi thư viện JS:<script src="js/angular.min.js"></script> <script src="js/guestbook.js"></script> <script src="https://apis.google.com/js/client.js?onload=init"></script>
Sau khi load, thứ ba thư viện (Ứng dụng khách API của Google) gọi hàm khởi tạo được chỉ định bởi tham số 'onload' của nó. Trong trường hợp này, hàm init() được mong đợi và được gọi. Mẹo # 2: Nhập vào các AngularJS thế giới càng nhanh càng tốt
Trong chuỗi khởi tạo, chúng tôi sử dụng hai chức năng:
init() function window.init() function
init này() chức năng được định nghĩa trong guestbook.js trong những điều sau đây cách:
function init() { window.init(); }
Như bạn có thể thấy đoạn mã trên, chức năng chỉ cần gọi window.init) chức năng (tức là init() chức năng được xác định trong đối tượng cửa sổ toàn cầu) ( và không có gì khác. Các window.init() được định nghĩa trong AngularJS điều khiển như sau:
$window.init= function() { $scope.$apply($scope.load_guestbook_lib); };
Trong AngularJS, các đối tượng cửa sổ toàn cầu được truy cập bởi “$ sổ” ký hiệu mà là một wrapper cho nó. Đó là cách thực hành tốt nhất trong AngularJS không truy cập trực tiếp vào đối tượng cửa sổ để cải thiện khả năng kiểm tra.
Lý do tại sao bạn không muốn thực thi khởi tạo trong phương thức init() đầu tiên() để bạn có thể đặt nhiều mã nhất có thể vào thế giới AngularJS, chẳng hạn như bộ điều khiển, dịch vụ và chỉ thị. Kết quả là bạn có thể khai thác toàn bộ sức mạnh của AngularJS và có tất cả các bài kiểm tra đơn vị, bài kiểm tra tích hợp, v.v.
Dường như chức năng toàn cầu init()
đang được xác định trong tệp javascript bên ngoài.Hàm init()
này chỉ cần gọi window.init()
(và được cho là được gọi bởi thư viện máy khách của Google sau khi nó đã được tải). Nhưng không phải window.init() không có gì ngoài chức năng init()
được định nghĩa toàn cầu? Vì vậy, chúng ta sẽ không nhận được một vòng lặp ở đây cho đến khi window.init()
(và do đó init()
) đang được định nghĩa lại?
Xin don không dựa vào tài nguyên ngoài trang web. Hiển thị mã bạn đang nói đến. Ngắt nguồn tài nguyên ngoài trang web và mọi người không cần phải truy cập tài nguyên để giúp bạn. –