【问题标题】:Javascript hardcoded variables [closed]Javascript硬编码变量[关闭]
【发布时间】:2013-01-13 22:07:20
【问题描述】:

我有一个简单的js文件:

//base.js

...
var url = '/post/' + id + '/comment';
...

我使用的是 Symfony2,所以在服务器端,所有的 url 都是由路由器生成的,我在 js 中使用硬编码的 url 让我很烦恼..

有没有办法让它们更有活力?
这些是我想过的解决方案,但我满意:

  • 在 HTML 标记中定义它们,例如 <div data-url="<?php path('post_comment'); ?>">
  • 在内联脚本标签<script language="text/javascript">...</script>中定义它们

我认为一些大网站(SO、GitHub等)的js文件中的url是硬编码的,对吗?

【问题讨论】:

  • 我能想到的另一个例子 - 在构建步骤中生成 urls 映射(并将它们保存在 javascript 对象中)
  • 我最终声明了一个全局命名空间对象并将我需要的所有路径作为该对象的属性插入。我有点不喜欢它……这是 Symphony 的一个限制,让我对这个框架不感兴趣。

标签: javascript variables hardcoded


【解决方案1】:

Friends of Symfony JS Routing Bundle 完全符合您的需求

var url = Routing.generate('some_route_to_expose', { foo: 'bar' });
// url is http://somehost.com/app_dev.php/my_route

该捆绑包还允许您转储、编译和缩小生成的 javascript。太棒了!

【讨论】:

    【解决方案2】:

    您至少应该通过在配置对象中定义所有常量变量并使用属性名称或 getter 函数来访问它,从而最大限度地减少命名空间污染。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-03-27
      • 1970-01-01
      • 1970-01-01
      • 2015-11-17
      • 2019-08-12
      • 2017-08-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多