2015-04-30 88 views
1

這不是關於圖書館,而是關於自定義腳本。Symfony2在樹枝模板中組織javascript的最佳方式

我知道兩種解決方案:

  1. 需要編寫一個大文件的一切(很多功能或自定義庫)
  2. 寫劇本的作品在樹枝模板

兩種解決方案都沒有很喜歡。在第一種情況下,我們必須在每次更新後複製資產。在第二種情況下,進行更改並且難以重用代碼並不容易。

也許你知道任何其他解決方案嗎?

+0

對我來說,最好是從HTML(樹枝)單獨的JavaScript。你可以做的是讓多個.js文件更好地組織(例如對於多個.js) –

+0

多個.js文件是對服務器的多個請求。你使用壓縮機(YUI壓縮機)嗎? –

+0

您可以縮小/混淆javascript文件。你是對的,更多的文件是對服務器的更多請求,但只是在開始時,後來你有緩存中的js。 –

回答

2

通常我安排我的JavaScript在不同的文件,我試圖形成我解決使用排序構造對我的課的例子在咆哮,樹枝命名空間和類,用實例化的問題,和值:

{%block javascripts} 
    {{ parent() }} 
    <script type='text/javascript' src={{ asset('path/to/my/SpecificClass.js')}} 

    SpecificClass.attribute1 = {{ value_from_twig }} 
    SpecificClass.attribute2 = {{ other_value_from_twig }} 

{%endblock} 

我覺得這種方式更清潔,但如果你想從樹枝話,我想你應該考慮的API架構,採用AngularJs完全分離的js代碼,BackboneJs

+0

謝謝。這是很好的解決方案。 –

0

你在你的問題中提到,你必須複製如果您只有一個大文件,每次更改後都會有資產。這未必是真實的,你可以使用assetic動態加載該文件在督促環境是這樣的:

{% javascripts 
     '@dsarhoyaDemoBundle/Resources/public/js/demo.js' 
     output='compiled/main.js' 
    %} 
     <script type="text/javascript" src="{{ asset_url }}"></script> 
    {% endjavascripts %} 

爲了督促環境只需要運行:assetic:轉儲--env =督促

不要知道這是否能以任何方式提升平衡。根據我的經驗,最好將兩者結合使用:大型通用文件和特定腳本。