Ho notato che molte librerie usano questo stile qui sotto per definire la loro libreria. Ho anche notato che la prima funzione auto-invocazione ha qualcosa a che fare con i sistemi Require.js o AMD, hanno sempre factory come argomento, cercherò di approfondire Require.js, sempre in Browserify.Costruire una libreria JavaScript, perché utilizzare un IIFE in questo modo?
Perché il codice principale è passato alla fine della prima funzione auto-invocante tra parentesi, è una chiusura, o solo considerata una funzione anonima, scaverò più in profondità in entrambi. Quali sono i benefici a questo? Sembra che all'interno della chiusura l'autore superi uno string
, this
e uno callback
.
Questo darà alla mia biblioteca un modo sicuro per globalizzare l'oggetto principale in questo esempio sotto Please
?
(function(globalName, root, factory) {
if (typeof define === 'function' && define.amd) {
define([], factory);
}
else if (typeof exports === 'object') {
module.exports = factory();
}
else{
root[globalName] = factory();
}
}('Please', this, function(){
sto cercando di scavare davvero in profondità nel Javascript e creare la mia propria piccola architettura MVC, non voglio sentire io sono stupido o il suo stato fatto prima, voglio mettermi alla prova e imparare.
Se ci sono grandi risorse per creare una libreria JavaScript o anche una libreria MVC mi piacerebbe sapere.