У меня был вид бритвы с встроенным 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, а также оставить его как есть? Я как бы искал лучшие практики при выполнении таких рефакторингов.