【问题标题】:How should I integrate some javascript into a php application?我应该如何将一些 javascript 集成到 php 应用程序中?
【发布时间】:2011-04-23 02:35:08
【问题描述】:
我有一个中等大小的遗留 php 应用程序,几乎没有 javascript 集成。我最近一直在使用 Douglas Crockfords excellent book 学习 javascript(是的,实际上是在学习它),并将 YUI 作为我选择的库。我已经尝试了一些东西并得到了一些工作,但现在我想将各种组件等正确地集成到我的应用程序中,我的问题是如何去做以方便维护和代码重用。
目前该应用程序包括
- php 页面
- 为页面的每个部分提供智能模板(带有一些特殊模板标记的 html 模板),因此单个页面可以使用多个模板。
- 单个 css 文件。
关于如何将我的 javascript 集成到页面中,我有以下想法。
- 在每个 smarty 模板中使用该部分所需的代码编写内联 javascript。
- 编写一个单独的 .js 文件以与链接的每个 smarty 模板一起使用,然后编写一个内联脚本来运行它。
- 每个 php 页面都有一个单独的 .js 文件,该文件将具有整个 .php 页面所需的所有功能。一个小的内联函数可以调用任何需要的函数。
- 我还没有想到什么?
这有意义吗?有人对此有什么好的建议吗?
更新:
一个额外的信息是它是一个内部应用程序,因此将所有内容限制在一个文件中并不是那么重要。
【问题讨论】:
标签:
php
javascript
yui
integration
smarty
【解决方案1】:
另外两个选项:
- 包含整个站点的所有 JS 的单个 JS 文件。根据您的缓存设置,您应该能够让用户为整个网站只下载一个文件,并为每个其他页面使用一个缓存版本。
- 根据功能而不是页面划分您的 JS,并包含每个页面所需的任何功能。例如。一个页面可能需要标签、表单验证和动画,而另一个页面可能只需要标签。
或者您可以混合使用:一个包含绝大多数代码的 JS 文件和一个额外的文件(如果需要用于特定页面或模板)。
提到的所有方法都错误(尽管我会尽可能地跳过内联 JS);哪个最好取决于您的具体情况和您的个人喜好。
【解决方案2】:
首先,大多数设置都允许一个主布局模板,您可以在其中放置一个公共页面开头,或者,每个模板都包含一些全局标题。
话虽如此,你应该做 1、2 和 3 的组合:
拥有一个包含在所有包含全局功能的模板中的.js。每个模板还可以选择拥有自己的.js,特定于该页面或页面部分。最后,如果有少量代码特定于页面(或者必须每次都动态生成),那么为它启动另一个 http 连接是没有意义的,所以应该让那个源在模板中正确。
【解决方案3】:
如果您没有大量的 javascript,则创建一个外部 js 文件并将其包含在网页的标题中并完成它。