最近在看require.js源码,看的差不多就想把源码上的注释跟空行去掉,得到一个“纯净版”,然后再自己添加注释。
首先用javascript读取文件,网上有人推荐用ActiveXObject对象,不过这是ie的(用的Chrome)。就将就用file框读取文件再用fileReader对象读取,文件内容
代码如下
<input type="file"id="files"name="files[]"multiple/>
<script>
var commentRegExp = /(\/\*([\s\S]*?)\*\/|([^:]|^)\/\/(.*)$)/mg
var blinkRegExp = /\n\s*\r/g;
function handleFileSelect(evt){
var files = evt.target.files;
for(var i =0, f; f = files[i]; i++){
var reader = new FileReader();
reader.readAsText(f);
reader.onload = function(e){
var kk = e.target.result.replace(commentRegExp,'')
alert(typeof(kk) === 'string')
console.log(kk.replace(blinkRegExp,''));
};
}
}
document.getElementById('files').addEventListener('change', handleFileSelect,false);
</script>
关键在第二个正则,第一个匹配注释的正则require.js中自己就有。
接着找匹配空行的发现网上说法千奇百怪,就想自己写,然后各种尝试不行,最后就想了个偏招,换行是\r\n如果是有两个空行则有两个\r\n连在一起,即\r\n\r\n,去掉一个\n\r就行了。
反正是各种试都不行,最后把require.js的代码复制到另外一个文件里面,再处理,结果行了。。。我日了