Abbiamo annunciato
Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
Raggruppamento di applicazioni mediante webpack
Le applicazioni Web negli script del browser o l'utilizzo da parte di Node.js dei moduli di codice crea dipendenze. Questi moduli di codice possono avere dipendenze proprie, generando una raccolta di moduli interconnessi richiesti dall'applicazione per funzionare. Per gestire le dipendenze, puoi utilizzare un module bundler come webpack.
Il module bundler webpack analizza il codice dell'applicazione, cercando le istruzioni import
o require
, per creare pacchetti che contengano tutti gli asset di cui l'applicazione ha bisogno affinché gli asset possano essere facilmente forniti attraverso una pagina Web. L'SDK per JavaScript può essere incluso in webpack come una delle dipendenze da includere nel pacchetto di output.
Per ulteriori informazioni su webpack, consulta il module bundler webpack
Installazione di webpack
Per installare il module bundler webpack, devi installare prima npm, il gestore di pacchetti Node.js. Digita il comando seguente per installare il modulo JavaScript e l'interfaccia a riga di comando di webpack.
npm install webpack
Potrebbe anche essere necessario installare un plugin di webpack che consente di caricare i file JSON. Digita il comando seguente per installare il plugin per il caricamento di file JSON.
npm install json-loader
Configurazione di webpack
Per impostazione predefinita, webpack ricerca un file JavaScript denominato webpack.config.js
nella directory principale del tuo progetto. Questo file specifica le opzioni di configurazione. Ecco un esempio di file di configurazione webpack.config.js
.
// Import path for resolving file paths var path = require('path'); module.exports = { // Specify the entry point for our app. entry: [ path.join(__dirname, 'browser.js') ], // Specify the output file containing our bundled code output: { path: __dirname, filename: 'bundle.js' }, module: { /** * Tell webpack how to load 'json' files. * When webpack encounters a 'require()' statement * where a 'json' file is being imported, it will use * the json-loader. */ loaders: [ { test: /\.json$/, loaders: ['json'] } ] } }
In questo esempio, è specificato browser.js
come punto di ingresso. Il punto di ingresso è il file utilizzato da webpack per avviare la ricerca dei moduli importati. Come bundle.js
è specificato il nome del file di output. Questo file di output conterrà tutti i JavaScript che l'applicazione deve eseguire. Se il codice specificato nel punto di ingresso importa o richiede altri moduli, ad esempio l'SDK per JavaScript, tale codice viene fornito senza necessità di specificarlo nella configurazione.
La configurazione nel plugin json-loader
che è stato installato in precedenza specifica a webpack come importare i file JSON. Per impostazione predefinita, webpack supporta solo JavaScript, ma utilizza loader per aggiungere il supporto per l'importazione di altri tipi di file. Poiché l'SDK per JavaScript fa ampio uso dei file JSON, webpack genera un errore durante la generazione del pacchetto sejson-loader
non è incluso.
Esecuzione di webpack
Per creare un'applicazione per l'utilizzo di webpack, aggiungi il codice seguente all'oggetto scripts
nel tuo file package.json
.
"build": "webpack"
Ecco un esempio di package.json
che mostra l'aggiunta di webpack.
{ "name": "aws-webpack", "version": "1.0.0", "description": "", "main": "index.js", "scripts": { "test": "echo \"Error: no test specified\" && exit 1", "build": "webpack" }, "author": "", "license": "ISC", "dependencies": { "aws-sdk": "^2.6.1" }, "devDependencies": { "json-loader": "^0.5.4", "webpack": "^1.13.2" } }
Per creare l'applicazione, digita il comando riportato di seguito.
npm run build
Il module bundler webpack genera quindi il file JavaScript specificato nella directory principale del tuo progetto.
Utilizzo del bundle di webpack
Per utilizzare il bundle in uno script del browser, puoi incorporare il bundle utilizzando un tag <script>
come mostrato nel seguente esempio.
<!DOCTYPE html> <html> <head> <title>AWS SDK with webpack</title> </head> <body> <div id="list"></div> <script src="bundle.js"></script> </body> </html>
Importazione di singoli servizi
Uno dei vantaggi di webpack è che analizza le dipendenze nel tuo codice e raggruppa solo il codice richiesto dalla tua applicazione. Se stai utilizzando l'SDK per JavaScript, il raggruppamento delle sole parti dell'SDK effettivamente utilizzate dalla tua applicazione può ridurre notevolmente le dimensioni dell'output di webpack.
Considera il seguente esempio di codice utilizzato per creare un oggetto di servizio Amazon S3.
// Import the AWS SDK var AWS = require('aws-sdk'); // Set credentials and Region // This can also be done directly on the service client AWS.config.update({region: 'us-west-1', credentials: {
YOUR_CREDENTIALS
}}); var s3 = new AWS.S3({apiVersion: '2006-03-01'});
La funzione require()
specifica l'intero SDK. Un bundle di webpack generato con questo codice includerebbe l'intero SDK, ma non è richiesto l'intero SDK quando viene utilizzata solo la classe client Amazon S3. La dimensione del bundle sarebbe sostanzialmente inferiore se fosse inclusa solo la parte dell'SDK richiesta per il servizio Amazon S3. Anche l'impostazione della configurazione non richiede l'intero SDK perché è possibile impostare i dati di configurazione sull'oggetto di servizio Amazon S3.
Ecco come appare lo stesso codice quando include solo la porzione Amazon S3 dell'SDK.
// Import the Amazon S3 service client var S3 = require('aws-sdk/clients/s3'); // Set credentials and Region var s3 = new S3({ apiVersion: '2006-03-01', region: 'us-west-1', credentials: {
YOUR_CREDENTIALS
} });
Raggruppamento per Node.js
Puoi utilizzare webpack per generare bundle eseguiti in Node.js specificandolo come destinazione nella configurazione.
target: "node"
Questa funzione è utile quando si esegue un'applicazione Node.js in un ambiente in cui lo spazio su disco è limitato. Ecco un esempio di configurazione webpack.config.js
con Node.js specificato come destinazione dell'output.
// Import path for resolving file paths var path = require('path'); module.exports = { // Specify the entry point for our app entry: [ path.join(__dirname, 'node.js') ], // Specify the output file containing our bundled code output: { path: __dirname, filename: 'bundle.js' }, // Let webpack know to generate a Node.js bundle target: "node", module: { /** * Tell webpack how to load JSON files. * When webpack encounters a 'require()' statement * where a JSON file is being imported, it will use * the json-loader */ loaders: [ { test: /\.json$/, loaders: ['json'] } ] } }