vue,反应等单页面项目部署到服务器的方法及vue和反应的区别

  

最近好多伙伴说,我用vue做的项目本地是可以的,但部署到服务器遇到好多问题:资源找不到,直接访问index . html页面空白,刷新当前路由404…用反应做的项目也同样遇到类似问题。现在我们一起讨论下单页面如何部署到服务器?

  

由于前端路由缘故,单页面应用应该放到nginx或者apache tomcat等网络代理服务器中,千万不要直接访问index . html,同时要根据自己服务器的项目路径更改反应或vue的路由地址。

  

如果说项目是直接跟在域名后面的,比如:http://www.sosout.com,根路由就是‘/?br/>   如果说项目是直接跟在域名后面的一个子目录中的,比如:http://www.sosout.com/children ,根路由就是/孩子,不能直接访问index . html .

  

以配置Nginx为例,配置过程大致如下:(假设:
  

  

1项目文件目录:/mnt/html/水疗中心(spa目录下的文件就是执行了npm运行dist后生成的dist目录下的文件)
  

  

2,访问域名:spa.sosout.com)
  

  

进入nginx.conf新增如下配置:

        服务器{   听80;   server_name spa.sosout.com;   根/mnt/html/水疗中心;   指数index . html;   ~ ^/图标\位置。ico $ {   根/mnt/html/水疗中心;   }      位置/{   try_files uri uri//index . html美元;   proxy_set_header主机主机美元;   proxy_set_header X-Real-IP remote_addr美元;   proxy_set_header X-Forwarded-For proxy_add_x_forwarded_for美元;   proxy_set_header X-Forwarded-Proto美元计划;   }   access_log/mnt/日志/nginx/访问。日志主要;   }      

注意事项:
  

  

1,配置域名的话,需要80端口,成功后,只要访问域名即可访问的项目
  2,如果你使用了react-router的browserHistory模式或vue-router的历史模式,在nginx配置还需要重写路由:

        服务器{   听80;   server_name spa.sosout.com;   根/mnt/html/水疗中心;   指数index . html;   ~ ^/图标\位置。ico $ {   根/mnt/html/水疗中心;   }      位置/{   try_files uri uri美元/@fallback;   指数index . html;   proxy_set_header主机主机美元;   proxy_set_header X-Real-IP remote_addr美元;   proxy_set_header X-Forwarded-For proxy_add_x_forwarded_for美元;   proxy_set_header X-Forwarded-Proto美元计划;   }   位置@fallback {   重写^。* $/索引。html打破;   }   access_log/mnt/日志/nginx/访问。日志主要;   }      

为什么要重写路由?因为我们的项目只有一个根入口,当输入类似/家庭的url时,如果找不到对应的页面,nginx会尝试加载index . html,这是通过react-router或vue-router就能正确的匹配我们输入的/home路由,从而显示正确的家页面,如果browserHistory模式或历史模式的项目没有配置上述内容,会出现404年的情况。

  

简单举两个例子,一个vue项目一个反应项目:

  

vue项目:

  

域名:http://tb.sosout.com

  

 vue,反应等单页面项目部署到服务器的方法及vue和反应的区别

        ############   #其他配置   ############      http {   ############   #其他配置   ############   服务器{   听80;   server_name tb.sosout.com;   根/mnt/html/结核病;   指数index . html;   ~ ^/图标\位置。ico $ {   根/mnt/html/结核病;   }      位置/{   try_files uri uri美元/@fallback;   指数index . html;   proxy_set_header主机主机美元;   proxy_set_header X-Real-IP remote_addr美元;   proxy_set_header X-Forwarded-For proxy_add_x_forwarded_for美元;   proxy_set_header X-Forwarded-Proto美元计划;   }   位置@fallback {   重写^。* $/索引。html打破;   }   access_log/mnt/日志/nginx/访问。日志主要;   }   ############   #其他配置   ############   }      

 vue,反应等单页面项目部署到服务器的方法及vue和反应的区别

  

        从“. ./App”进口程序//首页   const回家=r=比;要求。确保([],()=比;r(要求(“. ./页面/home/指数”)),“家”)//物流   const物流=r=比;要求。确保([],()=比;r(要求(“. ./页面/物流/指数”)),“物流”)//购物车   const车=r=比;要求。确保([],()=比;r(要求(“. ./页面/车/指数”)),“购物车”)//我的   const profile=r=比;要求。确保([],()=比;r(要求(“. ./页面/资料/指数”)),“配置文件”)//登录界面   const登录=r=比;要求。确保([],()=比;r(要求(“. ./页面/用户/登录”)),“登录”)      出口违约({   路径:“/?   组件:应用,//顶层路由,对应的index . html   孩子们:[{   路径:/home,//首页   组件:回家   },{   路径:/物流,//物流   组件:物流、   元:{   登录:真   }   },{   路径:/车,//购物车   组件:购物车,   元:{   登录:真   }   },{   路径:/配置文件,//我的   组件:概要   },{   路径:/登录',//登录界面   组件:登录   },{   路径:“*”,   重定向:“/home”   })   }]

vue,反应等单页面项目部署到服务器的方法及vue和反应的区别