1.遇到的问题

  2.目标

  3.探讨

  4.架构设想

  5.流程

      6.初步实现

  7.存在问题

  8.最后

 

 遇到的问题

         我在这个系列上篇文章 已经讲解并开始逐步应用模块化思想,不知大家还记不记得,题目:【PC网站前端架构探讨系列】结合公司网站首页,谈前端模块化开发与网站性能优化实践 。但是,仍然会存在下列问题:

            问题1----模块内部脚本和页面联系密切

     问题2----所有脚本文件集中放于一个目录,脚本目录不清晰,没有层次

   当然还有其他很多问题,但就以上两大问题来说,会对后期代码维护带来不便!

  目   标

      尽量将页面和脚本进行分离,以及方便开发人员维护管理,形成一个固定的代码规范;其二,项目的结构清晰,层次明确,功能突出。所以,需要设计一个合理的前端架构来解决当前以及后期会遇到的问题

  探   讨

       思想方面

    针对耦合性问题,业界流行的新一种架构思想——“MVC””MVVC”,但大多这种思想用于WAP开发中,国内很少的PC网站有用过,比如,有道好像用的是Backbone框架…

       

       技术角度

       在seajs模块划分的基础上

             1. backbone+underscore(MVC)

             2. knockout(MVVM)

       目前这两种用的较多,而且社区文档比较多,但是都比较适合单页面的应用,最主要就是开发方式会有很大转变….很难上手…感觉不太适合普通中小型的PC网站开发以及后期维护

       

      下面列出相关示例代码:(Backbone)

       

 1    define('module/home/index', ['backbone'], function(reuqire) {
 2     var Backbone = reuqire('backbone');
 3     App.Models.Home = Backbone.Model.extend({});
 4 
 5     App.Collections.Home = Backbone.Collection.extend({
 6         model: App.Models.Home
 7     });
 8 
 9     App.Views.Home = Backbone.View.extend({
10         el: '#container',
11         initialize: function(c) {
12             this.Collections = c;
13             this.render();
14         },
15         render: function() {
16             var html = '';
17             this.Collections.each(function(m) {
18                 html += '<div><a href="' + m.get('link') + '">' + m.get('name') + '</a></div>';
19             });
20             this.$el.html(html);
21         }
22     })
23 
24     return function() {
25         //模拟数据
26         var hc = new App.Collections.Home();
27         hc.add([
28             {'name': '加载模块A', 'link': '#at/m/a/name:moduleA/other:nothing'},
29             {'name': '加载模块B', 'link': '#at/m/b'}
30         ]);
31         new App.Views.Home(hc);
32     }
33 });
View Code

相关文章:

  • 2022-12-23
  • 2021-11-03
  • 2021-04-12
  • 2021-09-16
  • 2021-04-13
  • 2021-04-19
猜你喜欢
  • 2021-10-10
  • 2021-06-09
  • 2022-12-23
  • 2021-11-27
  • 2021-06-03
  • 2022-02-28
  • 2022-03-10
相关资源
相似解决方案