SeaJS ialah rangka kerja pemuatan modul JavaScript yang mengikut spesifikasi CommonJS. Ia adalah alat pemuatan modul moden untuk pembangunan web, memberikan pengalaman modular yang ringkas dan muktamad. Sea.js diselenggara bersama oleh Alibaba, Tencent dan syarikat lain.
Faedah menggunakan Sea.js:
Sea.js mengikuti cara penulisan dan penyusunan kod yang mudah dan semula jadi, serta mempunyai ciri teras berikut:
Spesifikasi definisi modul yang ringkas dan mesra: Sea.js mengikut spesifikasi CMD dan boleh menulis kod modul seperti Node.js.
Organisasi kod semula jadi dan intuitif: pemuatan automatik kebergantungan dan konfigurasi ringkas dan jelas membolehkan kami menikmati pengekodan lebih banyak.
Sea.js juga menyediakan pemalam yang biasa digunakan, yang sangat membantu untuk pembangunan, penyahpepijatan dan pengoptimuman prestasi, serta mempunyai antara muka yang boleh dikembangkan yang kaya.
Berikut ialah pengenalan kepada tiga mod penulisan modul di laut.js
Gunakan eksport ialah objek yang digunakan untuk menyediakan antara muka modul kepada dunia luar.
define(function (require, exports, module) { var a = require("./init"); var fun1 = function () { return a.write("模块main调用模块init的write方法"); }; exports.fun1=fun1; });
Selain menambah ahli pada objek eksport, anda juga boleh menggunakan return untuk menyediakan antara muka secara langsung kepada dunia luar.
define(function(require,exports,module){ var a = require("./init"); var fun1 = function () { return a.write("模块main调用模块init的write方法"); }; return{ fun1:fun1 } })
Jika modul tidak mempunyai sebarang logik perniagaan dan hanya mengembalikan objek, ia boleh dipermudahkan kepada yang berikut
define({ fun1 : function () { alert("模块main的fun1调用成功") } });
Kaedah lain ialah menyediakan antara muka bersatu kepada dunia luar melalui modul.eksport Contohnya:
define(function(require,exports,module){ var a = require("./init");// ./是当前目录 ../是上级目录 /是根目录 var fun1 = function () { return a.write("模块main调用模块init的write方法"); }; exports.b=function(){ //没有任何意义,赋值无效 alert("bb") }; module.exports={ fun1:fun1 } });
eksport hanyalah rujukan kepada module.exports. Apabila eksport ditetapkan semula dalam kaedah, nilai module.exports tidak akan diubah. Oleh itu, memberikan nilai kepada eksport adalah tidak sah Kaedah di atas hanya mendedahkan satu fun1 kepada luar Tugasan kaedah b di atas adalah tidak sah dan tidak boleh digunakan untuk menukar antara muka modul.
eksport.async()
require.async(id||[], panggil balik?)
Kaedah require.async digunakan untuk memuatkan modul secara tidak segerak di dalam modul dan melaksanakan panggilan balik yang ditentukan selepas pemuatan selesai. Parameter panggil balik adalah pilihan.
define(function(require,exports,module){ require.async('./init',function(a){ a.write("模块main调用模块init的write方法") }); require.async(['./init',"./search"],function(a,b){ a.write("模块main调用模块init的write方法"); b.search("search模块成功引入") }); });
Modul modul ialah objek yang menyimpan beberapa sifat dan kaedah yang dikaitkan dengan modul semasa.
1 modul.id Rentetan
Pengecam unik modul.
2 modul.uri Rentetan
Laluan mutlak modul yang diperolehi mengikut peraturan penghuraian laluan sistem modul Dalam keadaan biasa (apabila parameter id tidak ditulis tangan dalam define), nilai module.id ialah module.uri, dan ia adalah. betul-betul sama.
3 module.dependencies Array
kebergantungan ialah tatasusunan yang mewakili kebergantungan modul semasa.