由于公司想要把商城做由之前的php和前端混合开发改版为前后端分离,所以拿现在手上的vue项目来实践一下

https://github.com/chrisvfritz/prerender-spa-plugin

1.使用官方的vue-cli手脚搭建的项目跑prerender-spa-plugin一直报权限问题什么的

一个是由于路由写得有问题导致

另外一个是assetsPublicPath: './'写成这样导致改成assetsPublicPath: '/'就好了

2.prerender-spa-plugin打包出来的页面是空白的

那是因为你开启了路由的mode: 'history',这个模式需要在服务器下才能访问

而prerender-spa-plugin如果vue不开启history打包出来的都会是你

new PrerenderSPAPlugin({
  staticDir: path.join(__dirname, '../dist'),
  routes: [ '/', '/home','/brokerage'],
})

routes里面第一配置的内容,所以页面都是这个内容,所以一定要开启history模式的

而history模式必须要放在服务器里面才能跑起来的,否则是空白页

3.放在服务端的时候要放在根目录下不然也是空白的因为路由找不到

或者你可以在Router里面加上base:xxxx,来指向你对应目录又或者在每个路由的path前面加上前面的路径

如http://localhost:4388/help/index

{
path: '/help/index',
name: 'index',
component: index
},

4.子路由的静态文件路径有问题

如http://localhost:4388/help/index

里面的静态资源src="static/js/manifest.js"会变成http://localhost:4388/help/static/js/manifest.js

所以我们的assetsPublicPath: './'写成assetsPublicPath: '/'根据根目录来才不会找不到文件

5.局限

(1)没法使用动态路由

必须为要渲染的每个类别添加单独的路线,例如/catalog/:id这个ID一定要写死的

(2)商品等动态信息是动态获取的没法seo(对于门户网址致命)

(3)页面刷无法读取路由,需要服务器重定向到首页否则404

或者报错webpackJsonp is not defined(可能是我的配置错误导致)

网上说的在

new HtmlWebpackPlugin配置中加入

chunks: ['manifest', 'vendor', 'app']就可以其实并没有作用

比如我访问http://localhost:4388/会跳转到http://localhost:4388/home

而我访问http://localhost:4388/home则会跳转http://localhost:4388/home/也就是他会去找home目录下prerender-spa-plugin打包出来的index.html但是路由里好像没法处理这个路径所以会报错

这应该是history模式下的路由路径是假路径而prerender-spa-plugin打包后的路径是真路径导致的

但是我的尝试中没有像网友们说的那样会报404

如果把刷新后不要增加正斜杠/来实现的话是不是就可以了呢?(我的猜想是这样的并没有去继续专研了因为放弃了这个方案,服务器好像可以控制)

由于上面的第2个问题所以我们放弃了这个方案,后续的问题也没有处理了

prerender-spa-plugin预处理vue项目实践的更多相关文章

  1. Vue项目实践中的功能实现与要点

    本贴记录项目实践中,各种功能的实现与技术要点,均有待改进. 路由切换的时候,显示loading动画 目前方案是: 在每个页面都手动装载一个loading组件组件的显示依赖vuex里面的一个值 , 在r ...

  2. vue项目实践-前后端分离关于权限的思路

    前后端分离后权限的思路 最近看到许多关于权限的思路,但好像都是使用动态加载路由的方式,现在也分享下我在项目中使用的解决方案. 前后端分离关于权限的处理每个人都不一样,根据项目选择制定合适的方案就好 我 ...

  3. vue项目实践-添加axios封装api请求

    安装 axios npm install axios --save 创建实例 (utils/fetch.js) axios 默认提交格式为:application/json 可使用 qs 模块(需要安 ...

  4. vue项目实践-添加express-mockjs进行数据模拟

    mock-server 在新项目开始的时候,后端框架还没有,前端就有能够自己操作的模拟数据的服务是可以有的 express-mockjs 是楼教主结合 express+mock-lite 造的一个轮子 ...

  5. Vue + webpack 项目实践

    Vue.js 是一款极简的 mvvm 框架,如果让我用一个词来形容它,就是 “轻·巧” .如果用一句话来描述它,它能够集众多优秀逐流的前端框架之大成,但同时保持简单易用.废话不多说,来看几个例子: & ...

  6. nodejs, vue, webpack 项目实践

    vue 及 webpack,均不需要与nodejs一期使用,他们都可以单独使用到任何语言的框架中. http://jiongks.name/blog/just-vue/ https://cn.vuej ...

  7. Vue 项目骨架屏注入与实践

    作为与用户联系最为密切的前端开发者,用户体验是最值得关注的问题.关于页面loading状态的展示,主流的主要有loading图和进度条两种.除此之外,越来越多的APP采用了“骨架屏”的方式去展示未加载 ...

  8. Vue 项目架构设计与工程化实践

    来源 文中会讲述我从0~1搭建一个前后端分离的vue项目详细过程 Feature: 一套很实用的架构设计 通过 cli 工具生成新项目 通过 cli 工具初始化配置文件 编译源码与自动上传CDN Mo ...

  9. 【Vuejs】335-(超全) Vue 项目性能优化实践指南

    点击上方"前端自习课"关注,学习起来~ 前言 Vue 框架通过数据双向绑定和虚拟 DOM 技术,帮我们处理了前端开发中最脏最累的 DOM 操作部分, 我们不再需要去考虑如何操作 D ...

随机推荐

  1. 机器学习: Canonical Correlation Analysis 典型相关分析

    Canonical Correlation Analysis(CCA)典型相关分析也是一种常用的降维算法.我们知道,PCA(Principal Component Analysis) 主分量分析将数据 ...

  2. 关于内存DC

    使用CreateCompatibleDC 创建了内存DC之后,要再调用SelectObject选择一张位图放入此DC,然后才可以使用此DC进行绘制,之后绘制的数据会保存在内存中, 详细说明看后文. 在 ...

  3. bzoj 4668 冷战——并查集结构

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=4668 不路径压缩,维护并查集的树的结构,查询链上最大值.按秩合并就可以暴爬. #includ ...

  4. py-day1简单使用方法及语法使用详解

    一.python入门 1.python的标准格式 创建python文件以.py结尾 如:vi hello.py #!/usr/bin/env python #-*- coding:utf-8 -*- ...

  5. vs缩进多行,vs2013测试可用

    vs缩进多行,vs2013测试可用 选中要缩进的行,然后点击tab会直接在选中行增大缩进 快捷键 功能 描述 tab 增大缩进 选中要缩进的行,可多行 shift + table 减小缩进 选中要缩进 ...

  6. jq之鼠标事件

    以防自己忘记,最重要的是hover效果的 鼠标事件是在用户移动鼠标光标或者使用任意鼠标键点击时触发的.   (1):click事件:click事件于用户在元素敲击鼠标左键,并在相同元素上松开左键时触发 ...

  7. 使用 Multipath TCP 为 iOS 创建备份连接(转)

    这篇文章的英文版如下: https://support.apple.com/en-us/HT201373 这里咱们采用苹果手机打开测试网站,发现没有检测到MPTCP,初步猜想可能需要打开什么设置,后续 ...

  8. 【Linux学习】Vi / Vim编辑器—编辑器工作模式、vi编辑操作

    Vi / Vim编辑器-编辑器工作模式.vi编辑操作 推荐一个很好的学习指南:http://www.oschina.net/translate/learn-vim-progressively 一.编辑 ...

  9. 技术胖Flutter第三季-17布局PositionedWidget层叠定位组件

    博客地址: https://jspang.com/post/flutter3.html#toc-d7a 把我们上节的 Container的部分代码去掉. 使用:Positioned 有点像css里面的 ...

  10. Flutter实战视频-移动电商-56.购物车_商品数量控制区域制作

    56.购物车_商品数量控制区域制作 主要做购物车中的数量这里 cart_page文件夹下新建cart_count.dart 减少按钮 因为会有点击事件,所以这里我们使用InkWell. child里面 ...