Ini adalah bahagian ke-7 Siri JavaScript ini (sebagai sebahagian daripada keseluruhan) dan dalam bahagian ini, kami akan melihat bagaimana untuk memecahkan projek kami kepada kepingan kecil supaya ia terurus. Kami akan mencipta beberapa jenis pengasingan kebimbangan, menjadikan projek kami menarik dan mudah dinavigasi. Dalam semua perkara, ada bahagian yang cantik dan sudah tentu bahagian yang hodoh. Jadi, jangan berlebihan. Lakukan apabila ia perlu dilakukan.
Seperti yang dinyatakan sebelum ini, tumpuan kami di sini adalah untuk memecahkan sebahagian daripada projek kami menjadi fail berasingan, mengeksportnya dan kemudian mengimportnya ke dalam "apl utama" kami. Pada masa ini terdapat dua cara untuk melakukan ini dalam JavaScript. Menggunakan pendekatan commonjs dan juga pendekatan modular ES6. Mereka semua hebat dan kami akan melihat kedua-duanya.
Import dan eksport dengan commonjs ialah lalai apabila tidak dinyatakan. Begitulah yang boleh kita lakukan, const readline = require("readline");. readline ialah pakej terbina dalam. Kami boleh menggunakan pendekatan ini pada pakej atau modul pihak ketiga yang ditulis dalam projek kami.
Mari kita mulakan dengan projek untuk melaksanakan beberapa matematik. Kami akan mencipta fungsi untuk menambah dan menolak. Hanya dua ini.
{ "name": "cmodule", "version": "1.0.0", "main": "index.js", "type": "commonjs", "scripts": { "test": "echo \"Error: no test specified\" && exit 1" }, "keywords": [], "author": "", "license": "ISC", "description": "" }
function add(x, y) { // return the sum of x and y }
module.exports = add;
const lib = require("./lib"); // we did, "./lib", "dot slash lib", because main.js and lib.js are in the same folder. console.log(lib(1, 2));
function sub(x, y) { // returns the difference x and y }
Anda sepatutnya melaksanakan fungsi ini sendiri ?
Persoalannya, bagaimana kita mengeksport sub? Cuba dan aksesnya di dalam main.js
Ketahui bahawa, apabila kita melakukannya, module.exports = X, X dieksport sebagai keseluruhan modul jadi apabila kita mengimport const moduleName = require("moduleName");, kita terus mendapat akses kepada X. Jadi kita tidak boleh mengeksport nilai lain dengan pendekatan yang sama ini.
Dalam kes seperti ini, kita boleh mengeksport kedua-dua add dan sub dengan mengeksportnya sebagai kumpulan (objek).
{ "name": "cmodule", "version": "1.0.0", "main": "index.js", "type": "commonjs", "scripts": { "test": "echo \"Error: no test specified\" && exit 1" }, "keywords": [], "author": "", "license": "ISC", "description": "" }
function add(x, y) { // return the sum of x and y }
Modul lib dieksport sebagai objek supaya kita boleh lakukan, moduleName.add dan moduleName.sub.
Kami juga boleh mengimport dengan melakukan dengan memusnahkan, const { add, sub } = require("./lib");
module.exports = add;
const lib = require("./lib"); // we did, "./lib", "dot slash lib", because main.js and lib.js are in the same folder. console.log(lib(1, 2));
Atau
function sub(x, y) { // returns the difference x and y }
Import dan eksport dengan gaya modul ES bukanlah lalai pada masa ini dan oleh itu mesti dinyatakan secara eksplisit dengan menetapkan sifat jenis kepada "modul" dalam package.json fail. Dalam kes ini, kita akan dapat melakukan, mengimport readline daripada "readline"; bukannya const readline = require("readline");. Kami menggantikan const dengan import, = dan memerlukan dengan daripada.
Kami akan membina projek serupa menggunakan gaya modul ES import dan eksport. Kami akan mencipta fungsi untuk menambah dan menolak seperti yang kami lakukan sebelum ini. Jadi anda boleh salin dan tampal kali ini.
module.exports = { add, sub };
Buat dua fail, lib.js dan main.js: sentuh lib.js main.js
Laksanakan badan untuk penambahan dalam lib.js
{ "name": "cmodule", "version": "1.0.0", "main": "index.js", "type": "commonjs", "scripts": { "test": "echo \"Error: no test specified\" && exit 1" }, "keywords": [], "author": "", "license": "ISC", "description": "" }
function add(x, y) { // return the sum of x and y }
module.exports = add;
const lib = require("./lib"); // we did, "./lib", "dot slash lib", because main.js and lib.js are in the same folder. console.log(lib(1, 2));
function sub(x, y) { // returns the difference x and y }
module.exports = { add, sub };
const lib = require("./lib"); // lib is an object so we can do lib dot someThing console.log(lib.add(1, 2)); console.log(lib.sub(1, 2));
const { add, sub } = require("./lib"); console.log(add(1, 2)); console.log(sub(1, 2));
exports.add = function add(x, y) { // return the sum of x and y }; exports.sub = function sub(x, y) { // return the difference of x and y };
Atau
exports.add = function (x, y) { // return the sum of x and y }; exports.sub = function (x, y) { // return the difference of x and y };
{ "name": "emodule", "version": "1.0.0", "main": "index.js", "type": "module", "scripts": { "test": "echo \"Error: no test specified\" && exit 1" }, "keywords": [], "author": "", "license": "ISC", "description": "" }
ATAU
function add(x, y) { // return the sum of x and y }
Untuk menggunakan gaya import dan eksport modul commonjs atau es adalah relatif. commonjs datang tanpa konfigurasi, jadi seseorang akan bertanya mengapa tidak menggunakannya seperti sedia ada? module.exports = someObject adalah sama seperti export default someObject. Kita boleh mengimport dengan const someObject = require("pathToModule"); dan import someObject dari "pathToModule";. Saya suka berkata, yang mana anda pilih tidak mengapa. Anda boleh mempunyai modul/eksport lalai dan juga eksport individu dalam fail yang sama.
Ini adalah beberapa peraturan yang saya cuba patuhi semasa saya membangunkan projek bahagian belakang saya:
Bolehkah anda meneka apa yang seterusnya? Baiklah, kita akan mula melakukan beberapa sihir bahagian belakang. Kami akan memulakan pembangunan bahagian belakang.
Jika ia mencabar anda, tulis semula program dalang menggunakan berbilang fail. Semasa mengenai topik saya akan mencabar anda. Lengkapkan projek ini. Sama ada tulis semula agar ia berfungsi atau lakukan apa sahaja yang anda perlu lakukan untuk menjadikannya berkesan dan gunakan pelajaran hari ini.
{ "name": "cmodule", "version": "1.0.0", "main": "index.js", "type": "commonjs", "scripts": { "test": "echo \"Error: no test specified\" && exit 1" }, "keywords": [], "author": "", "license": "ISC", "description": "" }
Atas ialah kandungan terperinci Keperluan JavaScript: Bahagian 7. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!