JavaScript组件打包css image

JavaScript组件打包模式

js组件通常带着css image ,但这样使用起来可能会有些小麻烦,为了让组件足够的solo,有了把css image也打包在js的想法,然后顺便把请求数变少,这个顺便好像更重要,呵呵。

那怎样打包呢,虽然有resource-packages这样的方案,可是我们的核心用户还在玩ie6这种时尚的浏览器呢!

我的方案:

  • CSS:CSS可以当成字符串存在js里,并由js动态加到页面上,页面用的可能不适合,但组件通常不会影响。
  • image:CSS里用的图片用dataURI(RFC 2397)跟MHTML(RFC 2557)的方式编到js里面。(秦歌写的dataURI和MHTML依然推荐给不知道是什么东东的同学看)。CSS里如果要绝对路径同样可以存js,js如果有直接用到的理论上也是可以,但js通常只改className会比较好。
  • flash:一些比较小的flash,比如存储,复制等也可以选择打包,不过现在米解决非IE的问题,非IE使用外链吧

这个有个打包测试的例子。

一些细节和纠结的地方

  1. 所有图片都打包到js里不一定合理,打包进去的应该是必用的图片。
    那排除的图片是再打一个包好呢还是直接用图片?
  2. 图片可以先压后编,我选用的图片压缩工具是pngout,而且一般是用-s5
    有人做了些测试Uncompressed data in base64? Probably not,大家自行判断。
  3. 重复的图片引用直接用dataURI会搞得很大很大,gzip又笨得跟猪一样不会压掉。
    我是选用存成js变量,淘宝的同学是用提class的方式
  4. MHTML在ie7+/vista缺少结束分割符无法显示,win03sp2缺少Content-Type会有安全提示,原因都MIME不标准,不是所有的东西都可以省。
  5. 是选择把所有的东西都打包在一个文件还是按MHTML跟dataURI分类型打包成两份在server按ua派文件或由类库智能去读取,好像后者比较和谐。
  6. swf用dataURI编入有问题,据说fp8没问题,现在都fp10了。
    另一种solo的方案就是把js打包到swf,不过感觉不和谐

multipart/related例子

不算标准但能跑,换行也是很重要的

Content-Type:multipart/related;boundary="_BAIDU_YOUA_BB_YEP"

--_BAIDU_YOUA_BB_YEP
Content-Type:image/png
Content-Location:logo.png
Content-Transfer-Encoding:base64

...base64...

--_BAIDU_YOUA_BB_YEP
Content-Type:image/png
Content-Location:nono.png
Content-Transfer-Encoding:base64

...base64...

--_BAIDU_YOUA_BB_YEP--

btw:上篇文章的评论里发现了这个打包的站,输出界面很帅

时间: 2024-08-31 22:52:11

JavaScript组件打包css image的相关文章

[译] JavaScript 中的 CSS:基于组件的样式的未来

本文讲的是[译] JavaScript 中的 CSS:基于组件的样式的未来, 原文地址:CSS in JavaScript: The future of component-based styling 原文作者:Jonathan Z. White 译文出自:掘金翻译计划 译者:bambooom 校对者:Aladdin-ADD.reid3290 JavaScript 中的 CSS:基于组件的样式的未来 使用行内样式使我们可以获得 JavaScript 的所有编程支持.这让我们获得类似 CSS 预处

怎样在不使用框架的基础上开发一个 Javascript 组件

本文讲的是怎样在不使用框架的基础上开发一个 Javascript 组件, 许多开发者(包括我)犯的一个错误是当遇到问题时他们总是自上而下地考虑问题.他们想问题的时候,总是从考虑框架(Framework),插件(Plugin),预处理器(Pre-processors),后处理器(Post-processors),面向对象模式(objected-oriented patterns)等等这些方面出发,他们也可能会从他们以前看过的一篇文章来考虑.而这时如果有一个生成器(Generator)的话,他们当然

不要再在JavaScript中写 CSS了

本文作者是 react-css-modules 和 babel-plugin-react-css-modules 的作者.并不是对 CSS in JavaScript: The future of component-based styling,或是使用样式组件的反对,而是一种补充,web 开发者要了解自己的需求,明白自己使用 styled-components 的真正原因. 9 个谎言 CSS 不应随意放置.许多项目选择将样式写在 JavaScript 中的理由不对.本文列出了常见的误解,以及

全程记录开发一个完整的JavaScript组件教程

在浏览器中存在一些内置的控件 Alert,Confirm等,但是这些控件通常根据浏览器产商的不同而形态各异,视觉效果往往达不到UI设计师的要求.更重要的是,这类内置控件的风格很难与形形色色的各种风格迥异的互联网产品的设计风格统一. 因此,优秀的前端开发者们各自开发自己的个性化控件来替代浏览器内置的这些控件.当然,这类组件在网络上已经有不计其数相当优秀的,写这篇文章的目的是为了通过这种方式,与更多的开发者互相交流,互相学习,共同进步. 功能介绍     取代浏览器自带的Alert.Confirm控

JavaScript 组件之旅(四):测试 JavaScript 组件_javascript技巧

开发">本期,我们要讨论的话题是 JavaScript 的测试,以检查组件的状态和工作方式是否符合预期,还会介绍一个可以方便编写测试用例的测试方法.这里说的测试当然是使用自动化的测试手段,这是软件质量保证(QA)的重要环节.就本系列文章介绍的 Smart Queue 来说,我们的测试目标包括: Task 对象的创建:第二期的代码提供了多种创建方式,需要测试对象创建后的状态. Queue 内的任务运行次序:我们提供了两种改变运行次序的方式:优先级和依赖配置,同样也要测试各种配置对次序的影响.

如何开发一个完整的JavaScript组件

作为一名开发者,大家应该都知道在浏览器中存在一些内置的控件:Alert,Confirm等,但是这些控件通常根据浏览器产商的不同而形态各异,视觉效果往往达不到UI设计师的要求.更重要的是,这类内置控件的风格很难与形形色色的各种风格迥异的互联网产品的设计风格统一.因此,优秀的前端开发者们各自开发自己的个性化控件来替代浏览器内置的这些控件.当然,这类组件在网络上已经有不计其数相当优秀的,写这篇文章的目的不是为了说明我开发的这个组件有多优秀,也不是为了炫耀什么,只是希望通过这种方式,与更多的开发者互相交

用Ant构建JavaScript组件

我们走到哪儿了?前两期思考了太多东西,你是否已有倦意?别担心,本期的话题很轻松,你只需要简单了解一些语法,写几行配置,就能驱使系统按你预设的方式自动完成一些工作.听起来是不是很惬意?Let's go! 我们出发啦- 这期,我们会使用 Ant 将上期编写.整理的代码文件按指定的先后顺序合并成单一的源文件,然后压缩这个文件.这是构建 JavaScript 项目的基本步骤.Ant 是 Apache 的一个顶级开源项目,网上对它的介绍和安装,已经有很多文章,这里就不再赘述了.在构建之前,我们先来看看已有

开发模块化的JavaScript组件

现如今,虽然多数的web应用都使用了大量的JavaScript,但如何保持客户端功能的专注性.健壮性和可维护性依然是一个很大的挑战. 尽管其它编程语言和系统都已经将关注分离和DRY这样的基本原则视为理所当然的宗旨,但往往在进行浏览器端应用开发的时候,这些原则就被忽视了. 造成这一现象的部分原因是JavaScript语言本身就在不断挣扎的历史,在很长的一段时间内,它都难以获得开发者的认真关注和对待. 而更重要的原因或许是源于服务端与客户端的差异造成的.虽然在这方面已经有大量的架构风格方面的概念,例

JavaScript 组件之旅(一)分析和设计_javascript技巧

另一方面,由于 JavaScript 通常会和宿主环境(比如浏览器)紧密结合,因此缺乏功能强大而简单易用的开发工具.在这样的环境中,开发组件或框架成为一项具有挑战的工作.这次,我们将以一个简易的 JavaScript 组件开发为契机,逐步展开组件的分析.设计.实现.构建和测试等任务,探讨组件开发过程涉及的方方面面.这些探讨将分 4 篇陆续张贴出来(链接将在张贴后更新): 分析和设计组件 编码实现和算法 用 Ant 构建组件 测试 JavaScript 组件 现在,假设我们要从头开始设计并实现一个