Route Changing frequently solution

一.js替换方法:

路径问题很头疼, 本方法旨在: 不更改Apache环境前提下, 用newscript.js技巧, 完美替换掉oldscript.js, 核心代码有点复杂, 不过, 根据自身项目需求, 只需修改以下代码中'the method can be deleted completely from here:'中间部分.

改写的方法参考自: 这里

<!--old route:../../static/js/order.js-->
<!--new route can be:/static/js/order.js-->
<script type="text/javascript" src="../../static/js/order.js" ></script>
<script>
    function createjscssfile(filename, filetype){
        if (filetype=="js"){ //if filename is a external JavaScript file
            var fileref=document.createElement('script')
            fileref.setAttribute("type","text/javascript")
            fileref.setAttribute("src", filename)
        }
        else if (filetype=="css"){ //if filename is an external CSS file
            var fileref=document.createElement("link")
            fileref.setAttribute("rel", "stylesheet")
            fileref.setAttribute("type", "text/css")
            fileref.setAttribute("href", filename)
        }
        return fileref
    }

    function replacejscssfile(oldfilename, newfilename, filetype){
        var targetelement=(filetype=="js")? "script" : (filetype=="css")? "link" : "none";
        var targetattr=(filetype=="js")? "src" : (filetype=="css")? "href" : "none";
        var allsuspects=document.getElementsByTagName(targetelement);
        for (var i=allsuspects.length; i>=0; i--){

            if (allsuspects[i] && allsuspects[i].getAttribute(targetattr)!=null && allsuspects[i].getAttribute(targetattr).indexOf(oldfilename)!=-1){
               var b=allsuspects[i].getAttribute(targetattr);
                var x=allsuspects[i].getAttribute(targetattr).indexOf(oldfilename);
               //the method can be deleted completely from here: begin
                console.log(x);
                var c=b.substring(x);
                console.log(c);
                //c为新的文件路径, 可根据自己项目路径, 操作字符串,仅作为参考
                newfilename=c;
               // the method can be deleted completely from here: end
                var newelement=createjscssfile(newfilename, filetype);
                allsuspects[i].parentNode.replaceChild(newelement, allsuspects[i]);
            }
        }
    }
    //用 "newscript.js" 替换 "oldscript.js"
        replacejscssfile("/static/js/", "newscript.js", "js");

    //用 "newscript.css" 替换 "oldscript.css"
//    replacejscssfile("oldstyle.css", "newscript.css","css");
</script>
js solution

 

二. Apache环境更改

此方法对开发来说一劳永逸, 不需更改任何js文件或者用到相关知识.

弊端是每次开发新项目, 都需要更改Apache环境.(这也意味着每次只能'高效率'做一个项目, 如果开发路径不一致)

过程书写ing. 算了配置太复杂, 不写了..(如果让你郁闷了请邮件告诉我, yuanqingxiao@outlook.com)

 

posted on 2018-01-22 16:47  鸣动我心  阅读(126)  评论(0编辑  收藏  举报