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例子

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

如何利用 `Vite` 的 `lib` 模式,将 Vue 组件库打包为多种格式,并支持按需引入? 话说,咱们辛辛苦苦撸出来的 Vue 组件库,如果打包出来只能一股脑儿地全部引入,那简直就是暴殄天物,浪费用户的带宽和感情嘛!Tree-shaking,顾名思义,就是“摇树”,把组件库里没用的代码“摇”掉,减小体积。记住,组件库开发不是一蹴而就的,需要不断学习和实践,才能打造出高质量、易用的组件库。所以,组件库打包,必须得支持按需引入,就像去餐厅吃饭,想吃啥点啥,多自由!模式,像变魔术一样,把你的 Vue 组件库打包成各种口味,还能按需点单,简直不要太方便!插件,它可以自动注册组件,无需手动引入。 阅读详情

相关推荐

js代码库,封装经常用到的组件

control.js platform.js 自己经常用到的

# Vue 组件开发打包、Vue 项目打包、js库组件库打包使用

Vue 项目打包、组件打包使用 vue-cli 脚手架项目打包步骤 使用 vue-cli 脚手架新建项目 新建vue项目的过程见:https://blog.youkuaiyun.com/qq_37248504/article/details/107169812 打包配置说明 打包的配置在build下 常量config在vue/config/index.js 文件下配置 需要修改vue/config/index.js 文件下的将build对象下的assetsPublicPath中的/,改为./ 采用npm run

不积跬步,无以至千里;不积小流,无以成江海 1万+

Ubuntu开发环境配置——持续更新

本文简要介绍了Ubuntu下的开发环境配置流程和问题分析与解决,更多内容持续更新中。

m0_53365889的博客 2224

JS 打包格式

在你的代码中,umd 可能是指你的 JavaScript 代码将被打包为 UMD 格式,这样它可以在多种环境中运行。在这种格式中,你可以使用 import 来导入模块,使用 export 来导出模块。在这种格式中,你可以使用 require 来导入模块,使用 module.exports 或 exports 来导出模块。:这种格式旨在兼容 CommonJS 和 AMD,使模块可以在多种环境中运行(如浏览器和 Node.js)。RequireJS 是最知名的使用 AMD 格式的库。

weixin_43867229的博客 504

Penpot自托管全攻略:5分钟搞定私有化部署(附Docker配置详解)

本文详细介绍了Penpot开源原型设计工具的私有化部署全流程,从Docker基础配置到企业级优化方案。通过分步指南和实战技巧,帮助设计团队快速搭建安全高效的自托管环境,实现数据自主可控。内容涵盖LDAP集成、性能监控、备份策略等关键企业需求,是Penpot私有化部署的完整参考手册。

sugar的博客 1131

别光看教程了!手把手带你用STM32F103C8T6最小系统板点亮第一个LED(附完整电路图)

本文详细介绍了如何使用STM32F103C8T6最小系统板点亮第一个LED,从硬件连接到软件开发环境搭建,再到编写和下载程序,手把手教你完成STM32入门的第一步。适合初学者快速上手STM32开发,附完整电路图和代码示例。

weixin_28678831的博客 193

这才是现代 JavaScript 库打包指南!

大厂技术高级前端Node进阶点击上方程序员成长指北,关注公众号回复1,加入高级Node交流群本指南旨在提供一些大多数库都应该遵循的一目了然的建议。以及一些额外的信息,用来帮助你了解这些建议被提出的原因,或帮助你判断是否不需要遵循某些建议。这个指南仅适用于 「库(libraries)」,不适用于应用(app)。要强调的是,这只是一些「建议」,并不是所有库都必须要遵循的。每个库都是独特的,它...

程序员成长指北 377

告别CMake依赖!在Visual Studio 2022中直接配置VTK 9.4开发环境(附完整项目示例)

本文详细介绍了如何在Visual Studio 2022中直接配置VTK 9.4开发环境,无需依赖CMake。通过图文教程和完整项目示例,帮助C++开发者快速集成VTK库,简化开发流程,提升工作效率。特别适合科学可视化任务的开发者。

weixin_26804345的博客 414

JavaScript打包工具

这些JavaScript打包工具的主要作用是将多个JavaScript文件打包为一个或多个文件,以便在Web页面上加载时更加高效和快速。同时,这些工具还支持各种新的JavaScript特性和编译器,以增强开发者的生产力和代码质量。它支持多种文件格式和多个入口点,并且具有自动转换和代码分割等功能。Parcel的主要作用是简化JavaScript应用程序的打包和发布流程。它能够生成高效的库文件,支持多种模块格式,并且具有轻量级和高性能的特点。Rollup的主要作用是缩小库文件的大小,减少生产环境的负担。

weixin_59246157的博客 1497

【2026OD新机考】【哈希表】20260422-文章特征提取【Py/Java/C++/C/JS/Go六种语言OD真题】【欧弟算法】全网注释最详细分类最全的华子OD真题题解

90+天陪伴式学习,100+直播课时,300+动画图解视频,500+LeetCode经典题,500+华为OD真题/大厂真题,还有简历修改、模拟面试、陪伴小群、资深HR对接将为你解锁。这道题的本质是多集合交集问题的变形,属于非常典型的哈希表应用题。,储存全局的每个片段中,各个字符最少出现的次数。表示该字母并非所有片段的公共字母。,按照顺序构建答案即可。没有字母在所有三个字符串中都出现。每个字母在各字符串中都至少出现。次,所以结果中每个字母出现一次。这样,当上述循环结束后,最终。显然在上述代码中,如果字母。

weixin_48157259的博客 66

手把手教你学Simulink--基础电机控制场景实例:基于Simulink的无刷直流电机六步换相仿真

摘要:本文详细介绍了基于Simulink的无刷直流电机(BLDC)六步换相仿真方法。文章首先阐述了BLDC六步换相控制的原理,包括霍尔传感器定位、六步换相逻辑和方波电流驱动三大支柱。然后通过电动工具(角磨机)应用场景,展示了如何在Simulink中搭建完整的六步换相系统:从主电路构建、霍尔信号生成、Stateflow换相逻辑实现到开环电压控制。仿真结果显示该系统具有低成本优势(仅需霍尔传感器),但存在±20%转矩脉动。文章还提供了核心代码实现,包括霍尔信号生成、六步换相状态机和转矩分析脚本,并对比了六步换相

MHD0815的博客 147

多页模式组件ui的一些感觉

多页模式 模拟 单页模式 的组件开发就是 自己设置好css以及js。 然后用html标签触发css和js 因此编写ui组件其实是在一个固定的标签类名的情况下完成样式逻辑的编写,然后 打包css和js 逻辑 可以参考layui ...

qq_39175306的博客 156

Matlab 曲面平滑与点云处理

曲面平滑是一种常见的数学和计算机图形学技术,可以用来消除噪声、填补数据间隙,以及改善曲面的外观。在点云处理中,曲面平滑也被广泛应用于重建、拟合和可视化等领域。本文将介绍如何使用 Matlab 进行曲面平滑和点云处理,并提供相应的源代码。通过以上步骤,我们可以使用 Matlab 进行曲面平滑和点云处理。你可以根据具体需求调整参数和算法,以获得理想的曲面平滑效果。接下来,我们可以使用平滑算法对三角化的网格进行曲面平滑。以上代码将绘制原始点云和重建后的点云,并在图形中显示坐标轴和图例。表示平滑的迭代次数。

QfcaLinux的博客 752

icepkg:快速构建 React 组件和 Node 模块

icepkg:快速构建 React 组件和 Node 模块 项目介绍 在现代化前端开发中,高效、快速的构建工具是提升开发效率的关键。icepkg 正是这样一款出色的构建工具,它专为 React 组件、Node 模块以及 Web 库而设计。icepkg 旨在通过其高效的编译和压缩能力,帮助开发者提升项目构建的速度,从而更好地专注于业务逻辑的实现。 项目技术分析 icepkg 使用了 swc 进行代码...

gitblog_00829的博客 704

YOLOv11改进 | 损失函数改进篇 | 2024最新高质量的目标检测边界框回归损失Unified-IoU、FocalUIoU、FocalInvUIoU(设置动态epoch参数)

本文给大家带来的改进机制是最近新提出的高质量的目标检测边界框回归损失,其通过动态调整模型对不同质量预测框的关注,优化目标检测中的边界框回归精度。UIoU引入了FocalBox方法,通过缩放预测框与真实框分配权重,并采用了退火策略(引入动态参数epoch),逐渐将模型的注意力从低质量预测框转移到高质量预测框,平衡了训练速度与检测精度。其还有一定的解决样本不平衡问题,同时该损失函数可以和现有的任何边界框回归损失函数进行结合,例如ShapeIoU和其结合可以形成二次创新,它是一种类似于之前的Inner的机制.

Snu77的博客 4584

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

ReactPy第三方组件集成指南:从Material UI到Ant Design的终极教程

ReactPy作为一款能让开发者用纯Python构建交互式Web界面的框架,正在快速改变Python开发者的前端开发方式。本文将带您探索如何轻松集成主流UI组件库,让您的ReactPy应用兼具美观与功能性。 ## 为什么选择ReactPy集成第三方组件? ReactPy的核心理念是"Python中的React",它允许开发者使用熟悉的Python语法创建响应式UI。通过集成成熟的JavaScr

gitblog_00615的博客 767

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

打包出来的 common.js/umd.js 是啥?

Vue 使用 lib 模式开发自己的组件库时,打包后的 dist 目录不仅有 lib.min.js,还会出现 lib.common.js 和 lib.umd.js。第一次看到这两个文件的时候不知道这是啥,为了知其所以然,于是乎查了一下,在这里稍作整理。

Yingjieweb 的技术博客 8915

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

js桌面应用 Linux,从 1 到完美,用 js 和 electron 写一个桌面应用

从 1 到完美,用 js 和 electron 写一个桌面应用目前用 js 和前端技术写桌面软件的方案主要有两种:electron 和 nw.js。这两者在底层实现上有所不同,简单的说,electron 是 node + chromium,nw.js 是 node + webkit。从使用上来说,electron 的使用更为广泛,社区也更活跃,有一大批成熟的商用软件,像 vscode, atom等...

weixin_39537977的博客 174

鸿蒙系统中的 JS 开发框架

转载原博客原址:https://blog.youkuaiyun.com/vCa54Lu0KV27w8ZZBd/article/details/108525325 今天鸿蒙终于发布了,开发者们也终于“沸腾”了。 源码托管在国内知名开源平台码云上,https://gitee.com/openharmony 我也第一时间下载了源码,研究了一个晚上,顺带写了一个 hello world 程序,还顺手给鸿蒙文档提了 2 个 P

My_daily_life的博客 4172

Vue封装组件,发布到npm仓库

Vue封装组件,发布到npm仓库。

heros0806的博客 1534

前端框架选择Vue的理由,面试秘籍

整理面试题,不是让大家去只刷面试题,而是熟悉目前实际面试中常见的考察方式和知识点,做到心中有数,也可以用来自查及完善知识体系。《前端基础面试题》,《前端校招面试题精编解析大全》,《前端面试题宝典》,《前端面试题:常用算法》PDF完整版点击这里免费领取题宝典》,《前端面试题:常用算法》PDF完整版点击这里免费领取**[外链图片转存中…(img-Hq8Fnu94-1712314301212)][外链图片转存中…(img-JiXXnYe1-1712314301213)]

2401_84091544的博客 960

Vue封装自定义组件并上传至npm

vue 组件封装 上传npm

m0_67363703的博客 2848

js进阶学习

JavaScript的运行机制,作用域,原型链,变量特点等底层原理。 设计模式,架构思维,编程思想,软件工程的常见问题 我们都会写路由。 但是你知道路由如何写才能保证多路由模块解耦,保证更方便增加新的路由模块吗? 我们都会对Vue项目最后打包上线。 但是你知道如何编写配置文件能让打包速度最优化吗? 我们都会写组件。 但是你知道怎么让组件能够成为高复用性的组件库型组件吗? 诸如此类的问题,是实践中区分前端水平高低的最重要因素,也是很多前端程序员迟迟等不到大厂offer,突破不到高级前端的重要因素。 对很多.

big_minggogo的博客 321

uni-app使用全局组件及相关问题

1. main.js import Vue from 'vue' import App from './App' import store from '@/store/index' import GlobalComponent from '@/components/global' Vue.config.productionTip = false App.mpType = 'app' Vue.use(GlobalComponent); const app = new Vue({ store,

Moon Star 5297

webpack、rollup打包

使用rollup进行vue打包配置、使用webpack进行组件打包等

yangguangxiadewo的专栏 616
上一篇: 人民币的符号的正确表示法?一杠?两杠?¥还是¥呢?
下一篇: 如何减少网页的内存与CPU占用
SleepInDelphi
博客等级 码龄19年 32粉丝 388原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值