我应该在 ejs 文件中使用脚本标签吗?

Aso*_*ool 5 javascript ejs node.js

我正在学习如何开发节点应用程序。这是一个人们可以发布城市周围发生的事件的应用程序。

我有一个 ejs 文件 new.ejs,它允许用户提交新事件。显然,有一个事件开始时间和结束时间。我想确保结束时间在开始时间之后,所以我简单地添加了一个脚本来执行此操作,如下所示:

          <!-- EVENT DATE AND TIME -->
          <div class=row>
              <!-- DATE -->
              <div class="form-group col-md-4">
                  <label for="date">Date *</label>
                  <input name="date" type="date" class="form-control" id="date"> 
              </div>
              <!--START TIME -->
              <div class="form-group col-md-4 ">
                  <label for="starttime">Start Time *</label>
                  <input name="starttime" type="text" class="form-control" id="starttime">
              </div>
              <!--END TIME -->
              <div class="form-group col-md-4 ">
                  <label for="endtime">End Time *</label>
                  <input name="endtime" type="text" class="form-control" id="endtime">
              </div>
              <script type="text/javascript">
                    $('#starttime').timepicker();
                    $('#endtime').timepicker({
                        'minTime': '12:00am',
                        'showDuration': true
                    });
                    $('#starttime').on('changeTime', function() {
                        $('#endtime').timepicker('option', 'minTime', $(this).val());
                    });
              </script>
          </div> <!-- END OF ROW -->  
Run Code Online (Sandbox Code Playgroud)

现在效果很好,它达到了我想要的效果。

但是,我知道 EJS 旨在获取后端(节点)javascript 代码并将其呈现到视图中。

我的问题是:

  1. 在标签之间添加前端代码是一种黑客行为吗?即,这是正确的编码实践吗?如果没有,更好的方法是什么?

  2. 现在,我的脚本标签之间只有少量代码。当我继续开发应用程序时,如果代码变得太长会发生什么?它应该保留在 ejs 文件中吗?看起来太乱了...

Yan*_*Tay 3

  1. 如果您的应用程序是服务器端渲染的(不是单页应用程序),那么您的方法是合理的。

  2. 您可以将代码放在文件夹中的 JS 文件中/public,并将节点服务器配置为将这些文件作为静态文件提供服务,并在引用这些 JS 文件的文件<script>中添加标签。.ejs

我有一个具有此类实现的示例项目。将是您的 ejs 文件(对于我的情况是 jade),是您放置脚本文件的位置。最后,将您的应用程序配置为从这样的目录提供静态资产。