在MVC中使用第三方javascript

在MVC中使用第三方javascript,javascript,php,.htaccess,mod-rewrite,Javascript,Php,.htaccess,Mod Rewrite,我试图调用位于~/vendor/目录(见下面的模式)中的javascript函数,但没有成功。如果我将javascript移动到我的目录~/public/js/中,调用就会成功 我相信我的问题可能来自于我的.htaccess文件,但尽管阅读了很多资料,我还是没有找到解决方法。如果有人能给我指出正确的方向,我会很高兴的 这是目录结构(注意root和public/中的.htaccess): / 应用/ 配置/ 控制器/ 模型/ 观点/ 公开的/ css/ 图像/ js/从PHP的外观来看,唯一应该放

我试图调用位于~/vendor/目录(见下面的模式)中的javascript函数,但没有成功。如果我将javascript移动到我的目录~/public/js/中,调用就会成功

我相信我的问题可能来自于我的.htaccess文件,但尽管阅读了很多资料,我还是没有找到解决方法。如果有人能给我指出正确的方向,我会很高兴的

这是目录结构(注意root和public/中的.htaccess):

/
应用/
配置/
控制器/
模型/
观点/
公开的/
css/
图像/

js/从PHP的外观来看,唯一应该放在公共目录之外的代码是应用程序级代码

服务器加载的所有其他资产都应该位于public目录中,这就是为什么它被称为public,因为公众可以通过web服务器的请求访问它

另一种方法是在项目根目录下创建一个js源目录,并使用任务管理器(如Grunt或Gulp)编译js并将其复制到公共目录中,如下所示:

project-name/
  application/
    config/
    controllers/
    models/
    views/
  public/
    css/
    images/
    js/     <- is filled with js from js-source/ by grunt/gulp
    .htaccess
    index.php
  js-source/
    vendor/
    main.js  <- is uglified/concatinated & copied into public/js by grunt/gulp
.htaccess
项目名称/
应用/
配置/
控制器/
模型/
观点/
公开的/
css/
图像/

js/我建议:

public/js/Vendor
public/css/Vendor


这是最好的办法。我认为,如果您只需将供应商文件夹添加到public(我认为它应该放在这个位置),那么重写规则是不好的做法。

您可以将您的htaccess从公共库复制到供应商库,这样它就会覆盖您的根目录htaccess。

为什么不使用“public/js/Vendor”文件夹呢。这就解决了你的问题。是的,根据那些重写规则,只有你的
public
目录是公共的。更改规则或移动文件。True,但该供应商也有我想使用的CSS。将与此供应商相关的所有内容都放在一个目录中,而不是放在/public/css/vendor/style.css和/public/js/vendor/jscript.js中,这似乎更干净。您可以放“public/vendor/whatever”文件夹吗?这样说,我认为,当您可以将供应商文件夹添加到public目录中时,重写规则是不好的做法(这是我认为它应该去的地方)。谢谢你的回答,但是Andy提出的解决方案非常有效。不用担心,如果我没有使用Grunt或Grunt,我会按照Andy的建议去做。但是我认为这是一个很好的机会来建议一个更现代的替代方案,Grunt和Grunt是我强烈建议你研究的好工具,也许不是在这个项目上,b也许下一天。
<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^(.*)$ index.php?page=$1 [PT,L]
</IfModule>
project-name/
  application/
    config/
    controllers/
    models/
    views/
  public/
    css/
    images/
    js/     <- is filled with js from js-source/ by grunt/gulp
    .htaccess
    index.php
  js-source/
    vendor/
    main.js  <- is uglified/concatinated & copied into public/js by grunt/gulp
.htaccess
public/js/Vendor
public/css/Vendor
public/Vendor/js
public/Vendor/css