Javascript 什么时候使用JS框架过度开发应用程序

Javascript 什么时候使用JS框架过度开发应用程序,javascript,jquery,design-patterns,backbone.js,ember.js,Javascript,Jquery,Design Patterns,Backbone.js,Ember.js,因此,我现在开发了一个JS库,它目前执行一系列操作,并使用其他框架生成一系列图表。。。我的问题是,我应该使用像backbone.js或ember.js这样的框架来利用和改进我的应用程序吗? 我想知道我是否应该利用某种框架来编写我的应用程序?我一直将其视为一个插件/类。我应该在哪里划界 应用程序流程: 获取它需要构建的所有图表的数据集,包括标题等。。。这可以是100多个图形 基于数据集构建HTML标记 在DOM Ready上,为添加到标记中的每个Graph div调用我的Graph lib。。。它

因此,我现在开发了一个JS库,它目前执行一系列操作,并使用其他框架生成一系列图表。。。我的问题是,我应该使用像backbone.js或ember.js这样的框架来利用和改进我的应用程序吗? 我想知道我是否应该利用某种框架来编写我的应用程序?我一直将其视为一个插件/类。我应该在哪里划界

应用程序流程:

  • 获取它需要构建的所有图表的数据集,包括标题等。。。这可以是100多个图形 基于数据集构建HTML标记
  • 在DOM Ready上,为添加到标记中的每个Graph div调用我的Graph lib。。。它将执行一系列操作来构建图形,就像AJAX调用一样,通过第三方框架获取数据/准备数据/加载图形
  • 用户可以通过单击这些图形并将焦点设置为主要内容来与它们交互
  • 有选项的窗口以及图形上更详细的信息
  • 目前我是这样写的。

    var App = App || {};    
    App.Graph = function(options){
           var _default = {version:null};
           var _options = extend(options,_default);
           var __int = function(){
                // do work....
           };
           var __getData = function(){
                // do work...
           };
           var __genChart = function(){ 
               // do work...
           };
           var __load = function(loadBig,callback){
               // do work....
           };
           this.load = function(big,callback){
               // do work....
           };
           __init();
        };
    
      var Graph = function(options){
           var _default = {version:null};
           var _options = extend(options,_default);
           var __int = function(){
                // do work....
           };
           var __getData = function(){
                // do work...
           };
           var __genChart = function(){ 
               // do work...
           };
           var __load = function(loadBig,callback){
               // do work....
           };
           this.load = function(big,callback){
               // do work....
               return __genChart();
           };
           __init();
        }; 
       var App = Ember.Object.extend({
          graph: null,
          init: function(thing){
              // do work...
              this.graph = new Graph();
          },
          load: function(thing) {
             // do work...
             return this.graph.load(big,callback);
          }
        });
    
    与类似于。。。我知道我可能做得不对。

    App.Graph = Ember.Object.extend({
      init: function(thing){
          // do work...
      },
      load: function(thing) {
         // do work...
         var __int = function(){
            // do work....
         };
         var __getData = function(){
            // do work...
         };
         var __genChart = function(){ 
           // do work...
         };
         var __load = function(loadBig,callback){
           // do work....
         };
         return __load(loadBig,callback);
      }
    });
    
    与可能的组合,以便我可以重用图形框架…

    var App = App || {};    
    App.Graph = function(options){
           var _default = {version:null};
           var _options = extend(options,_default);
           var __int = function(){
                // do work....
           };
           var __getData = function(){
                // do work...
           };
           var __genChart = function(){ 
               // do work...
           };
           var __load = function(loadBig,callback){
               // do work....
           };
           this.load = function(big,callback){
               // do work....
           };
           __init();
        };
    
      var Graph = function(options){
           var _default = {version:null};
           var _options = extend(options,_default);
           var __int = function(){
                // do work....
           };
           var __getData = function(){
                // do work...
           };
           var __genChart = function(){ 
               // do work...
           };
           var __load = function(loadBig,callback){
               // do work....
           };
           this.load = function(big,callback){
               // do work....
               return __genChart();
           };
           __init();
        }; 
       var App = Ember.Object.extend({
          graph: null,
          init: function(thing){
              // do work...
              this.graph = new Graph();
          },
          load: function(thing) {
             // do work...
             return this.graph.load(big,callback);
          }
        });
    

    提前谢谢

    这是一个相当广泛的话题,尤其是当我们对你的应用程序唯一了解的是它会生成图表时。你特别挑选主干和余烬有什么特别的原因吗?我注意到你也使用了jquery标记…@nnnnnn,所以当用户选择一个时,应用程序将生成很多交互式图形,它将在主页中加载另一个图形,用户可以对该图形进行操作。。。因此,图形库还有更多的工作要做。我尽量不使用Jquery ref,因为它不应该使用。在使用了许多JS框架之后,比如YUI3、主干、CanJS等,我可以说的是,框架为您的应用程序带来了文档化的结构。假设您在一个团队中工作,每个人都知道当他们必须实现一项功能时会发生什么。它还删除了常见的样板代码。例如:主干具有in-events散列,它去掉了您为添加侦听器而编写的代码,并实现了使用委托的标准,并提供了干净的API来清除这些侦听器和引用。因此,框架确实在某种程度上有所帮助,您不必花费大量时间编写初始代码。