Включение встроенных функций javascript из внешнего файла

Я использую встроенный javascript и определил определенные функции для создания таблицы:

<% function createCollectionTableRow(col) { %>
<tr>
    <td>
        <a href="/<%= database %>/collections/<%= collections[col][0].name %>"><%= collections[col][0].name %></a></td><td><%= collections[col][0].count %>
    </td>
    <td>
        <button id="<%= collections[col][0].name %>_rename_button" class="btn btn-sm btn-primary" data-toggle="modal" data-target="#renameModal">Rename</button>
        <script type="text/javascript">
            $('#<%= collections[col][0].name %>_rename_button').on('click', function() {
                $('#rename_button').on('click', function() {
                    var newname = $('#rename_input').val();
                    $('#rename').attr('action', '/collections/<%= collections[col][0].name %>/rename?newname=' + newname);
                });
            });
        </script>
    </td>
    <td>
        <button id="<%= collections[col][0].name %>_copy_button" class="btn btn-sm btn-info" data-toggle="modal" data-target="#copyModal">Copy</button>
        <script type="text/javascript">
            $('#<%= collections[col][0].name %>_copy_button').on('click', function() {
                $('#copy_button').on('click', function() {
                    var selection = $('#select_collection').val();
                    var db = $('#select_database').val();
                    $('#copy').attr('action', '/collections/<%= collections[col][0].name %>/copy?db=' + db + '&copyto=' + selection);
                });
            })
        </script>
    </td>
    <td>
        <form action="/collections/<%= collections[col][0].name %>?_method=DELETE" method="POST">
            <button class="btn btn-sm btn-danger">Delete</button>
        </form>
    </td>
    <td>
        <button id="<%= collections[col][0].name %>_truncate_button" class="btn btn-sm btn-warning" data-toggle="modal" data-target="#docTruncateModal">Truncate</button>
        <script type="text/javascript">
            $('#<%= collections[col][0].name %>_truncate_button').on('click', function() {
                $('#doc_truncate').attr('action', '/collections/<%= collections[col][0].name %>/truncate');
                $('#full_truncate').attr('action', '/collections/<%= collections[col][0].name %>/full_truncate');
            });
        </script>
    </td>
</tr>

Теперь я мог бы захотеть повторно использовать указанную функцию на разных страницах, но всякий раз, когда я пытаюсь переместить ее в отдельный файл, скажем, «functions.ejs», и использовать следующий оператор в начале каждой страницы <% include functions.ejs %> мне говорят, что такой функции нет. Что дает?


person Omnia87    schedule 19.03.2019    source источник


Ответы (1)


Согласно README, вы должны включить его следующим образом:

<% include functions %>

.ejs не нужно

person Sébastien Bousquet    schedule 19.03.2019
comment
Не обязательно, но и не актуально, это ничего не меняет. Я все еще получаю сообщение об ошибке создания «createCollectionTableRow не определено». - person Omnia87; 19.03.2019
comment
Вы экспортировали свою функцию в functions.ejs? module.exports={createCollectionTableRow} - person Sébastien Bousquet; 19.03.2019
comment
Но работает ли это с ejs? Вся литература, которую я нахожу по этой теме, просто использует прямой javascript, я не знаю, как экспортировать функции, которые включают весь этот html и эти теги ‹%. - person Omnia87; 19.03.2019