전단 루트의 두 가지 실현 방식에 상세한 코드를 첨부하다

3361 단어

1. 프런트엔드 라우팅 소개

  • 프런트엔드 라우팅은 주로 SPA(단일 페이지 개발) 프로젝트에 적용됩니다.새로 고침 없이 다른 URL에 따라 다른 구성 요소나 내용을 표시합니다.
  • 전방 루트의 실현 원리:
  • hash값+onhashchange 이벤트
  • history 대상 + pushState () 방법 + onpopstate 이벤트
  • 2.hash 전단 루트 이동 실현

  • HTML 코드:
  •     
        

    Hash 모드의 프런트엔드 라우팅

  • JavaScript 코드:
  •         var btn = document.getElementsByTagName('button');
            var router = document.getElementById('router');
    
            var routers = [  //      
                { path : '/index' , component : '

    ' }, { path : '/list' , component : '

    ' } ]; window.location.hash = '/'; // btn[0].onclick = function(){ window.location.hash = '/index'; // indexURL } btn[1].onclick = function(){ window.location.hash = '/list'; // listURL } window.addEventListener('hashchange' , function(){ // hashchange , hash var hash = window.location.hash; for(var i=0 ; i

    우리가 서로 다른 button을 클릭하면 서로 다른 디스플레이 내용을 나타낼 수 있습니다. 주로 onhashchange 이벤트를 이용하여hash값의 변화를 감청하고 우리가 설정한 루트와 비교하여 대응하는 페이지에 응답합니다.

    셋째,history는 전방 루트의 이동을 실현한다.

  • history 모드 주의사항: 이런 모드는 백엔드 설정 지원이 필요합니다.저희 앱은 한 페이지 클라이언트 앱이기 때문에 백엔드에 정확한 설정이 없으면 사용자가 브라우저에서 대응하는 URL에 직접 접근할 때 404로 되돌아오기 때문에 보기 흉합니다.따라서 서버에서 모든 상황을 덮어쓰는 후보 자원을 추가해야 합니다. URL이 정적 자원과 일치하지 않으면 같은 index로 돌아가야 합니다.html 페이지.다음과 같은 구성 파일이 필요합니다. Apache 예:
  • 생성.htaccess 파일:
  • 
      RewriteEngine On
      RewriteBase /
      RewriteRule ^router/history\.html$ - [L]  //    
      RewriteCond %{REQUEST_FILENAME} !-f
      RewriteCond %{REQUEST_FILENAME} !-d
      RewriteRule . router/history.html [L]   //    
    

    이 파일을 설정한 후, 사용자가 일치하지 않는 주소를 마음대로 입력하면router/history로 돌아갑니다.html 이 디렉터리 아래, 당연히 아래의 조작에 협조해야 한다.
  • Apache의config의httpd.config에서 LoadModule rewritemodule modules/mod_rewrite.so 앞의 # 번호 주석을 제거하고 이 파일을 엽니다.
  • 다음 AllowOverride none 구성을 AllowOverride All로 변경하고 History 모드 코드
  • HTML 코드(위와 동일):
  • 
    

    History 모드의 프런트엔드 라우팅

  • JavaScript 코드:
  •         var btn = document.getElementsByTagName('button');
            var router = document.getElementById('router');
    
            var routers = [  //      
                { path : '/index' , component : '

    ' }, { path : '/list' , component : '

    ' } ]; function render(){ // var path = window.location.pathname; // for(var i=0 ; i
  • 이상은 바로 전방 루트의 두 가지 실현 방식입니다. 만약에 부정확한 점이 있으면 많은 지적을 바랍니다.
  • 좋은 웹페이지 즐겨찾기