本文转自:http://www.neoease.com/minimize-javascript-files-using-ycombo/

前文已介绍过 YCombo 及相关的 CSS 和 JS 合并工具. 合并静态文件, 减少页面请求可以有效提升网页性能, 但手动处理的话工作繁杂易于出错, YCombo 就是为了解决这个问题而诞生的工具. 这不是最先进的解决方案, 但对小型网站来说已是游刃有余了.

少于 10 个经常改动的页面应该可以算是小型网站, 当然, 博客也算是, 这个博客现在就是使用这个工具来辅助开发的. 本文作为延伸, 说说平时我是怎样利用这个工具来完成网页开发的.

拆分 JS 模块

JavaScript 模块化和细分成文件是为了减少代码的复杂度和便于代码复用, 我将网站用到的 JavaScript 代码分类以下几类:

  • 第三方的框架和工具类, 沿用 YUI3 的命名定义, 我称之 Gallery 库, 比如: jQuery, Backbone
  • WordPress 插件中用到的 JS 文件, 有时我们想合并掉这些文件以减少页面请求数量.
  • 可以供第三方使用的组件和工具, 比如: go-top.js, sidebar-follow.js 和 view-history.js.
  • 自己网站上用到的一些共用代码, 比如: NeoEase 所有页面用到的二级菜单 categories.js.
  • 业务 / 页面初始化文件, 这里往往会调用其他一些组件, 还会有一些页面特有的代码. 我觉得 WordPress 这中小网站都不需要区分页面了, 作为一个入口即可.

准备配置文件

模块拆分完成后, 我们可以按照 YCombo 配置文件的方式创建一个后缀名为 .js.seed 的配置文件将 JS 文件组织起来. 我用相对路径的方式, 配置如下:

/* 第三方库 */
// #require "gallery/jquery/jquery.js"
// #require "gallery/jquery/jquery.scrollto.js"
// #require "gallery/jquery/jquery.lazyhover.js"
// #require "gallery/json/json2.js" /* 组件 */
// #require "moudle/scroll-trigger.js"
// #require "moudle/view-history.js"
// #require "moudle/article-history.js"
// #require "moudle/sidebar-follow-jquery.js"
// #require "moudle/go-top.js" /* 插件 */
// #require "plugin/wp-recentcomments/wp-recentcomments-jquery.dev.js" /* 共用代码 */
// #require "common/social.js"
// #require "common/comments.js"
// #require "common/categories.js" /* 页面初始化 */
// #require "biz/domready.js" /* Rating 初始化 */
// #require "common/ratings.js"

合并和调试代码

将配置文件 xxx.js.seed 拖放到 YComboGUI 或者 JCombo 工具内, 即可得到合并后文件 xxx.js. 调试代码的时候, 为了能定位代码出错位置我们只合并不压缩, 所以我会选中 nocompress.

每次修改代码后, 点击 Combo! 重新合并代码和进行调试, 直到开发完成.

压缩和混淆代码

一旦开发完成, 取消选中 nocompress 并再次进行压缩, YCombo 通过 YUI Compressor 对代码进行合并和压缩, 可以减去注释, 额外空格, 一些细微的优化和进行标识符替换.

如果还需要进一步压缩或者混淆代码, 可以使用 Pack 等一些工具再对代码进行处理, 而我会到在线 JavaScript 压缩和混淆工具上进行一次混淆.

后话

使用 YCombo 做 JS 开发, 可以做到将细分在多个文件中的 JavaScript 合并在一起, 从而减少页面请求数量. 开发者每次修改后需要多点一次合并按钮, 但是还算是方便的, 对小型网站来说应该足够了.

哦, 对. YCombo 还可以用来处理 CSS 文件.

[转]使用 YCombo 做 JS /CSS开发 合并 压缩的更多相关文章

  1. 前端js,css文件合并三种方式,bat命令

    前端js,css文件合并三种方式,bat命令 前端js文件该如何合并三个方式如下:1. 一个大文件,所有js合并成一个大文件,所有页面都引用它.2. 各个页面大文件,各自页面合并生成自己所需js的大文 ...

  2. electron之Windows下使用 html js css 开发桌面应用程序

    1.atom/electron github: https://github.com/atom/electron 中文文档: https://github.com/atom/electron/tree ...

  3. grunt 压缩js css html 合并等配置与操作详解

    module.exports = function(grunt){ //1.引入 grunt.loadNpmTasks('grunt-contrib-cssmin'); grunt.loadNpmTa ...

  4. gulp打包js/css时合并成一个文件时的顺序解决

    1.可以使用插进gulp-order. 2.可以这样的写法: return gulp.src(['js/common.js','js/**/*.js']) .pipe(concat('build.js ...

  5. js css优化-- 合并和压缩

    在项目框架中,首先要引用很多css和js文件,80%的用户响应时间都是浪费在前端.而这些时间主要又是因为下载图片.样式表.JavaScript脚本.flash等文件造成的.减少这些资源文件的Reque ...

  6. .Net MVC4笔记之js css引用与压缩

    1.引用时,可以用即可以直接使用“~”来表示根目录. 引入js 引入js 引入css <link href="~/Content/uploadify/uploadify.css&quo ...

  7. ASP.Net MVC(4) 之js css引用与压缩

    资源引用 可以用即可以直接使用“~”来表示根目录. 引入js <script src="~/Areas/OrderManage/JS/Form.js"></scr ...

  8. 使用grunt合并压缩js、css文件

    需要了解的知识: 1.nodejs的安装与命令行使用 2.nodejs安装应用 3.grunt的初步了解 本文已假定读者已经熟悉以上知识. 好,我们继续: 任务1:将src目录下的所有zepto及插件 ...

  9. 开箱即用 - Grunt合并和压缩 js,css 文件

    js,css 文件合并与压缩 Grunt 是前端自动化构建工具,类似webpack. 它究竟有多强悍,请看它的 介绍. 这里只演示如何用它的皮毛功能:文件合并与压缩. 首先说下js,css 合并与压缩 ...

随机推荐

  1. vue配置vue-router

    首先理清一下几个路由的基础概念: 1)route是一条路由,也就是映射,即A按钮→A内容,以数组形式存储 2)toutes:[]是一组路由,里面包含了若干条route,即route[{A按钮→A内容} ...

  2. c/c++ 字符编码与标识符

    说明: 对于比较现代的语言来讲字符编码不是个大问题:java就可以使用中文作为变量名称,但对于C/C++来讲却不是这样,由于历史原因,标准和编译器厂商的实现总在不停的变化,相关编码信息到底是如何处理的 ...

  3. Python3中的Json与Pickle

    用于将数据存取到文件中: 1:Json的存数据到文件: import json info = { "name":"hjc", "age":2 ...

  4. P1979 华容道

    题意:$n*m$棋盘上$n*m-1$颗棋子,有且只有一个格子为空白格子,每个棋子大小$1*1$ 有些棋子可以移动,而有些棋子固定,任何与空白的格子相邻(有公共的边)的格子上的棋子都可以移动到空白格子上 ...

  5. Arcgis Server for JavaScript API之自定义InfoWindow

    各位看到这个标题不要嫌烦,因为本人最近一直在研究相关的问题,所以相关文章也只能是这些,同时希望看过我的文章的朋友,我的文章能够给你帮助. 在前面的两篇相关的文章里面,实现InfoWindow是通过di ...

  6. J.U.C AQS(abstractqueuedssynchronizer--同步器)

    J.U.C AQS(abstractqueuedssynchronizer--同步器)   同步器是用来构建锁和其他同步组件的基础框架,它的实现主要依赖一个int成员变量来表示同步状态以及通过一个FI ...

  7. kuangbin专题十六 KMP&&扩展KMP HDU2087 剪花布条

    一块花布条,里面有些图案,另有一块直接可用的小饰条,里面也有一些图案.对于给定的花布条和小饰条,计算一下能从花布条中尽可能剪出几块小饰条来呢? Input输入中含有一些数据,分别是成对出现的花布条和小 ...

  8. 在生产环境下禁用swagger

    学习目标 快速学会使用注解关闭Swagger2,避免接口重复暴露. 使用教程 禁用方法1:使用注解@Profile({"dev","test"}) 表示在开发或 ...

  9. MPI环境配置

    单机多核配置:https://www.cnblogs.com/shixiangwan/p/6626156.html 多计算机配置:https://blog.csdn.net/WASEFADG/arti ...

  10. centos6.4安装过程中无法出现图形化界面

    今天在VMware9.0安装centos6.4的时候,前面的步骤都没问题,到跳过媒体检查这一步后,就发现和之前的不一样了,这次安装不是图形界面,导致后面的安装不方便 一开始以为是centos的版本不一 ...