【问题标题】:Routing Cakephp with BACKBONE JS使用 BACKBONE JS 路由 Cakephp
【发布时间】:2015-08-21 16:38:01
【问题描述】:
<script>
    var HomeView = Backbone.View.extend({
          template: '<h1>Home</h1>',
          initialize: function () {
              this.render();
          },
          render: function () {
              this.$el.html(this.template);
          }
      });
    var AboutView = Backbone.View.extend({
          template: '<h1>About</h1>',
          initialize: function () {
              this.render();
          },
          render: function () {
              this.$el.html(this.template);
          }
      });

      var AppRouter = Backbone.Router.extend({
          routes: {          
              '': 'homeRoute',
              'home': 'homeRoute',
              'about': 'aboutRoute',          
          },
          homeRoute: function () {
              var homeView = new HomeView();          
              $(".content").html(homeView.el);
          },
          aboutRoute: function () {
              var aboutView = new AboutView();          
              $(".content").html(aboutView.el);
          }
      });

      var appRouter = new AppRouter();
      Backbone.history.start();
    </script>
    <ul>
        <li><?php echo $this->Html->link('Home',array('controller' =>'pages','action' => 'home')); ?></li>
        <li><?php echo $this->Html->link('About',array('controller' =>'pages','action' => 'about')); ?></li>
    </ul> 

    How to convert the code above to make backbone.js like this in manual coding I seen in the NET.
    <div id="navigation">
        <a href="#/home">Home</a>
        <a href="#/about">About</a> 
    </div>   
    <div class="content">
    </div>

我只是这个人的新手,请帮助我。我现在正在阅读 Backbone js,任何人都可以帮助我解决这个问题。如果你有使用 cakephp 主干 js 的经验。我也想在 CRUD cakephp 上使用它。

【问题讨论】:

    标签: backbone.js routing cakephp-2.0 cakephp-3.0


    【解决方案1】:

    友情提醒:CakePHP 是一个服务器端库,其职责是将 HTML 或一些序列化数据(JSON、XML、二进制等)发送到您的浏览器。

    backbone.js 是一个客户端库,为客户端内容和事件处理提供构建块CakePHPbackbone.js 之间的唯一关系是 CakePHP 可能负责交付客户需要的任何脚本和资产。对于backbone.js,您可能无法了解特定于CakePHP 的任何信息。所以试着从“客户端”和“服务器”的角度来思考,而不是backboneCake

    现在,几乎每个网站都会有一些链接。当用户点击一个链接时,浏览器会将其视为一个事件并做出相应的响应。

    JavaScript 客户端可以通过进入浏览器和事件之间来扩展浏览器功能 - 也就是说,通过告诉浏览器,“我将处理这个事件,而不是你。”

    backbone.js 中,Backbone.history.start method 告诉浏览器退出并让backbone 处理某些事件:

    • window.onhashchange:所有浏览器都支持,只要 URL 的“hash”部分发生变化就会被调用;例如,如果您单击锚链接&lt;a href="#somewhere"&gt;Go somewhere&lt;/a&gt;,该事件将触发并调用侦听器。如果侦听器返回 true 以外的其他内容,则浏览器将不会像往常一样处理该事件,否则,您的浏览器 URL 将更改为 /path/to/page#somewhere
    • history.pushState and window.onpopstate:这是 HTML5 中的一项新功能,因此旧浏览器不支持它,但在这一点上,它已被广泛采用和使用。基本上,这是一个强大的 API,它为客户端开发人员提供了一种操作和重写浏览器导航历史的方法——不仅仅是 URL 的 hash 部分,而是整个事情——使用像 history.pushState(undefined, undefined, 'not/a/real/path'); 这样的语法(见链接)。相应地,有一个事件处理程序 window.onpopstate 将在浏览器 在历史链中向前或向后移动 时调用,但当我们调用 history.pushState!NOT!history.replaceState。这是一种良好的行为和设计。

    You need to decide what you want to use - hash-style URLs and/or "real" URLs - and then configure Backbone.history.start arguments accordingly。你可以同时使用,但我不推荐它。

    最后,请确保 **您在 JavaScript 中设置了所有内容,包裹在 $(document).ready(function() { ... }); 中。现在你不是。

    【讨论】:

    • 谢谢您的信息先生,我也希望我的网站能够快速加载“单页加载”,他们是一些建议 cakephp + angular 和 cakephp + 骨干 js、cakephp + ember 的文章,什么是最适合 CAKEPHP 的 JAVASCRIPT 框架?
    • @distromob 首先,如果我的回答回答了您的问题,请选择和/或投票:)
    • @distromob 现在是最好的......在我看来,我会选择 Angular。 Backbone 快死了,Ember 死了。我并不是说没有人在使用 Backbone/Ember,但几乎所有社区都在使用 Angular,这意味着你将更难与其他人一起找到帮助和支持以及新的库。此外,我已经使用了所有这三个,虽然我对 Backbone 了解更多,但我也更喜欢 Angular。基本上,除非你有理由不这样做,否则你应该使用 Angular。
    • @distromob 还有一件事——在过去一年左右的时间里,GitHub 上的工具和项目激增,它们是不同技术组合的“入门”或“支架”。 你应该尽可能地使用这些,因为它可以帮助你很多。例如,github.com/hantsy/angularjs-cakephp-sample 就在那里。如果您在想“不,我不想要 vagrant,看起来工作量太大”,这很容易,而且对您来说非常节省时间。
    • @distromob 又一件事——如果你必须使用 PHP——我不推荐它,但它没有人们说的那么糟糕(FB 使用了它的版本)-也许看看 Yii。根据我的经验,Yii 是一个非常可靠的框架。看quora.com/Which-is-a-better-framework-Yii-or-Cakephp
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-20
    • 2012-02-03
    • 1970-01-01
    • 2012-06-13
    • 1970-01-01
    相关资源
    最近更新 更多