Bu makale makine çevirisi ayna makalesidir, orijinal makaleye geçmek için lütfen buraya tıklayın.

Görünüm: 9631|Yanıt: 0

[JavaScript] require() açıklaması AMD spesifikasyonu

[Bağlantıyı kopyala]
Yayınlandı 13.02.2019 14:01:09 | | |
Bu gönderi en son 2019-2-13 14:04 tarihinde Summer tarafından düzenlenmiştir

2009 yılında Amerikalı programcı Ryan Dahl, sunucu tarafı programlama için JavaScript dilini kullanacak node.js proje yarattı.

Bu, "Javascript modüler programlama"nın doğuşunu işaret eder. Ön tarafın karmaşıklığı sınırlıdır ve modül olmaması normaldir, ancak sunucu tarafında işletim sistemi ve diğer uygulamalarla etkileşime girecek modüller olmalıdır, aksi takdirde hiç programlanamaz.

Düğüm programlamadaki en önemli fikirlerden biri modüllerdir ve bu fikir JavaScript'in büyük ölçekli mühendisliğini mümkün kılmaktadır. Modüler programlama JS dünyasında popülerdi ve buna dayanıyordu; ardından tarayıcı tarafında, requirejs ve seajs gibi araç setleri de, tabiri caizse, ES6'dan önce, hatta şimdi, ES6 modülü tam olarak uygulanmadan önce tüm modüler programlamaları zorunlu kılan araçlar da ortaya çıktı.

CommonJS'de exposure modülü module.exports ve exports kullanır ve birçok kişi neden iki exposed nesne olduğunu anlamıyor, bu nesne daha sonra tanıtılacak

CommonJS'de, modülleri yüklemek için kullanılan küresel bir yöntem require() vardır. Bir matematik modülü varsa math.js, bu şekilde yüklenebilir.



Modül tarafından sağlanan yöntemleri çağırabilirsiniz:

Tam da CommonJS tarafından kullanılan vaadi yöntemi nedeniyle, AMD ve CMD tarafından kullanılan require yöntemi daha sonra modül tarzını ifade etmek için kullanılmıştır

AMD spesifikasyonu

Sunucu tarafı modüllerde, herkesin istemci tarafı modülleri istemesi doğaldır. Ve en iyisi ikisinin uyumlu olması ve bir modülün hem sunucuda hem de tarayıcıda değişiklik yapmadan çalışabilmesi olur.

Ancak, CommonJS spesifikasyonunun tarayıcı ortamlarına uygulanmaz hale getiren büyük bir sınırlama vardır. Önceki bölümdeki kod ise, eğer tarayıcıda çalışıyorsa büyük bir sorun olur



İkinci satır math.add(2, 3) ise ilk satırın gereksiniminden ('math') sonra çalışır, yani math.js yükün bitmesini beklemek zorunda. Yani, yükleme süresi uzunsa, tüm uygulama orada durur ve bekler.

Bu sunucu tarafında bir sorun değildir, çünkü tüm modüller yerel sabit diskte saklanır ve senkron olarak yüklenebilir, bekleme süresi ise sabit diskin okuma süresidir. Ancak tarayıcılar için bu büyük bir sorundur çünkü modüller sunucu tarafında konumlandırılır ve bekleme süresi internet hızının hızına bağlıdır; bu uzun sürebilir ve tarayıcı "askıya alınmış ölüm" durumundadır.


Bu nedenle, tarayıcı tarafı modülleri "senkron" kullanamaz, sadece "asenkron" kullanabilir. Bu, AMD spesifikasyonunun doğuşunun arka planıdır.

AMD, "Asenkron Modül Tanımı" (Asenkron Modül Tanımı) anlamına gelen "Asenkron Modül Tanımı" (Asenkron Modül Tanımı) anlamına gelir. Modülü asenkron olarak yükler ve modülün yüklenmesi, sonraki ifadelerinin işleyişini etkilemez. Bu modüle bağlı olan tüm ifadeler, yükleme tamamlanana kadar çalışmayan bir geri çağırma fonksiyonunda tanımlanır.

Modüller belirli bir define() fonksiyonuyla tanımlanmalıdır.


•ID: dizi, modül adı (isteğe bağlı)
•Dependencies: yüklemek istediğimiz bağımlı modüldür (isteğe bağlı), göreceli yol kullanılarak. , bunun bir dizi formatı olduğunu unutmayın
•fabrika: fabrika yöntemi, modül fonksiyonu döndürür
Bir modül diğer modüllere bağlı değilse, define() fonksiyonunda doğrudan tanımlanabilir.


Modül diğer modüllere de bağımlıysa, define() fonksiyonunun ilk argümanı, modülün bağımlılıklarını gösteren bir dizi olmalıdır.



require() fonksiyonu yukarıdaki modülü yüklediğinde, önce Lib.js dosyayı yükler.

AMD ayrıca modülü yüklemek için require() ifadesini kullanır, ancak CommonJS'nin aksine, iki parametre gerektirir:

İlk parametre [modül] bir dizidir ve içindeki üyeler yüklenecek modüllerdir; İkinci parametre geri çağırması, yük başarılı olduktan sonra geri çağrı fonksiyonudur. Önceki kodu AMD formuna yeniden yazarsanız, şöyle görünür:


math.add() matematik modülü yüklemesiyle senkronize edilmez ve tarayıcı animasyonu askıya almıyor. Yani AMD tarayıcı ortamı için daha uygun.

Şu anda, AMD spesifikasyonunu :require.js ve curl.js uygulayan iki ana Javascript kütüphanesi bulunmaktadır.







Önceki:init: function (){}方法的写法原因
Önümüzdeki:【Pratik Savaş】Kibana 6.5.2 Çin Çince Eğitimi
Feragatname:
Code Farmer Network tarafından yayımlanan tüm yazılım, programlama materyalleri veya makaleler yalnızca öğrenme ve araştırma amaçları içindir; Yukarıdaki içerik ticari veya yasa dışı amaçlarla kullanılamaz, aksi takdirde kullanıcılar tüm sonuçları ödemelidir. Bu sitedeki bilgiler internetten alınmakta olup, telif hakkı anlaşmazlıklarının bu siteyle hiçbir ilgisi yoktur. Yukarıdaki içeriği indirmeden sonraki 24 saat içinde bilgisayarınızdan tamamen silmelisiniz. Programı beğendiyseniz, lütfen orijinal yazılımı destekleyin, kayıt satın alın ve daha iyi orijinal hizmetler alın. Herhangi bir ihlal olursa, lütfen bizimle e-posta yoluyla iletişime geçin.

Mail To:help@itsvse.com