【99 JS】の二:経路自動調整
_;
前回、99では、jsを使って「nth-child()」をコントロールする方法を紹介しましたが、今日99では、jsを使って自動的に経路を調整する方法を紹介しています.
ターゲット:パスの自動調整
需要はこのようなものです.javascriptの開発において、相対的な経路と絶対的な経路の問題に遭遇することが多いです.javascriptモジュール化の開発(javascriptを補充してモジュール化します.http://www.cnblogs.com/muguaworld/archive/2011/11/27/2265356.htmlを選択します.一般的なインプリメンテーションとは、jsファイルを必要に応じてロードすることであり、ロード中にも経路問題に遭遇することである.例えば、私たちはパス/workspace/wroot/module 1があります.wrootの下にあるa.jsファイルをロードして、wrootの下にあるmodule 2のb.jsファイルとリンクしている学生はカタログ/workspace/wroot/module 1を知っています.入力します./a.jsはファイルを入手できます.この時の経路は/workspace/wroot/a.jsです.私達は入力します./module 2/b.jsこの時のパスは/workspace/wroot/module 2/b.jsで、javascript言語はブラウザの言語で、現代のブラウザが完全なfileapiを実現していない以外、彼はいかなるファイルを操作することができません.
補足fileapiとjavascriptセキュリティポリシー(サンドボックスポリシー)サンドボックスポリシーhttp://hi.baidu.com/meklrdoxtkbkyzd/item/c2480ad3f64e0848fa57684e 同ソースポリシーhttp://baike.baidu.com/view/3747010.htm httml 5 file aphttps://developer.mozilla.org/en-US/docs/DOM/File_API https://developer.mozilla.org/en-US/docs/Using_files_fromweb_アプリ そして私が書いたfileappiの小さいアプリケーション:アップロード後のプレビューhttp://99jty.com/?p=856
そんなにたくさん話して、私達は抽象的に需要になります.はstr='aa/bb/cc'を設定してユーザーを設定してuser='./dd.js'を入力します. は、aa/bb/dd.js に戻る.
考え方1
経路の構成を分析します.
実現1:
文字列の単一文字や規則的なセパレータがある文字列については、SPlitで配列に切り分けてみると、多くの処理ができます.文字列と配列に関する一連の方法.jsの核心の中の核心に属して、背が熟していることを望みます.http://www.w3cschool.cn/js_reference.
二つ目はthrow new Errerという命令です.
プログラム設計において、重要なポイントは「フォールト性」です.つまり、プログラムが間違った時に対応できるかどうかです.量が多すぎると、ファイルが見つからなくなります.次の操作をすると、プログラムの戻り結果に大きな影響を与えます.だから私達はifで判断して、もし問題があるならば、間違いを投げます.java開発ではよく使うべきですよね.他のことはもちろん、最初の考えは簡単です.
考え方2
文字列に関するほとんどの問題は正規表現で直接解決できます.ここでは正規表現のテクニックを使って泡を吐きます.
また、正規表現を追加しても、これを見てください.http://www.cnblogs.com/rubylouvre/archive/2010/03/09/1681222.html.正美の大作は、私たちがよく使うものを基本的に要約しました.関数に戻りましたが、上記の関数が返した結果は面白かったです.四つのabを返しました.しかし、dは1になりました.これは腫れていますか?毎回マッチするたびに、replaceで伝えられたfunction関数が一回実行されるので、dはpopのがなくなったと思います.この関数を呼んでいます.泡を吐く.これは私たちのテーマと何の関係がありますか?頭のいい人は、まず文字列を配列形式にします.
実装:\記号は意味を転換するという意味です.マッチングが必要な場合は を含む.^.*+?=:124\/()[]{}の場合は、「転義」が必要です. 例えば私たちはマッチングしたいです./三つとも乗り換えが必要です.では、\.\///\と書きますが、各正規表現は一つの//によって包まれています.私たちはくるみます.\.////関数の中に、patharr.pop()も書きました.「」:aはjavascriptの3つの表現です.実は簡単です.a?b:cの意味は:
転載が必要な場合は、出典を明記してください.http://www.w3cplus.com/js/99js-automatic-adjustment-path.html
前回、99では、jsを使って「nth-child()」をコントロールする方法を紹介しましたが、今日99では、jsを使って自動的に経路を調整する方法を紹介しています.
ターゲット:パスの自動調整
需要はこのようなものです.javascriptの開発において、相対的な経路と絶対的な経路の問題に遭遇することが多いです.javascriptモジュール化の開発(javascriptを補充してモジュール化します.http://www.cnblogs.com/muguaworld/archive/2011/11/27/2265356.htmlを選択します.一般的なインプリメンテーションとは、jsファイルを必要に応じてロードすることであり、ロード中にも経路問題に遭遇することである.例えば、私たちはパス/workspace/wroot/module 1があります.wrootの下にあるa.jsファイルをロードして、wrootの下にあるmodule 2のb.jsファイルとリンクしている学生はカタログ/workspace/wroot/module 1を知っています.入力します./a.jsはファイルを入手できます.この時の経路は/workspace/wroot/a.jsです.私達は入力します./module 2/b.jsこの時のパスは/workspace/wroot/module 2/b.jsで、javascript言語はブラウザの言語で、現代のブラウザが完全なfileapiを実現していない以外、彼はいかなるファイルを操作することができません.
補足fileapiとjavascriptセキュリティポリシー(サンドボックスポリシー)
そんなにたくさん話して、私達は抽象的に需要になります.
考え方1
経路の構成を分析します.
aa/bb/cc ../dd.js > aa/bb/dd.js
aa/bb/cc ../../dd.js > aa/dd.js
はっきりと見えることができます.strの全体の長さ-.の数はstrが残しておくべきパスです.じゃ、私たちは統計してみます.実現1:
function adjustPath(str, user) {
var strArr = str.split("/"),
userArr = user.split("../"); var sl = strArr.length,
ul = userArr.length; var s = ""; var l = sl - ul; if (l < 0) throw new Error(' !') for (var i = 0; i < l; i++) {
console.log(i, strArr[i]);
s += strArr[i] + "/";
} return s + userArr[userArr.length - 1];
}var str = 'aaa/bbb/ccc/'console.log(adjustPath(str, '../../../../dd.js'))
split方法は非常に有用なもので、文字列を配列に変えることができます.また、join方法は彼の逆演算です.ここでテクニックを教えます.文字列の単一文字や規則的なセパレータがある文字列については、SPlitで配列に切り分けてみると、多くの処理ができます.文字列と配列に関する一連の方法.jsの核心の中の核心に属して、背が熟していることを望みます.http://www.w3cschool.cn/js_reference.
二つ目はthrow new Errerという命令です.
プログラム設計において、重要なポイントは「フォールト性」です.つまり、プログラムが間違った時に対応できるかどうかです.量が多すぎると、ファイルが見つからなくなります.次の操作をすると、プログラムの戻り結果に大きな影響を与えます.だから私達はifで判断して、もし問題があるならば、間違いを投げます.java開発ではよく使うべきですよね.他のことはもちろん、最初の考えは簡単です.
考え方2
文字列に関するほとんどの問題は正規表現で直接解決できます.ここでは正規表現のテクニックを使って泡を吐きます.
var d = [1, 2, 3, 4, 5];var b = 'abcakjabjsaabadab';var nstr = b.replace(/ab/g, function (a) {
console.log(a); return d.pop() ? "" : 'hahah';
})
先に説明してください.replace方法はstringオブジェクトの方法です.文字列や正規表現を置き換えることができます.代わりに一つのパラメータfunctionというfunctionが入ってきます.そのパラメータは前の正則によって「マッチ」された部分を含みます.詳しくは、replaceの参考になります.http://www.w3school.com.cn/js/jsref_replace.asp、私の書いたfunctionに参加します.http://99jty.com/?p=470 また、正規表現を追加しても、これを見てください.http://www.cnblogs.com/rubylouvre/archive/2010/03/09/1681222.html.正美の大作は、私たちがよく使うものを基本的に要約しました.関数に戻りましたが、上記の関数が返した結果は面白かったです.四つのabを返しました.しかし、dは1になりました.これは腫れていますか?毎回マッチするたびに、replaceで伝えられたfunction関数が一回実行されるので、dはpopのがなくなったと思います.この関数を呼んでいます.泡を吐く.これは私たちのテーマと何の関係がありますか?頭のいい人は、まず文字列を配列形式にします.
aa/bb/cc > [aa,bb,cc]
毎回一つを見つけます./文字列の最後の一つを削除します.例えば.dd.jsは削除してaa,bbになったら組み合わせたら私達が欲しい答えです.実装:
function adjustPath(str, user){
var patharr = str.replace(/\/$/,"").split("\/");
console.log(str.replace(/\/$/,"").split("\/")); var nstr = user.replace(/\.\.\//g,function(a){console.log(a); return patharr.pop() ? "" : a;
});
console.log(nstr,patharr); return patharr.length ? patharr.join("/")+"/"+nstr : nstr;
}
console.log('aa/bb/cc','../dd.js')
以上の関数は正則ではみんなが見ているので、気が遠くなります.ここで少し説明します.if(a){b}else{c}
今日のはよく分かりましたか?整理していないなら、一緒に検討してもいいです.他の方法を追加します!!!!!!!!!このコラムの更新を歓迎します.転載が必要な場合は、出典を明記してください.http://www.w3cplus.com/js/99js-automatic-adjustment-path.html