2016-11-27 4 views
10

UrlParser.parseHash समारोह मैं सफलतापूर्वक इस यूआरएल को पार्स करने में सक्षम था का उपयोग करना: - उचित दृष्टि से एप्लिकेशन के लोड,URL में # (हैश) के बिना एल्म में रूटिंग/नेविगेशन कैसे करें?

http://localhost:8000/MyRepl.elm/#home/something-else

व्यवहार की उम्मीद है के रूप में जब मैं कॉपी ब्राउज़र में इस पेस्ट और हिट दर्ज ।

लेकिन अब मैं # को हटाना चाहता हूं और इसके लिए मैंने UrlParser.parsePath फ़ंक्शन का उपयोग किया। मैंने शेष कोड को पहले जैसा रखा - लेकिन किसी कारण से यह काम नहीं करता है।

जब मैं कॉपी पेस्ट और हिट दर्ज करें:

http://localhost:8000/MyRepl.elm/home/something-else - नोटिस नहीं #

ब्राउज़र एल्म-रेक्टर स्थानीयहोस्ट सर्वर के लिए सीधा अनुरोध बनाता है।

कोई रूटिंग नहीं हो रहा है। एल्म रिएक्टर सर्वर की ओर एक 404 - डॉक्स साइट एल्म में लिखा है और वहाँ यूआरएल के रूप में आप देख सकते हैं में कोई # है - के रूप में अगर कोई /MyRepl.elm/home/something-else

लेकिन बिना मार्ग # क्योंकि http://package.elm-lang.org/packages संभव हो जाना चाहिए नाम की फ़ाइल है।

सवाल:

किसी को भी एक ही समस्या का अनुभव किया है? इसे ठीक करने का कोई तरीका?

या क्या आप मुझे एक रेपो में इंगित कर सकते हैं जहां # के बिना नेविगेशन अपेक्षित काम करता है?

+0

मैं एल्म-रिएक्टर गहरे लिंक करने का समर्थन है कि क्या जांच करने के लिए आप सुझाव है कि साथ भी ऐसा ही कर सकते हैं। यदि http सर्वर इसका समर्थन नहीं करता है तो एसपीए अपना काम नहीं कर सकता है। – Tosh

+0

मेरा उदाहरण जांचें https://github.com/rofrol/elm-navigation-example – rofrol

उत्तर

6

आपको एक बैकएंड की आवश्यकता है जो प्रत्येक अनुरोध के लिए आपके इंडेक्स पेज को सर्वर करे। इंडेक्स पेज की सेवा करने के बाद रूटिंग सामान्य रूप से एल्म में होती है।

एक्सप्रेस में उदाहरण के लिए यह कुछ देखने की तरह होगा:

router.get('/', function(req, res) { 
    res.sendFile(path.join(__dirname, 'public/index.html')); 
}); 

router.get('/*', function(req, res) { 
    res.sendFile(path.join(__dirname, 'public/index.html')); 
}); 

एल्म रिएक्टर इस समर्थन नहीं करता।

आप उपयोग कर रहे हैं webpack आप historyApiFallback विशेषता How to tell webpack dev server to serve index.html for any route

संबंधित मुद्दे