簡體   English   中英

為什么將app / assets / javascripts中的coffee文件加載到所有文件中?

[英]Why coffee files in app/assets/javascripts are loaded in all the files?

我在app / assets / javascripts中有多個文件,為了測試,我已經在以下文件夾中寫入了一個文件:test.coffee:

$ ->
  $(document).ready ->
    alert("Hey");

我的問題如下:

為什么將javascript加載到我訪問我的網站的所有頁面中,我知道其中包含application.js,但我認為它沒有經過優化,沒有嗎?

您如何看待? 您能告訴我一種優化的方法來在多個頁面中進行Ajax調用,但是網站的所有頁面中沒有包含嗎? 其實我喜歡這樣:

<script type="text/javascript">
  $(document).on('keyup', 'input#field_seller_name', function(e){
    if(e.keyCode == 13 && $(this).val() != ""){
      $.ajax({
        url: '/field_sellers/' + $(this).parent().parent().data('field_seller_id'),
        type: 'PUT',
        dataType: 'script',
        data: {
          field_seller: {
            name: $(this).val()
          }
        },
        error: function(result){
          alert(result.responseText);
        }
      });
    }
  });

</script>

我將這部分代碼放在一個文件中,並且只在一頁中加載,我認為它不干凈...否則我會這樣:

$ ->
  # This is for CREATE an new type_material by press enter touch with input in focus
  $(document).on 'keyup', '#name_new_type_material', (evt) ->
    if evt.keyCode == 13
      $.ajax '/type_materials',
        type: 'POST',
        dataType: 'script',
        data: {
          field_type_user: {
            name: $(this).val()
          }
        }

但是就像我在頂部說的那樣,它已加載到所有網站中...

Linguee幫助我寫了這個問題...

謝謝 !

為什么將app / assets / javascripts中的coffee文件加載到所有文件中?

那是設計使然。 您的views/layouts/application.html.erb會加載javascript文件application.js 如果您轉到app/assets/javascripts/application.js ,則會看到有關加載所有資產的說明。 由於application.js已加載到您的所有頁面上(由於它位於布局模板中),因此所有資產都加載到了所有頁面上。

您可以做的是創建另一個“主”文件。 說, app/assets/javascripts/application-with-custom-ajax.js並在其中加載其他邏輯(而不是在application.js加載)。 然后,您只需要確保在需要其他邏輯的頁面上包括此替代文件,而不是application.js

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM