Vue项目打包部署Tomcat

Vue 项目的配置

在打包之前,先确定项目中 vue-router 的路由模式,文中的例子是基于 history 模式进行的配置打包和部署。

vue.config.js

vue.config.js 下的配置:

// vue.config.js
module.exports = {
  devServer: {
    port: 8080
  },
  publicPath: '/hello/',
  assetsDir: 'static'
}

publicPath:部署应用包时的基本 URL。

默认情况下,Vue CLI 会假设你的应用是被部署在一个域名的根路径上,例如 https://www.my-app.com/。如果应用被部署在一个子路径上,你就需要用这个选项指定这个子路径。例如,如果你的应用被部署在 https://www.my-app.com/my-app/,则设置 publicPath 为 /my-app/。

assetsDir:放置生成的静态资源 (js、css、img、fonts) 的 (相对于 outputDir 的) 目录。

router.js

new VueRouter({
  base: '/hello/',
  mode: 'history',
  routes
})

如果调整了 vue.config.js 中的 publicPathVueRouter 创建实例中一定要添加 base ,并且设置一样的路径。不然会导致路由混乱,无法正确打开指定页面。

这里统一都是 /hello/ ,前后都有斜杠。

Vue-cil3 打包命令

到这里项目中的配置就完成了,打包项目。

npm run build

打包完,会看到项目文件夹中多了一个目录 dist

进去可以看到有三个东西:

  • static
  • favicon.ico
  • index.html

直接双击 index.html 打开浏览器,页面是空白了,啥都没有。如果想根据路由打开指定页面,就需要部署到服务器了。

Tomcat 部署

  1. 找到Tomcat的安装目录,进入webapps文件夹。
  2. 创建一个 hello 文件夹。
  3. 把刚才 dist 文件夹里面的东西拷贝过来。
  4. 创建一个 WEB-INF 文件夹,并进入。
  5. 创建 web.xml 文件,拷贝以下的内容。
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
                      http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
  version="4.0"
  metadata-complete="true">

    <display-name>hello</display-name>
    <error-page>
        <error-code>404</error-code>
        <location>/index.html</location>
    </error-page>

</web-app>
  1. 启动Tomcat服务
  2. 输入 http://localhost:8080/hello,就能访问你的根目录啦!!

因为 web.xml 配置了404的时候是访问 index.html 页面,那我就尝试一下输入错误的地址。http://localhost:8080/hello/asdfghjj,虽然没有显示404的页面,但是页面是空白也不太友好,希望可以显示一个指定的页面。

一开始在 web.xml 中折腾了半天,最后看到这篇文章,成功解决了我的问题。

Vue-router History模式下,空白页面,如何配置tomcat服务器

处理404状态

回到前端项目,调整router.js。

const router = new VueRouter({
  mode: 'history',
  base: '/hello',
  routes: [
    // 404页面
    { path: '*', component: ErrorPage},
    { ... }
  ]
})

添加一个 ErrorPage 组件,由前端路由来处理错误页面。

重新打包和部署,就可以了!✿✿ヽ(°▽°)ノ✿

如果想部署Nginx,可以看看这篇文章。Vue 项目打包部署Nginx

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 201,681评论 5 474
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 84,710评论 2 377
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 148,623评论 0 334
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,202评论 1 272
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,232评论 5 363
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,368评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,795评论 3 393
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,461评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,647评论 1 295
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,476评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,525评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,226评论 3 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,785评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,857评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,090评论 1 258
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,647评论 2 348
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,215评论 2 341

推荐阅读更多精彩内容