用 rake 合并多个 JS 文件,并且用 Google Closure Compiler 压缩代码

使用一款自动化的构建工具,已经成为专业的JS程序员的必备技能之一。在国内,每个前端团队都学会了用 Ant 来自动生成一系列构建的任务。但是由于 Ant 对 XML的依赖,这一大关键缺点,使得 Ant 脚本既难写又难读,也难进行重构,甚至难进行 diff。所以,rake(用Ruby编程的构建工具)越来越流行了。

下面的代码是合并多个 JS 文件的 rake 任务:

namespace :js do
    desc "合并多个 JS 文件"
    task :concatenate do
        filename3 = "E:\\all.js"
        logfile = File.new(filename3, 'w');
        joinFiles = ["E:\\a.js", "E:\\b.js"];
        for files in joinFiles
            if File.exists?(files)
                file = File.new(files, 'r')
                file.each_line do |line1|
                    logfile.puts(line1)
                end
            end
        end
    end
end

如何执行 rake呢?

假如 Ruby 源代码文件为 build.rb,那么在 windows 命令行中输入命令:

rake –f build.rb js:concatenate

然后回车。

可能就会有人问了:可以结合 Google Closure Compiler 使用来进行代码压缩吗?答案是肯定的!

下面是带传参的调用 GCC 的 rake 任务:

desc "用 Google Closure Compiler 进行编译"
task :gcc, :compiled_path, :needs => :concatenate do |t, args|
    require 'rubygems'
    require 'win32/open3'
   
    cmd = "java -jar D:\\compiler\\compiler.jar --js " + concatenateFilename + " --js_output_file " + args.compiled_path
    Open3.popen3(cmd)
end

在 windows 命令行中输入命令:

rake –f build.rb "js:gcc[E:\all-min.js]"

然后回车。

对JS程序员来说,使用rake的唯一缺点是学习Ruby的成本了。所以,用nodeJS来实现相同的功能也是在国内前端界同行们越来越流行的趋势。

(完)

转载于:https://www.cnblogs.com/georgewing/archive/2011/05/16/2047756.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Rake接收机是一种经典的多径信道均衡技术,使用多个接收分支接收到来的多个信号,并将它们进行加权合并,以提高接收信号的质量。下面是基于MATLAB实现Rake接收机多径分量的合并方式的代码示例: ```matlab % 定义多径信道的冲激响应 h = [0.2 0.4 0.6 0.8 1 0.8 0.6 0.4 0.2]; % 定义接收到的信号序列 rx_signal = [0 0 0 0 2 4 6 8 10]; % 定义Rake接收机的接收分支数量 num_branches = 3; % 对接收到的信号进行Rake接收机处理 for i = 1:num_branches % 计算当前接收分支的时延 delay = (i-1)*2; % 对接收分支的时延进行处理,保证不越界 if delay >= length(h) continue; end % 根据时延对信道冲激响应进行截取 channel_impulse = h(1+delay:end); % 对信道冲激响应进行加权,得到该分支的接收信号 branch_signal = channel_impulse(1:min(length(channel_impulse), length(rx_signal))) .* rx_signal(1:min(length(channel_impulse), length(rx_signal))); % 将接收信号加入到当前接收分支的输出序列中 if i == 1 output_signal = branch_signal; else output_signal = output_signal + branch_signal; end end % 输出Rake接收机的输出信号 disp(output_signal); ``` 上述代码中,首先定义了多径信道的冲激响应 h 和接收到的信号序列 rx_signal。然后,定义了Rake接收机的接收分支数量 num_branches。接下来,使用 for 循环对每个接收分支进行处理。对于每个接收分支,先计算出其时延 delay,然后根据时延对信道冲激响应进行截取,得到该分支的信道冲激响应 channel_impulse。接着,对信道冲激响应进行加权,得到该分支的接收信号 branch_signal。最后,将接收信号加入到当前接收分支的输出序列中。最终,将所有接收分支的输出信号相加,得到Rake接收机的输出信号 output_signal。 需要注意的是,Rake接收机的实现方式有很多种,上述代码只是其中一种实现方式。实际应用中,需要根据具体情况进行选择和优化。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值