当前位置: 首页 > 面试题库 >

结合Angularjs和CodeIgniter

章鸿光
2023-03-14
问题内容

我正在使用CodeIgniter编写的现有站点上工作,我们正在考虑将AngularJS用于需要大量前端功能的某些页面,但我们不想替换所有CodeIgniter视图(一次(尚未))。

因此,我单击了由angular的路由器控制的链接,该链接由javascript处理,但下一个链接可能是应由CodeIgniter框架处理的“正常”请求。

有两种结合这两种方法的优雅方法吗?我真的不介意一些额外的客户端开销,因为该站点尚未在生产中运行。


问题答案:

听起来您正在随着角度应用程序的增长而逐渐减少使用CodeIgniter(CI)路由。这并不困难,但是需要很多细节。哪种方法有效取决于您的项目结构。
注意:我从Code Igniter URL中删除了index.php,因此下面的路径可能与默认路径不同。

1)CodeIgniter安装在根目录下

如果CI安装在服务器的根目录下,则可以在CI中创建一个文件夹(例如,我有一个“ ng”文件夹)。您的项目将如下所示:

    /controllers
    /models
    /ng
    (etc)
    /index.php (code igniter index file)

将.htaccess文件放入/ng以下文件中:

    Order allow, deny
    Allow from all

这允许/ng直接访问其中的文件,而不是通过CI的路由系统将这些请求发送回去。例如,您可以立即直接加载它:
example.com/ng/partials/angular-view.html

主页仍将由CodeIgniter创建,但现在它可以包含Angular资产,例如局部视图等。最终,您可以通过返回一个简单页面并从Angular中加载局部视图来替换CodeIgniter的大部分工作。/ng像是专为

此方法很好,因为CodeIgniter可以控制是否完全加载了初始页面(通过CI控制器中的某些用户身份验证代码)。如果用户未登录,他们将被重定向并且永远不会看到Angular应用程序。

2)目录中的CodeIgniter

如果CI安装在目录中,例如example.com/myapp/(code igniter)您可以简单地在目录旁边创建目录,example.com/myappNg/

    /myapp/
    /myapp/controllers/
    /myapp/models/
    /myapp/(etc)
    /myapp/index.php (code igniter index file)
    /myappNg/
    /myappNg/partials/
    /myappNg/js/
    /myappNg/(etc)

现在,在Angular应用程序中,您可以通过相对于域根而不是相对于Angular应用程序的路径来向CI请求资源。例如,在Angular中,您将不再需要从Angular文件夹中请求部分视图partials/angular- view.html,而是希望从CI中请求视图/myapp/someResource。注意开头/。首先,“
someResource”可以返回html文档,JSON或您对Code Igniter所做的任何操作。

最终,您可以替换引用的路径数/myapp/。一旦不再将CI用于任何内容,您只需将Angular
index.html放入其中/myapp/,它将继续在处引用您的路径/myappNg/

TL;
DR使Angular应用程序完全可用,并将其与CodeIgniter分离。逐渐转向使用Angular局部视图和其他JSON源,而不是链接到CodeIgniter页面。最后,使用引导Angular的HTML文件替换您的CodeIgniter端点。



 类似资料:
  • 问题内容: 我正在尝试在我的应用程序中通过turbolinks使用Angularjs框架。页面更改后,请勿初始化新的事件监听器。有什么办法可以使其工作吗?提前致谢! 问题答案: AngularJS与Turbolinks Turbolink 和 AnguluarJS 都可以用来使Web应用程序更快地响应,在某种意义上,响应用户交互,网页上发生了某些事情,而无需重新加载和重新呈现整个页面。 它们在以下

  • 本文向大家介绍玩转spring boot 结合AngularJs和JDBC(4),包括了玩转spring boot 结合AngularJs和JDBC(4)的使用技巧和注意事项,需要的朋友参考一下 参考官方例子:http://spring.io/guides/gs/relational-data-access/  一、项目准备 在建立mysql数据库后新建表“t_order” 修改pom.xml 二

  • 本文向大家介绍玩转spring boot 结合jQuery和AngularJs(3),包括了玩转spring boot 结合jQuery和AngularJs(3)的使用技巧和注意事项,需要的朋友参考一下 在上篇的基础上 准备工作: 修改pom.xml 修改App.java 新建“Order.java”类文件: 说明一下:这里我直接使用public字段了,get/set方法就不写了。 新建控制器“M

  • 问题内容: 我想将AngularJS和Twitter Bootstrap结合到一个新的Web应用程序中。似乎已为Bootstrap编写了AngularJS指令。 但是,仔细看,这些指令似乎并不涵盖所有的Bootstrap。我可以将AngularUI引导程序代码与原始引导程序结合使用以获得完整性吗?首先可以做到吗? 我偶然发现了另一个名为AngularStrap的 Angular项目。我可以将所有三

  • 本文向大家介绍实例详解angularjs和ajax的结合使用,包括了实例详解angularjs和ajax的结合使用的使用技巧和注意事项,需要的朋友参考一下 这是一篇关于easyui配合ajax使用的文章,顺带介绍angularjs的使用以及让你感受到angularjs的威力。网上对于ajax 的文也是多如牛毛 。我就不直接从那种原生的httpxmlrequest 对象的js 写起了哈。看那种东西也

  • 问题内容: 我最近开始学习AngularJS,并且正在考虑使用codeigniter作为后端(作为将数据插入,更新和删除MySQL数据库的API)和AngularJS作为前端框架来创建应用程序。所以我的问题是:我将如何实现?我要在两者之间传输数据吗? 我想通过示例了解一些细节,因为我找不到结合了两者的优秀视频教程。(找到了有关laravel和angular的一些教程,Ruby在rails和angu