我正在开发一个应用程序,使用主干、下划线和 jquerymobile。按照 jqmobile 的方式,我有一个索引页面,它在特殊div
的 s 标记中加载每个访问过的页面,并用属性标记data-role="page"
。对于每个页面,我都有其相应的样式文件(或嵌入在style
html 标记中的代码片段)。我的问题是我的可样式化内容的名称开始发生冲突。另一件事是我不希望为每个页面加载不必要的样式文件。有什么方法可以只动态导入当前页面所需的 css 吗?
问问题
4406 次
2 回答
6
我正在使用RequireJS和RequireCSS插件完成你所要求的。
这是我的一个观点的片段:
define([
'jquery',
'underscore',
'backbone',
'views/company/form',
'text!templates/company/company.html',
'css!../../../css/company/company',
], function($, _, Backbone, Form, pageTemplate) {
var Page = Backbone.View.extend({
...
});
return Page;
});
第 7 行,'css!../../../css/company/company'
是 css 文件成为加载此视图的要求的地方。
加载样式表后,company.css
即使加载其他“页面”,它也会在浏览器中,因为没有实际的页面刷新。因此,我的主页视图在<html>
元素上切换了一个类:
// remove any old route-* classes existing on the html element
$('html').removeClassRegEx(/^route-.*/);
// add in the company's top-level class name
$('html').addClass('route-company');
并且我的所有页面特定样式company
都限定在.route-company
该类范围内。
于 2012-12-08T03:05:35.263 回答
0
一种方法是使用jquery(你 90% 已经在使用骨干网),以及它的load
或get
ajax 函数,或其他任何东西,加上回调。
然后,如果需要,您可以从骨干应用程序中调用此类函数,并将<style>
标签内的 css 作为模板注入到您的文档中。
或者我认为还有专门的 jquery 函数。
我能想到的另一种方法是使用require.js和它的插件(text
我相信它有插件,它也可以让你加载你的 javascript 模板)。
于 2012-12-07T04:47:40.040 回答