2013-09-21 38 views
0

我正在構建一個有趣的代碼遊樂場,如jsfiddle。我不太熟悉的一件事是URL縮短了生成一個唯一的字符串,即jsfiddle.net/QyqvC/。URL縮短和檢索數據

我相信我在這裏發現了一個node.js解決方案:http://pravin.paratey.com/posts/building-url-shortener但是,我不確定如何使它與具有獨特的樣式的url類似,如「jsfiddle.net/QyqvC/」,被訪問時,假設爲該特定頁面加載的數據(html,css,javascript在它們的框中)將像jsfiddle一樣加載。

我想到的一個解決方案是在javascript中生成獨特的字符,然後讓js腳本將這些url從mysite.com修改爲mysite.com/AqUeFg,然後存儲當前代碼框中的代碼(html ,js,css)以及我的數據庫中的那些唯一字符(AqUeFg),然後我將自我調用匿名函數,在頁面加載後檢查url後的「/」結尾處的唯一字符,然後將用於在我的數據庫(html,css,js)中查找數據並將其顯示在相應的框中。

我不確定這個解決方案是否有用。有一個更好的方法嗎?我覺得可能有,也可以用我使用的任何解決方案,我怎樣才能避免我用完獨特角色的場景?

+0

首先,這不是網址縮短,因爲......好吧,你不縮短任何網址,你只是一個獨特的ID。其次,你還認爲你會如何獲得數據?基於什麼?你怎麼知道哪些作品要取? – Zirak

+1

_「如何避免使用特殊字符的場景?」_如果你有一個固定長度的id字符串,那麼顯然它有固定數量的可能的字符組合,因此理論上你最終會運行除了會有這麼多的幾十億種組合,這種情況在很長一段時間內不會發生...... – nnnnnn

回答

0

我想最簡單的方法是base64編碼它。

var uri = new Buffer('your-slug').toString('base64'); 

還有大量的其他解決方案在網上漂流。

+0

謝謝,你能指點我嗎? – user2801524

+1

如果你只是想將一個字符串轉換爲base64,你有['btoa'](https://developer.mozilla.org/en-US/docs/Web/API/window.btoa) – Zirak

+0

從OP的方式描述了他或她實際上並未試圖縮短或編碼現有簡單英文字符串的問題,這個想法只是生成像jsfiddle這樣的唯一ID。 – nnnnnn