Embedded PHP in jquery
Ik heb in mijn script some wat embedded PHP in jquery staan een voorbeeld is iets als:
Code (php)
1
var html = ' <span id="showmap" class="menuTemplate1 decor1_1" folder1 = "<?=$folder1?>" folder2 = "<?=$folder2?>" folder3 = "<?=$folder3?>"><?=$_SESSION['def']['SHOW_MAP']?> </span> ';
Het punt is dat het wel goed werkt, maar ik wil je boel minimaliseren. Als ik de online tools gebruik werkt dat niet, want het moet gescheiden zijn.
Ik heb google speedmodule ooit gebruikt wat welwerkte maar een grote resource verbruik voor de server is, waardoor ik dat maar heb verwijderd.
Weet iemand een tool class waar ik mijn js MET EMBEDDED PHP goed kan minimaliseren?
- Ariën -:
Gelieve in het vervolg bij code de [code][/code]-tags gebruiken.
Hier kan je meer lezen over de mogelijke opmaakcodes.
Alvast bedankt!
Hier kan je meer lezen over de mogelijke opmaakcodes.
Alvast bedankt!
Gewijzigd op 20/10/2016 19:57:43 door - Ariën -
Je kan de variabelen toch gewoon tussen script-tags in je HTML-source zetten? Waarom zou je dat dan minifieen?
Het werkt niet als ik alles minify met embedded script tags zoals ik aangaf
Waar gaat het dan fout volgens jouw? Blijkbaar gaat het minifieen dan fout.
maar ik zoek een tool waarmee ik het kan doen.
probeer bijv maar
Code (php)
1
var html = ' <span id="showmap" class="menuTemplate1 decor1_1" folder1 = "<?=$folder1?>" folder2 = "<?=$folder2?>" folder3 = "<?=$folder3?>"><?=$_SESSION['def']['SHOW_MAP']?> </span> ';
in deze tool te doen:
https://jscompress.com/
dan krijg ik:
SyntaxError: Unexpected token: name (def) (line: 1, col: 156)
Het gaat nl om een hoop bestanden, dus vandaar.
Ik kom dan uit op:
Stats: 5.8% compression, saving 0.01 kb
Gewijzigd op 21/10/2016 14:33:04 door - Ariën -
Dit is geen jquery met embedded PHP, het is gewoon PHP. De *uitvoer* van dit script is wel javascript code en dat zou je kunnen minifyen via een PHP library, maar het scheelt waarschijnlijk *veel* meer als je compressie laat toepassen door je webserver.
Gewijzigd op 21/10/2016 14:41:32 door - Ariën -
Quote:
@Vincent: het is toch echt een JavaScript-string met een paar PHP-embeds. Het staat verder wel los van jQuery.
Nope, het is een PHP script dat javascript print.
Het moet door PHP worden uitgevoerd om de variabelen te laten vervangen, dus het is PHP code. Dat het er heel er uitziet als javascript verandert daar niets aan. Je kunt dit niet laten minifyen door een javascript minifier, omdat het geen javascript is.
Dit is naar mijn weten echt JavaScript ;). Wel met een paar PHPblokken erdoor in het voorbeeld van de topicstarter.
Gewijzigd op 21/10/2016 15:04:05 door - Ariën -
Dit kun je wss niet minifyen om de reden die Pg Vincent noemt: er zit PHP code in en is dus potentieel elke keer anders. Je probeert in wezen dynamische content te cachen :/.
Het is zo logisch dat dit een javascript variabele is met embedded PHP. Het punt is
Nog wat ode om het wellicht wat duidelijker voor je te maken:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
jQuery(document).on("click", "#adfav,#blokprof,#fotoedit,#fotochat,#favedit,#blockededit,#visitorsedit", function(t) {
var id = $(this).attr('id');
var member_id = $(this).attr('member_id');
if (id == 'blokprof')
{
var formulier = '<div style="padding-top: 10px" ><span id="popmessage"></span><br><br><span class="bttnf yes mr" id="yes-button"><?=$_SESSION['def']['YES']?></span><span class="bttnf no" ><?=$_SESSION['def']['NO']?></span></div>';
message = '<?=$_SESSION['def']['MESSAGEBLOCK']?>';
}
else if (id == 'adfav')
{
var formulier = '<div style="padding-top: 10px" ><span id="popmessage"></span><br><br><span class="bttnf yes mr" id="yes-button"><?=$_SESSION['def']['YES']?></span><span class="bttnf no" ><?=$_SESSION['def']['NO']?></span></div>';
message = '<?=$_SESSION['def']['MESSAGEADDFAV']?>';
}
else if (id == 'favedit')
{
var formulier = '<div style="padding-top: 10px" ><span id="popmessage"></span><br><br><span class="bttnf yes mr" id="yes-button" member_id = '+member_id+'><?=$_SESSION['def']['DELETE_FAVORIT']?></span><span class="bttnf no" ><?=$_SESSION['def']['CLOSE']?></span></div>';
var fotoimg = $(this).attr('fotoimg');
message = fotoimg;
}
var id = $(this).attr('id');
var member_id = $(this).attr('member_id');
if (id == 'blokprof')
{
var formulier = '<div style="padding-top: 10px" ><span id="popmessage"></span><br><br><span class="bttnf yes mr" id="yes-button"><?=$_SESSION['def']['YES']?></span><span class="bttnf no" ><?=$_SESSION['def']['NO']?></span></div>';
message = '<?=$_SESSION['def']['MESSAGEBLOCK']?>';
}
else if (id == 'adfav')
{
var formulier = '<div style="padding-top: 10px" ><span id="popmessage"></span><br><br><span class="bttnf yes mr" id="yes-button"><?=$_SESSION['def']['YES']?></span><span class="bttnf no" ><?=$_SESSION['def']['NO']?></span></div>';
message = '<?=$_SESSION['def']['MESSAGEADDFAV']?>';
}
else if (id == 'favedit')
{
var formulier = '<div style="padding-top: 10px" ><span id="popmessage"></span><br><br><span class="bttnf yes mr" id="yes-button" member_id = '+member_id+'><?=$_SESSION['def']['DELETE_FAVORIT']?></span><span class="bttnf no" ><?=$_SESSION['def']['CLOSE']?></span></div>';
var fotoimg = $(this).attr('fotoimg');
message = fotoimg;
}
Ik probeer dus inderdaad dynamisch content te cachen, omdat de php waardes anders kunnen zijn.
Ik zou het geheel gescheiden kunnen houden door bijv alle PHP syntaxen als attributen mee te geven aan JS, maar ik werk aan een script wat ik aanpas en dat zit zo niet in elkaar.
Ik weet dat bijv de google pagespeed tool de dynamische output goed cached.
Maar is hier geen goede tool, class voor?
Quote:
Dit is naar mijn weten echt JavaScript ;). Wel met een paar PHPblokken erdoor in het voorbeeld van de topicstarter.
En dus is het PHP dat javascript print, niet javascript dat PHP print.
Ha, heerlijk die PHP forums waar dit soort dingen nog echt een discussie op kunnen leveren :-)
Toekennningen voor in externe js-files kan je vaak prima inladen in je HTML-document. Dat doe ik ook altijd voor dynamische content op mijn site die in JavaScript verwerk.
Gewijzigd op 21/10/2016 15:39:00 door - Ariën -
Quote:
dit moet geen discussie worden over of het PHP of Javascript is.
Het is zo logisch dat dit een javascript variabele is met embedded PHP.
Het is zo logisch dat dit een javascript variabele is met embedded PHP.
Er is geen discussie, het is PHP code. Jouw minify-probleem komt 100% doordat jij ten onrechte denkt dat dit javascript is.
Quote:
Ik probeer dus inderdaad dynamisch content te cachen, omdat de php waardes anders kunnen zijn.
Dan moet je de uitvoer van dit PHP script cachen, en omdat de *uitvoer* van dit *PHP* script wel *javascript* is zou je daar een minifier op los kunnen laten, maar dat lost niet veel op.
Persoonlijk zou ik dit "embedden", wat dus niet kan, ook gewoon niet doen. Houdt javascript en PHP gescheiden en laat b.v. de javascript code al zijn data betrekken uit een data bestand of een data URL, waar al die dingen die jij nu uit $_SESSION peutert in staan. Dan kun je tijdens de pageview die data ophalen met AJAX, en dan zo lang kunt cachen als je nodig acht, serverside of clientside.
Pg Vincent op 21/10/2016 15:23:37:
En dus is het PHP dat javascript print, niet javascript dat PHP print.
Ha, heerlijk die PHP forums waar dit soort dingen nog echt een discussie op kunnen leveren :-)
Quote:
Dit is naar mijn weten echt JavaScript ;). Wel met een paar PHPblokken erdoor in het voorbeeld van de topicstarter.
En dus is het PHP dat javascript print, niet javascript dat PHP print.
Ha, heerlijk die PHP forums waar dit soort dingen nog echt een discussie op kunnen leveren :-)
PHP doet niet alles, die voert alleen alles uit wat tussen PHP-tags staat, en dat zijn alleen die dynamische waarden.
Het is beste is om de 'messages' in je HTML-document op te slaan:
Code (php)
1
2
3
4
2
3
4
<script>
var MESSAGEBLOCK = '<?=$_SESSION['def']['MESSAGEBLOCK']?>';
var MESSAGEADDFAV = <?=$_SESSION['def']['MESSAGEADDFAV']?>';
</script>
var MESSAGEBLOCK = '<?=$_SESSION['def']['MESSAGEBLOCK']?>';
var MESSAGEADDFAV = <?=$_SESSION['def']['MESSAGEADDFAV']?>';
</script>
Dan kan je de variabelen MESSAGEBLOCK en MESSAGEADDFAV vervolgens gebruiken in je .js bestand. Op die manier blijft dit bestand statisch, en kan het netjes worden gecached waardoor de laadtijd groter wordt bij vervolg-bezoeken.
Gewijzigd op 21/10/2016 16:01:24 door - Ariën -
Quote:
PHP doet niet alles, die voert alleen alles uit wat tussen PHP-tags staat, en dat zijn alleen die dynamische waarden.
...en de rest wordt door *de PHP engine* geprint alsof het in een print() functie staat.
Volgens jouw/jullie redenering is dit javasript:
var html=
en dit PHP:
echo "var html=$jouwvar";
Ookal *moeten* beiden door PHP worden uitgevoerd...
Afijn, zoals de TS al zei; dit moet geen eindeloos gedoe worden over hoe het heet, als jullie het javascript willen noemen dan noemen jullie het maar javascript, maar dan moet je ook niet meer zeuren als je het niet kunt verwerken alsof het javascript is. :-)
Leuk voer voor voor de Koffiehoek! ;-)
"Er is geen discussie, het is PHP code. Jouw minify-probleem komt 100% doordat jij ten onrechte denkt dat dit javascript is."
**knip**
Het is PHP en Javascript. leer dat nu eens een keer. Daar gaat niet niet over. Het gaat om de simpele vraag of er een tool is die embedded PHP in JS goed minimaliseert om snelheid te winnen, niets meer en niets minder.
**knip**
- Ariën -:
Enkele flames weggehaald. Houden we gezellig hier?
Flamen naar andere gebruikers verziekt de sfeer alleen maar, en draagt tevens ook niks bij.
Flamen naar andere gebruikers verziekt de sfeer alleen maar, en draagt tevens ook niks bij.
Gewijzigd op 21/10/2016 21:12:20 door - Ariën -
Heb je mijn tip al gelezen? Want het lijkt mij niet nodig om PHP te embedden in een .js-file.
Wanneer het niet om externe js gaat, maar om content die direct in de HTML staat zou ik er al helemaal niet aan beginnen, je moet toch al een bak content binnenhalen in de vorm van HTML, een paar kb meer of minder zal hier geen merkbaar verschil geven.