2014-09-12 3 views
0

У меня был вид бритвы с встроенным javascript, который со временем стал беспорядочным, и теперь я перемещаю все js (за исключением некоторого минимального кода инициализации) во внешний файл машинописных файлов. Было бы неплохо сделать js-код повторно используемым, но он очень специфичен для этого конкретного представления. Код js сильно зависит от многих элементов html. Что у меня есть что-то вроде этого:переместить вид бритвы встроенный javascript во внешний файл машинописных файлов

module MyModule{ 

export class SomeClass{ 

    private $counter: any; 
    private $answers: any; 
    private $pager: any; 
    private $anotherSelector1:any; 
    private $anotherSelector2:any; 
    private $anotherSelector3:any; 
    private $anotherSelector4:any; 
    private someId: number; 

    constructor(public options: any) { 

     this.init(options); 

    } 

    private init(options) { 
     //setup objects, callbacks, other init code 
    } 
} 
} 

и я называю это из моего файла cshtml как это:

$(document).ready(function() { 

     var instance = new MyModule.SomeClass({ 
      $counter: $('#something'), 
      $answers: $('#something'), 
      $pager: $('#something'), 
      //code omitted for brevity 
      someId: "@Model.SomeId", 

     }); 


    }); 

Мне кажется, что даже если такой подход приведет к более чистому зрению бритвы , файл машинописного текста будет по-прежнему иметь много зависимостей от html DOM. Правильно ли я это делаю? Должен ли я рассмотреть возможность рефакторинга html в представлении? Кроме того, следует ли перенести код инициализации в файл cshtml в файл ts, а также оставить его как есть? Я как бы искал лучшие практики при выполнении таких рефакторингов.

ответ

0

Я не думаю, что вы делаете это неправильно :) хотя я понимаю вашу озабоченность.

Я думаю, что проблема, которую вы желаете, чтобы решить вроде как экологически чистого JavaScript без зависимости от DOM селекторов, кажется, что вы на самом деле хотите что-то вроде knockoutjs или angularjs, которая в основном своего рода шаблонного подхода. Оформите там демо-версию, как это делается.

Смежные вопросы