javascript - 在没有 MV* 框架的情况下组织 jQuery AJAX

标签 javascript jquery ajax code-organization

我正在构建一个静态站点,需要页面之间平滑的页面转换。当单击任何链接时,这些页面将被 AJAX 加载,以保持顺利并防止页面重新加载。

由于所有内容都是静态 HTML(使用 Grunt 在本地编译),我认为不需要像 Backbone 或 Angular 这样的 MV* 框架。这可能有点矫枉过正,因为我并没有真正以任何有意义的方式处理数据。我真正需要的是 jQuery 库的 AJAX 部分。

我的问题是,有人知道有一个框架可以在 jQuery 中组织 AJAX 调用而不需要进一步的复杂性吗?或者是否有任何组织这些通话的提示,因为我可以看到它们很快就会变得困惑。

最佳答案

如何创建一个包含所有静态页面( View )和相关 href anchor 的对象,例如:

var views = [

   { view: '/about.html',href:'#about'},
   { view: '/contact.html', href'#contact'}

];

所以在html中

<a href="#contact">Contact</a> |
<a href="#about">About</a>

<div id="viewStage"></div>

使用一些jquery和一个函数来监视地址栏中的哈希更改并将其连接到为其定义的 View 。:

(function() {

   var $viewStage = $('#viewStage');

   function loadView(view) {

     $viewStage.html('<div class="loading"></div>').load(view);

   }

   /* matches the hash url to the view in the 'views' array of objects */
   function getView(hash) {
      for (var i=0, i < views.length; i++) {
         if (views[i].href === hash) { return views[i].view; break; }
      }    
   }

    /* listen for the anchor hashtag change */
    $(window).on('hashchange', function() {

       loadView(getView(document.location.hash));

     });

})();

除了 之外,我没有解决在加载之间创建页面过渡效果的问题,希望您能看到在 loadView() 中,我们有机会在您清除之前做一些事情#viewStage div 中的 html 并加载新内容。


这是我希望的一些东西的开始(没有 M 和有争议的 C 的 MVC)简短而友好 - 因为它对地址栏中的哈希使用react。


编辑:这里有一个 jquery 哈希更改监听器抽象可供使用 - 所以添加了这一点。

关于javascript - 在没有 MV* 框架的情况下组织 jQuery AJAX,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23687769/

相关文章:

jquery - 变换 :scale and :nth-child() selector don't work

javascript - AJAX 返回的字符串未验证

javascript - Localstorage 在 Firefox 中无法正常工作。返回空对象

javascript - 如何使用 setTimeout 或 setInterval 和 JQuery 显示然后隐藏元素?

javascript - 将短划视为点击

javascript - iframe src 属性随参数变化

jquery - 使用 AJAX 将 sessionStorage 对象 POST 到 Flask

javascript - 使用 json_encode() not and object 从函数返回 php 关联数组到 ajax 调用

javascript - 如何创建 Chrome 扩展程序以使用 JavaScript 隐藏或删除页面元素?

javascript - Angular 5 URL 路由,单击按钮并保留 url 中的查询字符串参数