第二个分享的是学校项目所接触到的新知识,代码压缩 + 代码打包

这次的项目用了require.js 这个插件做模块化管理的工具,所谓模块化就是在开发的过程中将功能划分成一个独立的模块,使代码可读性更强更容易维护,但是一个模块就是一个js 文件多个模块就会产生出多个js 文件,这对于日后项目上线是非常不利的,因为会对服务器发送多次请求拖慢页面加载速度,所以将多个模块打包以及压缩式很有必要的一件事情。

闲话不多说,首先要说的是 r.js 这个优化工具,下载可以在require.js 官网下载:http://requirejs.org/docs/download.html#rjs

大概是这个位置,点击download 即可

r.js 要通过node.js 去驱动,没有安装node.js 的童鞋还需要安装一个node.js

用 r.js 压缩代码 是需要一个js 文件作为它的配置文件的,告诉 r.js 你要压缩的模块 ,压缩后的文件存放在哪里以及各个模块之间的依赖,如果你在开发的时候用了 require.js 就不必再重新声明模块之间的依赖,省了一步功夫,我在开发过程中用了 require,js 所以下面这里只介绍在用了 require.js 前提下 r.js 压缩打包代码的方法

首先准备工作是下载一个 r.js ,在你的项目中创建一个文件夹最好和 js 文件的文件夹处在同级

展开 tools文件夹后是这样

现在我们先关注 build.js 这个文件,其余的稍后会介绍

build.js 就是r.js 的配置文件了,它长这样:

baseUrl: 指定要压缩文件的所存在的地方,这个路径我个人理解为相对于配置文件你的js 文件所在的位置,而我的js 文件与配置文件所在的文件夹同级所以 baseUrl的值为: "../js"

mainConfigFile: 这是require.js 所要加载的主入口文件(data-main 引用的文件) 它把所有模块的集中在里面调用可以说它依赖着所有模块文件。而在配置文件里,它起着至关重要的作用,所有它所依赖的模块都会根据它里面的依赖关系进行排列,r.js 通过这个main文件就会自动识别和它有关联的模块文件从而对各个模块进行压缩合并。如果你用的是 require.js 这个插件进行开发,写好这个配置 你的代码压缩工作就已经进行了一半了而不必重新去整理合并模块的依赖关系

name:  需要被压缩的文件名。上面已经说过main 文件是依赖着所有模块的文件,将它锁定为压缩合并的目标是必然的。

out: 输出压缩后的文件的保存路径。这里不仅包含压缩后的文件的路径以及要写明压缩后文件的文件名。

如果你的主文件中有一些第三方插件的语言文件,例如以下这个 (summernote 富文本编辑器插件中文语言插件):

可能就需要修改源代码的语言部分的代码了,否则运行时就会报错,这个解决办法也是本人的暂时的解决办法,如果有更好的解决办法还望能够提出。

至此整个配置流程便完成了,贴上配置文件的代码

({
baseUrl: '../js',
mainConfigFile: "../js/personalPaegMain.js",
name: "personalPaegMain",
out: "../js/personalPage-built.js"
})

接下来便是通过命令行进行压缩代码的最后一步程序

win + r 运行 cmd

进入你项目所在的盘符

输入cd 命令 进入到盘符下项目中 r.js 的配置文件的文件夹

然后输入如下命令

回车,执行压缩打包

完成后便可以看到所压缩的模块以及最后输出的优化文件位置,将require.js 的data-main 后面的值换成最后优化输出的文件名即可

对比:

没有压缩打包前,浏览器会把所有的模块都加载

而压缩后

加载的文件只加载了 require.js 和 压缩后的文件,加载量减少了一大半

再说说压缩css 代码:

在上面可以看到压缩css 代码还需要增加一个 css 的文件用作导入所需要压缩的css 代码,配置文件如下

将你所需要合并的css 文件用 @import url(....) 来导入

下面是压缩css 代码的js 配置文件

cssIn: 是上面所说的css 导入文件

out: 压缩后的css 代码输出的位置

optimizeCss: 压缩css 代码的方式。这里我选择了保持换行,因为某些浏览器可能识别不了不换行的某些css 代码

贴上压缩css 配置文件的代码

@import url(../css/normal.css);
@import url(../css/modifypwd.css);
({
cssIn: "../tools/buildcss.css",
out: "../cssdist/modifyPwd-min.css",
optimizeCss: "standard.keepLines"
})

写好配置文件之后在命令行中输入和压缩 js 模块相同的语句即可

不足的地方还望大家指正

【实践】require.js + r.js 代码打包压缩初体验的更多相关文章

  1. Highcharts.js -纯javasctipt图表库初体验

    一.highcharts简介以及引入 highcharts作为免费提供给个人学习.个人网站和非商业用途使用的前端图表演示插件的确使用起来十分方便和轻便.在我最近完成一个需求的时候用到了它, 它的兼容性 ...

  2. js原型链与继承(初体验)

    js原型链与继承是js中的重点,所以我们通过以下三个例子来进行详细的讲解. 首先定义一个对象obj,该对象的原型为obj._proto_,我们可以用ES5中的getPrototypeOf这一方法来查询 ...

  3. 代码先行-log4Net初体验

    1.安装 从http://logging.apache.org/log4net/download_log4net.cgi下载编译好的log4Net包并解压. 找到 bin\net\4.0\releas ...

  4. r.js压缩打包(require + backbone)项目开发文件

    最近项目稳定了一点,之前一直没空关注的开发文件压缩打包问题也有时间来解决了 AMD模块化开发中的代码压缩打包工具——r.js 环境搭建基于nodejs:用于AMD模块化开发中的项目文件压缩打包,不是A ...

  5. r.js合并实践 --项目中用到require.js做生产时模块开发 r.js build.js配置详解

    本文所用源代码已上传,需要的朋友自行下载:点我下载 第一步: 全局安装  npm install -g requirejs 第二步: 1.以下例子主要实现功能, 1)引用jq库获取dom中元素文本, ...

  6. require.js 加载 vue组件 r.js 合并压缩

    https://www.taoquns.com 自己搭的个人博客 require.js 参考阮一峰 Javascript模块化编程(三):require.js的用法 r.js 合并压缩 参考司徒正美 ...

  7. r.js压缩打包

    AMD模块化开发中的代码压缩打包工具——r.js 环境搭建基于nodejs:用于AMD模块化开发中的项目文件压缩打包,不是AMD模式也是可以的 javascript部分 压缩javascript项目开 ...

  8. (转)yuicompressor 与 maven结合,打包,压缩js,css (一)

    js,css代码压缩 web站点需要对js,css代码进行压缩,打包,下面是利用maven进行打包压缩的配置 将压缩后的代码打入到war包中,并且压缩后的js,css文件名不变 <plugins ...

  9. 如何应用r.js对requirejs下的js代码合并

    1.在根目录新建build.js ({ baseUrl:'js', paths:{ jquery:'static/jquery-1.10.2.min', underscore:'static/unde ...

随机推荐

  1. vue中使用ueditor富文本编辑框

    1.把下载的Ueditor资源,放入静态资源static中. 修改ueditor.config.js中的window.UEDITOR_HOME_URL配置,如下图: 2.在main.js中引入以下文件 ...

  2. 转:Exploiting Electron RCE in Exodus wallet

    转:https://hackernoon.com/exploiting-electron-rce-in-exodus-wallet-d9e6db13c374 Exploiting Electron R ...

  3. python3 爬虫之爬取安居客二手房资讯(第一版)

    #!/usr/bin/env python3 # -*- coding: utf-8 -*- # Author;Tsukasa import requests from bs4 import Beau ...

  4. 51nod1394 差和问题 值域线段树

    水题..... 插入一个值$v$时,对于$[0, v - 1]$和$[v + 1, inf]$的点分别考虑就行了 删除相当于减去插入的贡献 用动态开点线段树卡点常数就过去了 复杂度$O(n \log ...

  5. luoguP4284 [SHOI2014]概率充电器 概率期望树形DP

    这是一道告诉我概率没有想象中那么难的题..... 首先,用期望的线性性质,那么答案为所有点有电的概率和 发现一个点的有电的概率来源形成了一个"或"关系,在概率中,这并不好计算... ...

  6. [BZOJ4873][六省联考2017]寿司餐厅(最大权闭合子图)

    4873: [Shoi2017]寿司餐厅 Time Limit: 20 Sec  Memory Limit: 512 MBSubmit: 490  Solved: 350[Submit][Status ...

  7. []APC001

    题目质量都好高啊... A:求一个是$X$的倍数但不是$Y$的倍数的数,无解输出$-1$ 无解就是$Y|X$,否则输出$X$即可 B:给定$a_{1\cdots n},b_{1\cdots n}$,求 ...

  8. 【MPI】并行求和

    比较简单的并行求和 读入还是串行的 而且无法处理线程数无法整除数据总长度的情况 主要用到了MPI_Bcast MPI_Scatter MPI_Reduce typedef long long __in ...

  9. 【推导】【线段树】hdu5929 Basic Data Structure

    题意: 维护一个栈,支持以下操作: 从当前栈顶加入一个0或者1: 从当前栈顶弹掉一个数: 将栈顶指针和栈底指针交换: 询问a[top] nand a[top-1] nand ... nand a[bo ...

  10. [SimpleOJ238]宝藏探寻

    题目大意: 给你一棵带点权的n个结点的树,有m次询问,每次从树上删掉一条路径(u,v),问删掉每条路径后各个连通块权值和的平方之和. 每次询问是独立的. 思路: 首先对树遍历一遍求出每棵子树的权值和. ...