在单个模板多项目站点中组织 CSS 和 Javascript
让我们从一些背景开始。我手里有什么?
- 多个 Web 应用程序(所有 .NET:WebForms 和 MVC)
- 通用 UI 模板
- 每个应用程序也有自己的 UI 元素。
- css/javascript 的多个文件。有些是所有应用程序通用的,有些是特定于应用程序的。
- 每页十分之几的文件 = 每页多个请求 = 慢。
问题:对于我实现以下目标的想法,您有什么想法或意见吗?
- 将请求数量减少到最低限度。
- 缩小 css 和 javascript。
- 使用 CDN 来分发它们。
- 有生活并且能够管理UI区域。
想法 1
将 UI 集中在项目中。每个 UI 小部件都会有一个示例(可以稍后进行测试)。
我可以“构建”ui:缩小、分组、发布到全球已知的地方。应用程序可以链接到这些全局文件并使用 UI 元素。
这将在做 UI 时强制一些纪律。它不会是“修改一些 CSS 就完成了”。三个月后,一切都充满了黑客,你在修复某些东西时不知道从哪里开始。
坏:您在一个应用程序上工作,但 UI 部分您必须先在另一个项目中工作。转到那里,创建您的小部件,然后在您的应用程序中使用它们。
想法 2
忘记 CDN 的想法并使用一些动态 .NET 压缩器/打包器。我将分享基本的 UI 部分,每个应用程序都会在运行时动态生成它们所需的包。
坏:没有 CDN,动态生成您知道是静态的内容,没有集中的 UI 位置(您有一个共同的基础,但没有其他)。
Let's start with a bit of context. What do I have in my hands?
- Multiple web applications (All .NET: WebForms and MVC)
- Common UI template
- Each application has also it's own UI elements.
- Multiple files for css/javascript. Some common to all applications, some specific to the application.
- Tenths of files per page = multiple requests per page = slow.
Question: Do you have any ideas or comments on my ideas to achieve the following Goals?
- Reduce the number of requests to the minimum.
- Minify css and javascript.
- Use a CDN to distribute them.
- Have a life and be able to manage the UI area.
Idea 1
Centralize the UI in a project. Every UI widget will be there with a sample (that can be tested later).
I can "build" the ui: minify, group, publish to a global known place. Applications can link to these global files and use the UI elements.
This will force a bit of discipline when doing the UI. It won't be a "hack some CSS and you're done". And after 3 months everything is full of hacks and you don't know where to start when fixing something.
The bad: you work on an application but the UI part you have to work it first in another project. Go there, create your widgets, and then use them in your app.
Idea 2
Forget the idea of the CDN and use some dynamic .NET minifier/packer. I will share the basic UI parts and every application will generate dynamically the packages they need in runtime.
The bad: No CDN, dynamically generate something that you know is static, no centralized place for the UI (you have a common base, but nothing else).
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
我们通过在 SVN 中使用外部来完成类似的事情。即集中拥有一个主副本(单独的项目是明智的),然后使用 SVN 外部进行更新并分发到所有需要它的位置。
如果您使用版本号,您还可以实现 CDN,并解决某些网站在不同阶段发布的任何发布问题。
我猜你可能没有使用SVN,而只是一个想法。缩小可以使用 YUI 压缩器来完成,关于这方面的信息很多。
We do something similar by using externals in SVN. I.e. have a master copy centrally (separate project would be sensible) and then use SVN externals to get updated and distributed to all locations that need it.
If you used version numbers you could also achieve you CDN and also get around any release issues where some sites are released at different stages.
I guess you may not be using SVN but just an idea. Minifying can be done with the YUI compressor, plenty of information on that in the wild.