Dalam aplikasi Rails, saya menggunakan turbolinks dan jquery-turbolinks. Saya memiliki beberapa dependensi javascript yang besar, seperti dataTables. Pertama, saya memuat semua dependensi tersebut di application.js tetapi pada akhirnya, saya memiliki file besar dalam 1 bulan setelah prakompilasi jadi saya ingin memuat dependensi hanya jika diperlukan.
Saya membuat file bernama custom-datables.coffe
dengan konten ini:
#= require dataTables/jquery.dataTables
#= require datatables
$(document).ready ->
console.log $('.data-table').dataTable
Saya memasukkannya seperti ini:
- content_for :javascript do
= javascript_include_tag 'custom-datatables'
Dan saya menghasilkan javascript di akhir tata letak aplikasi saya.
Ini berfungsi ketika saya menyegarkan halaman tetapi ketika saya membuka halaman ini menggunakan turbolink saya dapat melihat bahwa $('.data-table').dataTable
tidak terdefinisi. Saat saya mengetik $('.data-table').dataTable
di konsol firefox, fungsinya sudah ditentukan. $(document).ready
tampaknya dipicu sebelum datatable dimuat secara lengkap.
Apakah ada cara untuk memperbaikinya? Apakah ini praktik terbaik untuk memuat dependensi besar?