CodeIgniter中的jQuery,在视图内部还是在外部js文件中?

我正在使用CodeIgniter开发Web应用程序。 这一次,我把自定义js代码放在视图文件中做了很多花哨的东西。 通过这样做,我可以使用CodeIgniter提供的site_url()base_url()函数。

今天我想将所有自定义js代码从视图文件分离到外部js文件中。 然后它击中了我,我不能在外部js文件中使用site_url()base_url() 。 所以,我不得不将js代码移回视图文件。

我想问一下这类问题的意见,例子和最佳实践。 您是将自定义js代码放在视图中还是外部js文件中? 如果你把它放在外部文件中,你如何解决对site_url()base_url() (当然除了我想要避免的绝对URL)。

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

   

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

我会以不同的方式做到这一点 – 显然,js应该是外部的,但为什么不充分利用这样一个事实,即你有一个非常适合处理所有javascript魔法的MVC框架?

这是我对CI的Javscript(和CSS)优点的配方:

  1. 拿一份Minify – 如果你还不知道,你的生活会更好。 不是在“ 一见钟情/我刚刚发现jQuery / xkcd /unit testing ”的方式,但至少在一个“ Dude,准备好的语句根除SQL注入 ”的方式。

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

  3. (可选)激活缓存以使所有内容都快速运行(Minify内置缓存,但如果您已经缓存了CI内容,则可以在此使用相同的方法。

  4. (可选)为Minify定义一些组,以使脚本加载更好

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

  6. 而且,您现在应该可以通过调用Minify-wrapper来加载脚本:

这是疯狂的快速,它是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 (...) 

至少这就是我的工作。

Donny,如果你开始单独浏览每个URL,你只会给自己一个球疼。 为什么不直接通过base_url()和contcat控制器/方法?

你失去了交换index_page和url_suffix设置的能力,但他们不应该真正改变所有这些。