Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/75.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 在web开发MVC模式中,在哪里放置繁重的jQuery代码?_Php_Jquery_Codeigniter_Model View Controller - Fatal编程技术网

Php 在web开发MVC模式中,在哪里放置繁重的jQuery代码?

Php 在web开发MVC模式中,在哪里放置繁重的jQuery代码?,php,jquery,codeigniter,model-view-controller,Php,Jquery,Codeigniter,Model View Controller,我正在建立一个网站,其中许多页面都是非常互动的,没有与web服务器进行任何通信。基本上,页面代表一种DHTML界面,用户可以在其中单击各种div来移动它们并执行其他操作。最后,用户能够在屏幕上保存所有div的“状态”,只有在该状态下,才会将HTTP请求发送到服务器 我尝试使用MVC方法(通过CodeIgniter),这些操作主要由JQuery和我编写的一些自定义JavaScript函数处理。我有很多JavaScript代码,涵盖了逻辑。目前,所有的代码都在CodeIgniter的MVC视图中,但

我正在建立一个网站,其中许多页面都是非常互动的,没有与web服务器进行任何通信。基本上,页面代表一种DHTML界面,用户可以在其中单击各种div来移动它们并执行其他操作。最后,用户能够在屏幕上保存所有div的“状态”,只有在该状态下,才会将HTTP请求发送到服务器

我尝试使用MVC方法(通过CodeIgniter),这些操作主要由JQuery和我编写的一些自定义JavaScript函数处理。我有很多JavaScript代码,涵盖了逻辑。目前,所有的代码都在CodeIgniter的MVC视图中,但我不知何故觉得这是错误的。我想我应该把一些代码移到某种控制器上,但是用JavaScript代替CI提供的PHP控制器


我应该用JavaScript创建某种并行MVC吗?

你可以。调查它允许您设置任何类型的结构,而不会干扰CodeIgniter的结构。它设置了一种资产区域,您可以根据需要设置自己的模块。不过,您可能会想到一种不同的分离方式,因为Javascript可能主要处理视图,尤其是在您不使用AJAX的情况下。因此,考虑将JavaScript(La java)打包成单独的文件夹,并进行逻辑分组。然后,使用asset helper,它只是一行简单的PHP命令,告诉您的程序使用您想要的任何东西。

您可以。调查它允许您设置任何类型的结构,而不会干扰CodeIgniter的结构。它设置了一种资产区域,您可以根据需要设置自己的模块。不过,您可能会想到一种不同的分离方式,因为Javascript可能主要处理视图,尤其是在您不使用AJAX的情况下。因此,考虑将JavaScript(La java)打包成单独的文件夹,并进行逻辑分组。然后,使用asset helper,它只是一行简单的PHP命令,告诉您的程序使用您想要的任何东西。

另外,在JavaScript中实现业务逻辑代码时,您必须注意的另一件事是,您运行的代码在应用程序的信任边界之外运行——也就是说,因为它在每个客户端上运行,从技术上讲,客户端向您发送错误数据是可能的。这可能是一个大问题,特别是如果前端有授权逻辑的话

由于不知道您的代码是什么,我会说您希望将需要高度信任的代码完全从JS中删除。将JS保存为UI sugar。如果这样做,那么在“视图”中包含大量JS代码是完全可以接受的——只要它只涉及到操作客户端表示


但另一方面,我确实看到了如何将此工作视为模型-视图-控制器(客户端)-控制器(服务器)模式。但我认为这没关系…

另外,在JavaScript中实现业务逻辑代码时,您必须注意的另一件事是,您运行的代码在应用程序的信任边界之外运行——也就是说,因为它在每个客户机上运行,所以从技术上讲,客户机可能向您发送坏数据。这可能是一个大问题,特别是如果前端有授权逻辑的话

由于不知道您的代码是什么,我会说您希望将需要高度信任的代码完全从JS中删除。将JS保存为UI sugar。如果这样做,那么在“视图”中包含大量JS代码是完全可以接受的——只要它只涉及到操作客户端表示


但另一方面,我确实看到了如何将此工作视为模型-视图-控制器(客户端)-控制器(服务器)模式。但我认为这没关系…

如果您最终拥有大量Javascript代码和运行客户端的大部分功能,那么服务器端就帮不上什么忙了。您需要将JQuery和其他JavaScript代码组织得很好。不确定是否存在专门用于JavaScript的MVC框架。我自己在几年前做过一次,当时我不得不使用大量JavaScript来处理这个项目。 然而,您不一定需要进行全面的MVC,只要有简单的模型和逻辑处理程序(控制器)就可以了。
但是,如果您的代码依赖于JavaScript,那么如果您不真正了解如何构建JavaScript软件,这将是一个巨大的错误。

如果您最终拥有大量JavaScript代码和运行客户端的大部分功能,服务器端将帮不上什么忙。您需要将JQuery和其他JavaScript代码组织得很好。不确定是否存在专门用于JavaScript的MVC框架。我自己在几年前做过一次,当时我不得不使用大量JavaScript来处理这个项目。 然而,您不一定需要进行全面的MVC,只要有简单的模型和逻辑处理程序(控制器)就可以了。
但是,如果您的代码依赖于JavaScript,那么如果您不真正了解如何构建JavaScript软件,这将是一个巨大的错误。

JavaScriptMVC是组织和开发大规模JS应用程序的最佳选择

建筑设计非常实用。使用JavaScript,您将要做四件事:

  • 对事件作出反应
  • 请求数据/操作服务(Ajax)
  • 将特定于域的信息添加到ajax响应中
  • 更新DOM
  • JMVC将其拆分为模型、视图和控制器模式

    首先,可能是最重要的优势,是控制器。控制器使用事件委派,因此您只需为页面创建规则,而不是附加事件。它们还使用控制器的名称来限制控制器工作的范围。这使您的代码具有确定性
    $.Controller.extend('TodosController',{
       'click' : function(el, ev){ ... },
       '.delete mouseover': function(el, ev){ ...}
       '.drag draginit' : function(el, ev, drag){ ...}
    })
    
    '.show click' : function(el, ev){ 
       Todo.findAll({after: new Date()}, this.callback('list'));
    },
    list : function(todos){
       $('#todos').html( this.view(todos));
    }
    
    <% for(var i =0; i < this.length; i++){ %>
       <label><%= this[i].description %></label>
    <%}%>