Embedded PHP in jquery

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Pagina: « vorige 1 2 3 volgende »

- Ariën  -
Beheerder

- Ariën -

21/10/2016 22:12:49
Quote Anchor link
Maar als je een flink pak JavaScript in een externe file hebt, dan kan je dat prima minifieen en laten cachen.
 
PHP hulp

PHP hulp

25/12/2024 06:04:16
 
Ben van Velzen

Ben van Velzen

21/10/2016 22:25:48
Quote Anchor link
Uiteraard, dan wel. Maar met dynamische javascript is dat onzinnig, omdat je dat toch in je HTML parkeert. Daarbuiten zijn minifiers niet bepaald snel, en om dat iedere pageview te doen is al erg snel erg pijnlijk. Je bent dan meteen beperkt door de snelheid van je minifier, en al duurt het minifien maar een tiende van een seconde (en het duurt langer) dan vertraag je je website dus met diezelfde hoeveelheid.
 
- Ariën  -
Beheerder

- Ariën -

21/10/2016 22:37:39
Quote Anchor link
Maar minifien doe je niet on-the-fly maar zodra je je website gaat uitrollen (deployen).
 
Ben van Velzen

Ben van Velzen

21/10/2016 22:44:38
Quote Anchor link
Klopt, maar dat kan niet als je javascript dynamisch is ;-)
 
- Ariën  -
Beheerder

- Ariën -

21/10/2016 22:46:24
Quote Anchor link
Dat begrijp ik, dus moet je je JavaScript-file ook niet dynamisch maken, maar statisch houden, op de manier die ik genoemd heb ;-)
Gewijzigd op 21/10/2016 22:46:57 door - Ariën -
 
Ben van Velzen

Ben van Velzen

21/10/2016 22:54:03
Quote Anchor link
We zijn het dus gewoon eens :-)
Hopelijk zal Daniel de hint ook oppikken.
Gewijzigd op 21/10/2016 22:54:41 door Ben van Velzen
 
Daniel van Seggelen

Daniel van Seggelen

22/10/2016 05:21:44
Quote Anchor link
@ben, als je goed leest wat er staat, dan snap je het anders raad ik het aan nog eens goed te lezen.
Verder lijkt er dus geen tool te zijn die het doet, althans niet waarvan iemand het hier weet, dus zoek maar even verder.
 
- Ariën  -
Beheerder

- Ariën -

22/10/2016 09:27:45
Quote Anchor link
https://www.google.nl/search?q=minify+javascript

Hier vind ik een hoop scripts en tools.
 
Pg Vincent

Pg Vincent

22/10/2016 10:08:52
Quote Anchor link
Quote:
Het is PHP en Javascript. leer dat nu eens een keer. Daar gaat niet niet over.


Daar gaat het juist *wel* over, want je kunt PHP niet behandelen zoals je javascript zou behandelen.
Nogmaals, jouw hele probleem is uitsluitend veroorzaakt doort jouw idee dat dit javascript is. Dat is het niet.
het heet *.php, het bevat PHP code, het wordt door PHP uitgeoverd... het is dus gewoon PHP. Dat het sterk *LIJKT* op javscript is volstrekt niet relevant.


Quote:
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.


Nee die zijn er niet, want voor de dertigste keer: je kunt PHP niet embedden in javascript.

Wat jij hebt is een PHP script dat javascript print en het *ENIGE* wat je zou kunnen doen is de *UITVOER* van je script minifyen, en dat is, zoals ook al twintig keer gezegd; zinloos want het kost meer tijd om te minifyen dan het kost om de niet-minified versie te versturen.

*ALS* je iets met minification zou willen doen, dan zou je de javascript versie van deze code moeten maken, met alleen placeholders voor waar PHP zijn variabelen moet plaatsen, dat minifyen en dan de minified code weer terug moeten plakken en de placeholders weer vervangen door de PHP code die de variabelen print.

Maar zoals je ziet: dan moet je dus eerst deze *PHP CODE* veranderen zodat het *JAVSCRIPT* wordt en na het minifien de *JAVASCRIPT* code weer veranderen naar *PHP CODE*.

Jouw hele probleem bestaat puur omdat je niet ijzernheinig blijft vasthouden aan het idee dat je een javscript bestand hebt. Dat heb je niet, punt.
 
- Ariën  -
Beheerder

- Ariën -

22/10/2016 10:28:19
Quote Anchor link
Quote:
Nee die zijn er niet, want voor de dertigste keer: je kunt PHP niet embedden in javascript.

Kijk, de server krijgt een request om een pagina te serveren. Dit is een .php bestand met daarin een JavaScriptje met wat PHP-embeds. De webserver met PHP ziet de PHP-tags staan, en parst alles daarin zodat ze de gewenste output geven welke voor ons een HTML/JS output is. Deze output gaat dus naar de browser van de client toe, en voila.

En dan heb ik het over het toekennen van de JavaScript-variabelen in je HTML-code. Daar kan je dus prima PHP in gebruiken, en dat kan je ook prima dynamisch maken. Die JavaScript variabelen kan je dan weer verwerken in je (geminifiede) JavaScript file die je embedt.

Je kan je JavaScript-file dus lekker statisch houden, en laten cachen door je bezoekers.

@Vincent: Ik zie zelf echt niks over een PHP-script die JavaScript echo'ed. Laat maar zien waar jij PHP ziet die een JavaScript echo'ed?

Dit is zoals ik de terminologie ken, en ik vermoed dat hier ergens een spraakverwarring in zit.
Gewijzigd op 22/10/2016 10:34:13 door - Ariën -
 
Daniel van Seggelen

Daniel van Seggelen

22/10/2016 10:53:08
Quote Anchor link
@Arian,
https://www.google.nl/search?q=minify+javascript
Hier vind ik een hoop scripts en tools.

Ja, zas ik zei werken die niet met embedded PHP in JS,

@vincent

Ook ik zie niks over een PHP script dat Javascript echoed.

Quote:
jouw hele probleem is uitsluitend veroorzaakt doort jouw idee dat dit javascript is. Dat is het niet.
het heet *.php, het bevat PHP code, het wordt door PHP uitgeoverd


Ongelofelijk, dat je dat niet begrijpt, ik heb de code al gegeven. Het is Javascript met embedded PHP, zoek maar eens op google.

Quote:
Nee die zijn er niet, want voor de dertigste keer: je kunt PHP niet embedden in javascript.


Dat kunt je wel, dat heb ik gedaan en dat werkt,dat zijn feiten, maar het minimaliseren werkt niet.
 
- Ariën  -
Beheerder

- Ariën -

22/10/2016 10:54:42
Quote Anchor link
Daniel van Seggelen op 22/10/2016 10:53:08:

@Arian,
https://www.google.nl/search?q=minify+javascript
Hier vind ik een hoop scripts en tools.

Ja, zas ik zei werken die niet met embedded PHP in JS,

Dat hoeft ook niet, als je de embedded PHP in je HTML-document inlaadt, buiten je javascript-file. Zie ook mijn voorbeeld in dit topic. Met andere woorden: het kan prima! :-)
Gewijzigd op 22/10/2016 10:55:35 door - Ariën -
 
Ben van Velzen

Ben van Velzen

22/10/2016 11:34:28
Quote Anchor link
- Ariën - op 22/10/2016 10:28:19:

@Vincent: Ik zie zelf echt niks over een PHP-script die JavaScript echo'ed. Laat maar zien waar jij PHP ziet die een JavaScript echo'ed?


Oh oh! Mag ik? Technisch gezien wordt een willekeurig script met wat embeds omgezet naar een script met echo's. Dat zijn de opcodes die je krijgt. Dus:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
Hallo mijn naam is <?php echo $naam; ?>

is qua opcodes EXACT hetzelfde als
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
echo 'Hallo mijn naam is ' . $naam;
?>


Het probleem dat ontstaat is dat de code die je wilt minifyen anders is dan de code die uiteindelijk gebruikt wordt, en in de huidige opzet is de code inclusief je placeholders gewoon geen geldige javascript, maar WEL geldige PHP code.
Gewijzigd op 22/10/2016 11:43:39 door Ben van Velzen
 
- Ariën  -
Beheerder

- Ariën -

22/10/2016 11:46:06
Quote Anchor link
Dat is eigenlijk wel zo inderdaad, doordat het met een .php door PHP wordt geparsed. Dat gebeurt niet met een .js file.
 
Pg Vincent

Pg Vincent

22/10/2016 16:25:27
Quote Anchor link
Quote:
Dit is een .php bestand


En... punt, cut, that's a take, inpakken en klaar.

Het is een PHP script, PHP leest het, PHP verwerkt het, en het PRINT javasacript.



Quote:
Ook ik zie niks over een PHP script dat Javascript echoed.


Wat denk je dan dat PHP doet met de tekst die buiten de PHP tags staat? Komen ze op je scherm? Ja. Komen ze uit PHP? Ja. Worden ze dan geprint? Ja.



Quote:
Dat kunt je wel, dat heb ik gedaan en dat werkt,dat zijn feiten, maar het minimaliseren werkt niet.


Nee, het kan niet, dat heb jij niet gedaan, en het minimaniseren werkt niet omdat je dus *GEEN* javasscript hebt gemakt.


Quote:
Dat is eigenlijk wel zo inderdaad, doordat het met een .php door PHP wordt geparsed. Dat gebeurt niet met een .js file.


Dat roep ik twee dagen... het is een PHP script, het heeft de PHP extentie, het wordt door PHP opgestart... het *IS* PHP. En dus is het logisch dat javascript tools er niet mee kunnen werken en daarom lukt het minifiyen niet.
 
- Ariën  -
Beheerder

- Ariën -

22/10/2016 20:50:27
Quote Anchor link
En dat verhaal over die opcode kwam pas later naar voren, en ind at opzicht kan je zeker gelijk hebben, maar in de praktijk lijkt het namelijk anders. Daar zit de verwarring dus.

Conclusie: Minifieen heeft zin als je statische JS-files hebt. Die gaan toch niet door PHP. En de dynamische scripts in je index.php file, kan je heel lastig on-the-fly minifieen. Maar een paar toewijzingen is niet zo heel lastig te minifieen, een kwestie van wat enters en spaties eruit filteren. (Of {strip} in Smarty ;-) )
Gewijzigd op 23/10/2016 10:36:19 door - Ariën -
 
Ben van Velzen

Ben van Velzen

23/10/2016 01:50:36
Quote Anchor link
Ik raak je even kwijt. Waar gaat het over opcache? Ik had het zelf over de browser cache. De conclusie wordt er overigens niet minder geldig door.
 
Pg Vincent

Pg Vincent

23/10/2016 10:24:57
Quote Anchor link
Quote:
En dat verhaal over die opcache kwam pas later naar voren, en ind at opzicht kan je zeker gelijk hebben, maar in de praktijk lijkt het namelijk anders.


opCODE, niet opcache, dat zijn twee totaal verschillende dingen. Op het moment dat PHP het script parset maakt hij er gewoon één groot print statement van.

Quote:
Daar zit de verwarring dus.


En ik snap die verwarring dus niet, als je een script hebt met PHP tags er in, met de .php extensie, en het wordt uitgevoerd door PHP, waarom dan volhouden dat het javascript is? Het *genereert* javascript, maar dat is wat anders.

De reden dat ik er zo lang over doorzaag is dat het belangrijk is voor je website (en je carriere in de PHP wereld) dat je begrijpt in welke taal je bezig bent en welke consequenties daar aan hangen. Als je denkt dat je javascript bestanden kunt opslaan als *.php omdat dat "ook werkt", dan maak je je website onnodig traag en zwaar voor de server.

Wat dat betreft is het hetzelfde als gebrekkige kennis van databases, waar men liever kiest om alle records uit een tabel in PPH te laden en ze in PHP te verwerken omdat men dat "overzichtelijker" vindt. En intussen ligt de server bijna plat...

(ps: "je" is hier in het algemeen, niet jou of de TS in het bijzonder)

Quote:
Conclusie: Minifieen heeft zin als je statische JS-files hebt. Die gaan toch niet door PHP.


Minifyen doe je om precies één reden: de minified versie is kleiner dan het origineel. Kleinere bestanden kosten minder bandbreedte en dus minder tijd om te versturen.

- Je kunt javascript printen vanuit PHP.
- De javascript die je print met PHP kun je minifyen, de originele PHP code niet.
- Je kunt een pre-minified versie van de javascript code maken met speciale javascript-vars of strings die als placeholders werken zodat je ze met PHP weer kunt vervangen door de waarde die je nodig hebt.

Maar, minifyen heeft alleen echt nut als je significant ruimte spaart. Als je 0.04 seconde extra werk per pageview moet doen om 20 bytes uit te sparen dan kun je beter niet doen want die 20 bytes kosten maar een paar microseconden om te versturen.

Het hele verhaal van dynamisch javascript is sowieso achterhaald door AJAX. Bouw gewoon een javascript app en laat die de dynamische data laden via een XHR call. Die call haalt dan alleen een handjevol waarden op, die je nog kunt laten cachen ook, zowel serverside als clientside. Dar is een van de redenen waarom systemen zoals AngularJS zo populair zijn, ze halen alle noodzaak voor "dynamische javascript" weg.
 
Daniel van Seggelen

Daniel van Seggelen

23/10/2016 11:14:27
Quote Anchor link
Ikdenk een oplossing gevonden te hebben.
In de php file waar javascript gemaakt word exporteer ik in een .js file op deze manier

PHP
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
function minify_output($buffer){
    $search = array('/\>[^\S ]+/s','/[^\S ]+\</s','/(\s)+/s');
    $replace = array('>','<','\\1');
    if (preg_match("/\<html/i",$buffer) == 1 && preg_match("/\<\/html\>/i",$buffer) == 1) {
        $buffer = preg_replace($search, $replace, $buffer);
    }
    return $buffer;
}

         ob_start('minify_output');    

// EMBEDDED PHP IN JS

<?php
if ($_SESSION['anything']=='')
{

    ?>

    
        jsfuntie_test('test');
    <?php
    } else {?>

    
     jsfuntie_test('test2');
    
    <?php
}

$myJS = ob_get_clean();

$JSoutput  = fopen("/pad/js/output.js", "wr") or die("Unable to open file!");
fwrite($JSoutput, $myJS );
fclose($JSoutput);



[
/code]

Nog niet getest, maar denk dat het zou moeten werken.
 
Ben van Velzen

Ben van Velzen

23/10/2016 12:28:24
Quote Anchor link
Een beetje whitespace weghalen is niet hetzelfde als minifyen, dat heb je door?
Heb je daardoor ook door dat je letterlijk *bytes* zal winnen hiermee? Zie de opmerking van Vincent hierover. Je maakt je site alleen maar trager hiermee.

EDIT:
Zo te zien is dit overigens voor HTML bedoeld, op JS zal het niets uithalen.
Gewijzigd op 23/10/2016 12:29:32 door Ben van Velzen
 

Pagina: « vorige 1 2 3 volgende »



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.