[英]move razor view inline javascript to external typescript file
我有一個內聯javascript的剃刀視圖,隨着時間的推移,它變得一團糟,現在我將所有js(一些最小的初始化代碼除外)移至外部打字稿文件。 使js代碼可重用會很好,但是它非常特定於此特定視圖。 js代碼在很大程度上取決於許多html元素。 我所擁有的是這樣的:
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文件中的init代碼也移到ts文件中還是應該保持原樣? 在進行這樣的重構時,我正在尋找最佳實踐。
我不認為您做錯了:)盡管我了解您的擔心。
我認為您要解決的問題有點像更清潔的JavaScript,而無需依賴DOM選擇器,看來您實際上想要的是類似基因敲除 js或angularjs的東西,這基本上是一種模板化方法。 在演示中查看如何完成。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.