代码之家  ›  专栏  ›  技术社区  ›  Donny Kurnia

jquery在codeigner中,在视图中还是在外部JS文件中?

  •  9
  • Donny Kurnia  · 技术社区  · 16 年前

    我正在使用CodeIgniter开发Web应用程序。一直以来,我都把定制的JS代码放在视图文件中做一些有趣的事情。通过这样做,我可以使用 site_url() base_url() 由编码点火器提供的功能。

    今天,我想将视图文件中的所有自定义JS代码分离为一个外部JS文件。然后它击中了我,我不能使用 SITEYURURL() 基数URL() 在外部JS文件中。所以,我不得不将JS代码移回视图文件中。

    我想就这类问题征求意见、举例和最佳实践。您是将自定义JS代码放在视图中,还是放在外部JS文件中?如果你把它放在外部文件中,你是如何满足 SITEYURURL() 基数URL() (当然,还有我想要避免的绝对URL)。

    3 回复  |  直到 16 年前
        1
  •  38
  •   Sampson    16 年前

    我通常将我的保存在一个外部文件中,但是在我的模板(视图)中放置一行,声明一个名为“baseurl”的javascript变量,该变量稍后可供我的外部javascript使用。

    <script type="text/javascript">
      var baseurl = "<?php print base_url(); ?>";
    </script>
    <script type="text/javascript" src="/js/scripts.js"></script>
    

    现在,我的scripts.js文件可以访问 base_url() 通过自己的价值 baseurl 变量。

        2
  •  3
  •   Jens Roland    16 年前

    我会用另一种方式来实现这一点——显然,JS应该是外部的,但是为什么不充分利用这样一个事实:您拥有一个非常适合处理所有JavaScript魔力的MVC框架呢?

    以下是我的javscript(和css)good with ci的配方:

    1. 抓取一份 Minify -如果你还不知道,你的生活会更好。不在“ 一见钟情/我刚发现jquery/xkcd/单元测试 有点像,但至少在 老兄,准备好的语句消除了SQL注入 “一种方式。

    2. 其次,创建一个封装minify的CI控制器(不应该太难,只需记住设置正确的HTTP头并传递参数即可)

    3. 或者激活缓存以使所有内容运行得非常快(minify内置了缓存,但是如果已经缓存了CI内容,您也可以在这里使用相同的方法。

    4. 可以选择为minify定义一些组,以便更好地加载脚本

    5. 可选地将baseurl和siteurl变量(以及您可能需要的任何其他值)添加到javascript输出中

    6. 现在,您应该可以通过调用minify包装器来加载脚本:

      <script type="text/javascript" src="/min/g=js"></script>

    它的速度太快了,它是gzip,只接受一个请求而不是多个请求,它给了您对脚本的完全CI控制,甚至使您的源代码更干净。


    哦,如果你想对你的源代码窥视访问者格外友好,你可以自动在输出中添加类似这样的内容:

    // Javascript compressed using Minify by Ryan Grove and Steve Clay
    // (http://code.google.com/p/minify/)
    // Human-readable source files:
    
    // http://www.yourdomain.com/js/core_functions.js
    // http://www.yourdomain.com/js/interface.js
    // http://www.yourdomain.com/js/newsticker.js
    // http://www.yourdomain.com/js/more_magic.js
    
    (...)
    

    至少我是这么做的。

        3
  •  0
  •   Phil Sturgeon    16 年前

    唐尼,如果你开始分别通过每个网址,你只会给自己一个球疼痛。为什么不直接通过base_url()并在末尾继续控制器/方法呢?

    您将失去交换索引页和URL后缀设置的能力,但无论如何,它们都不应该经常更改这些设置。

    推荐文章