在asp.net-mvc中引用特定于PartialView的javascript的最佳实践是什么?
我有一个asp.nset-mvc站点,我有一个存在于许多不同视图中的局部视图 还有一个.js文件与该局部视图使用的功能关联 现在,我将js文件包含在每个父视图中,其中包含头部部分中的这个部分视图 我现在想,通过从每个父视图中删除对javascript文件的引用,并将该引用放在部分视图的主体中,维护起来就更容易了。(所以它只是列在一个地方)在asp.net-mvc中引用特定于PartialView的javascript的最佳实践是什么?,javascript,jquery,asp.net-mvc,Javascript,Jquery,Asp.net Mvc,我有一个asp.nset-mvc站点,我有一个存在于许多不同视图中的局部视图 还有一个.js文件与该局部视图使用的功能关联 现在,我将js文件包含在每个父视图中,其中包含头部部分中的这个部分视图 我现在想,通过从每个父视图中删除对javascript文件的引用,并将该引用放在部分视图的主体中,维护起来就更容易了。(所以它只是列在一个地方) 有人看到这一变化有什么负面影响吗?这是只被特定的局部视图利用的javascript的推荐做法吗?我认为一个好的解决方案是创建扩展方法,在局部视图中添加java
有人看到这一变化有什么负面影响吗?这是只被特定的局部视图利用的javascript的推荐做法吗?我认为一个好的解决方案是创建扩展方法,在局部视图中添加javascript
一个很好的例子:在我看来,你最好还是把它和其他脚本放在一起 您应该捆绑、缩小和“永久缓存”脚本。如果你这样做,那么即使是你网站的新用户也只有一个小文件可以下载。通过将其分解为多个文件,您只会造成伤害。对他们来说,最好是一次下载所有他们需要的东西 如果你的网站有很多不同的部分,你不会期望用户交叉,那么我会考虑单独的捆绑。例如,可能是未经验证的部分和“仅限成员”部分。即使这样,也不会有太大的区别,因此以一种对站点的整体架构有意义的方式将它们捆绑在一起可能更有意义(例如,可能只有成员的部分是不同的mvc区域) 但是,仅仅因为不是每个页面都会使用它,就单独拉出部分需要的脚本将适得其反
编辑:我想重读后我理解得更好了。我说的话仍然有效,但重点是捆绑销售。不要只在每个需要的页面上包含所有脚本的单个脚本引用。最好将站点需要的所有脚本基本捆绑起来,并将它们包含在每个页面上。使用缓存,用户只需下载一次,然后在浏览您的站点时,不会再发出脚本请求,而不是在每个页面的结尾都有另一个需要下载的独特脚本。我想问自己几个问题:
您需要记住,js文件是缓存的,如果普通用户将进入部分视图,他将需要下载脚本。
关于脚本\样式处理的良好实践:
使用组合的js文件并在生产中缩小它们。
这可以通过使用资产管理器或使用捆绑包“分组”js文件来实现
您还可以使用“require.js”加载依赖项脚本。
我没有使用过它,但据我所知,您可以设置依赖于其他模块和js文件的模块和js函数
您的问题的答案可以从这个问题的答案中得出:
-
你认为这个部分视图是整个Web应用程序的一部分,还是仅仅是一个单独的组件?
- 我们什么时候打包东西
因此,决策必须由其他指标决定,如脚本加载性能等。这超出了问题的范围,但提供的描述应该足以作为答案。通过将引用放在局部视图主体中来加载javascript是正确的策略。您可以避免所有其他页面上的解析和解释开销。即使您的javascript文件被缓存,在包含它的每个页面上执行它仍然需要时间(无论多么微小)。如果您有复杂的逻辑,或者在DOM上迭代,或者您有许多这样的文件,该怎么办 实际上,这是走向成熟依赖关系管理的第一步。如果您知道在哪个页面上使用了什么功能,那么将来任何重新分解或维护工作的成本都会降低 问题是如何从部分视图中引用javascript资源。您不想只转储一个
@{
Bundles.Reference("scripts/your-dependency.js");
Bundles.Reference("scripts/another-dependency.js");
}
<body>
...
</body>
@Bundles.RenderScripts()
</html>