簡體   English   中英

將razor視圖內聯javascript移動到外部打字稿文件

[英]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選擇器,看來您實際上想要的是類似基因敲除 jsangularjs的東西,這基本上是一種模板化方法。 在演示中查看如何完成。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM