Il s'agit de la 7ème partie de cette série JavaScript (en tant que partie du tout) et dans cette partie, nous verrons comment décomposer nos projets en petits morceaux afin qu'ils soient maniable. Nous créerons une sorte de séparation des préoccupations, rendant notre projet attrayant et facile à naviguer. Dans toute chose, il y a une partie belle et bien sûr une partie laide. Alors n’en faites pas trop. Faites-le quand cela doit être fait.
Comme mentionné précédemment, notre objectif ici est de diviser une partie de notre projet dans un fichier séparé, de l'exporter, puis de l'importer dans notre "application principale". Il existe actuellement deux façons de procéder en JavaScript. Utiliser l'approche commonjs ainsi que l'approche modulaire de l'ES6. Ils sont tous géniaux et nous examinerons les deux.
L'importation et l'exportation avec commonjs sont la valeur par défaut lorsqu'elles ne sont pas spécifiées. C'est ainsi que nous pourrions faire, const readline = require("readline");. readline est un package intégré. Nous pouvons utiliser cette approche sur les packages ou modules tiers écrits dans notre projet.
Commençons par un projet pour effectuer quelques mathématiques. Nous allons créer des fonctions pour ajouter et soustraire. Juste ces deux-là.
{ "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 }
Vous êtes censé implémenter ces fonctions vous-même ?
La question est, comment exporter des sous ? Essayez-le et accédez-y dans main.js
Sachez que, lorsque nous le faisons, module.exports = X, X est exporté dans son ensemble, donc lorsque nous importons const moduleName = require("moduleName");, nous avons directement accès à X. Nous ne peut pas exporter une autre valeur avec cette même approche.
Dans un cas comme celui-ci, nous pouvons exporter à la fois l'ajout et le sous en les exportant en tant que groupe (objet).
{ "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 }
Le module lib est exporté en tant qu'objet donc nous pouvons faire, moduleName.add et moduleName.sub.
On peut aussi importer en faisant par déstructuration, 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));
Ou
function sub(x, y) { // returns the difference x and y }
L'importation et l'exportation avec le style de module ES ne sont pas la valeur par défaut actuellement et doivent donc être spécifiées explicitement en définissant la propriété type sur "module" dans le package.json fichier. Dans ce cas, nous pourrions importer readline depuis "readline" ; au lieu de const readline = require("readline");. Nous avons remplacé le const par import, le = et require par from.
Nous allons construire un projet similaire en utilisant le style d'importation et d'exportation du module ES. Nous allons créer des fonctions pour ajouter et soustraire comme nous l’avons fait précédemment. Vous pouvez donc le copier et le coller cette fois.
module.exports = { add, sub };
Créez deux fichiers, lib.js et main.js : touchez lib.js main.js
Implémentez le corps de l'ajout dans le 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 };
Ou
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": "" }
OU
function add(x, y) { // return the sum of x and y }
Utiliser le style d'importation et d'exportation du module commonjs ou es est relatif. commonjs n'est livré avec aucune configuration, on pourrait donc se demander pourquoi ne pas l'utiliser tel quel ? module.exports = someObject est identique à someObject par défaut d'exportation. Nous pouvons importer avec const someObject = require("pathToModule"); et importez someObject depuis "pathToModule" ;. J'aime dire, celui que vous choisissez est acceptable. Vous pouvez avoir un export module/par défaut ainsi que des exports individuels dans le même fichier.
Voici quelques règles que j'essaie de respecter lorsque je développe mes projets backend :
Pouvez-vous deviner la suite ? Eh bien, nous commencerions à faire de la magie backend. Nous allons commencer le développement backend.
Si cela vous met au défi, réécrivez le programme Mastermind en utilisant plusieurs fichiers. Pendant que je suis sur le sujet, je vais vous mettre au défi. Terminez ce projet. Soit vous le réécrivez pour que cela fonctionne, soit vous faites tout ce que vous devez faire pour que cela fonctionne et appliquez la leçon d'aujourd'hui.
{ "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": "" }
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!