在 MVC3 视图中使用嵌入式 JavaScript 还是单独的 .js 文件更好

Is it better to use embedded javascript or a separate .js file in an MVC3 view?

本文关键字:单独 js 更好 文件 JavaScript 视图 MVC3 嵌入式      更新时间:2023-09-26

有人告诉我,最好将Javascript代码放在一个单独的文件中,以保持关注点的分离,虽然这个想法引起了我的共鸣,但我发现它并不实用。

这可能只是我的经验不足,因此提出了这个问题。

这里有一个清晰的示例,我发现将代码放在视图中比将其放在单独的 javascript 文件中更好。

在我的视图中,我需要调用 JQueryUI 对话框,并使用模型的名称动态设置标题。

$("#thumbs img").click(function () {
    var url = $(this).attr("src");
    $(".image-popup").attr("src", url);
    return $("#image-popup").dialog({
        modal: true,
        closeOnEscape: true,
        minHeight: 384,
        minWidth: 596,
        resizable: false,
        show: {
            effect: 'slide',
            duration: 500,
            direction: 'up'
        },
        hide: {
            effect: 'slide',
            duration: 250,
            direction: 'up'
        },
        title: '@Model.Product.Name'
    });
});

通知:

title: '@Model.Product.Name'

如您所见,如果我在我的视图中使用 Javascript,我可以访问强类型模型。如果我使用单独的 Javascript 文件,情况并非如此。

我做错了吗,有什么我没有看到的吗?

如果我使用一个单独的文件,当我无法从 Javascript 文件中访问模型属性时,它会是什么样子?

单独的 js 文件:

<div id="thumbs">
    <img data-dialog-title="@Model.Product.Name" src="[whatever url]" />
</div?
$("#thumbs img").click(function () {
    var title = $(this).data('dialog-title');
    var url = $(this).attr("src");
    $(".image-popup").attr("src", url);
    return $("#image-popup").dialog({
        modal: true,
        closeOnEscape: true,
        minHeight: 384,
        minWidth: 596,
        resizable: false,
        show: {
            effect: 'slide',
            duration: 500,
            direction: 'up'
        },
        hide: {
            effect: 'slide',
            duration: 250,
            direction: 'up'
        },
        title: title
    });
});

使用 HTML5 data-* 属性通过 dom 不显眼地访问模型属性。上面的javascript可以很好地作为外部文件工作。

如果您不能使用上述HTML5数据属性,那么也许 http://nuget.org/packages/RazorJS 可以解决问题,似乎可以解决您的问题。