brew install nodejs
安装完成,查看node.js版本
node -v
chmod -R 777 /usr/local/lib/node_modules/
npm install -g cnpm --registry=https://registry.npm.taobao.org
cnpm install webpack -g
cnpm install -g @vue/cli
安装完成,vue --version查看是否安装
➜ ~ vue --version
3.7.0
➜ ~
vue create project-name
npm run serve
npm run build
"eslintConfig": {
"root": true,
"env": {
"node": true
},
"extends": [
"plugin:vue/essential",
"@vue/standard"
],
"rules": {
},
"parserOptions": {
"parser": "babel-eslint"
}
}
关闭语法检测,删除掉"@vue/standard"配置即可
vue cli 3.x后,vue.config.js是一个可选文件,默认没有自动创建,可以手动在项目根目录下创建,它会被@vue/cli-service 自动加载。
module.exports = {
publicPath: process.env.NODE_ENV === 'production' ? '/home/webappdemo/' : '/',
assetsDir: 'static',
css: {
loaderOptions: {
stylus: {
'resolve url': true,
'import': [
'./src/theme'
]
}
}
},
pluginOptions: {
'cube-ui': {
postCompile: true,
theme: true
}
}
}
开发完成后,在测试或生产环境部署。vue项目打包后,可用nginx部署到服务器
上传项目(webappdemo)到服务器的任意位置(/home/webappdemo/)
vue项目的路由模式如果是history,需要nginx正确配置才能正常提供服务与刷新子界面不会变空白。配置示例如下:
server {
listen 80 ;
server_name demo.example.com;
# webapp conf
location /webappdemo {
alias /home/webappdemo/;
index index.html;
try_files $uri $uri/ /webappdemo/index.html;
}
}
开发完,测试或生产环境部署。vue项目打包后,可用tomcat部署到服务器
上传项目(webappdemo)到tomcat的webapps目录下
修改conf下的server.xml文件,在 标签下增加静态资源路由配置
<Context path="/home/webappdemo" docBase="webappdemo" reloadable="false" />
ps: path保持与项目中vue.config.js中publicPath配置一致,docBase为web应用和本地路径
<Host name="localhost" appBase="webapps"
unpackWARs="true" autoDeploy="true">
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
prefix="localhost_access_log" suffix=".txt"
pattern="%h %l %u %t "%r" %s %b" />
<Context path="/home/webappdemo" docBase="webappdemo" reloadable="false" />
Host>
vue项目的路由模式如果是history,需要服务器配置下才能正常提供服务与刷新子界面不会变空白。在tomcat下部署如下:
在项目(webappdemo)根目录下创建文件夹WEB-INF,并在WEB-INF文件夹下创建web.xml文件,最终项目结构
.
├── WEB-INF
│ └── web.xml
├── favicon.ico
├── index.html
└── static
├── css
│ ├── app.02c1b975.css
│ ├── chunk-0d2d9a7c.fbdf4dec.css
│ ├── chunk-1c7a44c4.55c0d3fd.css
│ ├── chunk-2a642b84.a37cd815.css
│ ├── chunk-732d40b2.e47e46f6.css
│ ├── chunk-77e673e4.b3f885d7.css
│ ├── chunk-787d872e.18979082.css
│ ├── chunk-7aedd8fe.ba791828.css
│ ├── chunk-8d332df8.c53d345f.css
│ ├── chunk-c04d76a0.c7026f15.css
│ ├── chunk-eb55fb2c.b3f885d7.css
│ ├── chunk-elementUI.061a2b0a.css
│ └── chunk-libs.3dfb7769.css
├── fonts
│ ├── element-icons.535877f5.woff
│ └── element-icons.732389de.ttf
├── img
│ ├── 404.a57b6f31.png
│ ├── 404_cloud.0f4bc32b.png
│ ├── img-user-profile.e8ed41d1.png
│ └── logo.e4b5e3c7.png
└── js
├── app.1c35bfcb.js
├── chunk-0d2d9a7c.b4720ba3.js
├── chunk-1c7a44c4.e12a85fb.js
├── chunk-2a642b84.617be68f.js
├── chunk-732d40b2.d9d4b8b1.js
├── chunk-77e673e4.344ea121.js
├── chunk-787d872e.4895e4cc.js
├── chunk-7aedd8fe.fcafa663.js
├── chunk-8d332df8.3bd396d8.js
├── chunk-c04d76a0.c18ffa88.js
├── chunk-eb55fb2c.351ee754.js
├── chunk-elementUI.3eefdd04.js
└── chunk-libs.eba70c64.js
WEB-INF/web.xml文件配置内容(解决history路由去除#号的核心配置):
<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>webappdemodisplay-name>
<description>
webappdemo route
description>
<error-page>
<error-code>404error-code>
<location>/index.htmllocation>
error-page>
web-app>
webpack://,展开能看到源码
vue.config.js配置 productionSourceMap:false
module.exports = {
publicPath: process.env.NODE_ENV === 'production' ? '/home/webappdemo/' : '/',
assetsDir: 'static',
productionSourceMap: false, // 打包后生产环境 source map
css: {
loaderOptions: {
stylus: {
'resolve url': true,
'import': [
'./src/theme'
]
}
}
},
pluginOptions: {
'cube-ui': {
postCompile: true,
theme: true
}
}
}
开发时,浏览器同源策略跨域问题
vue.config.js配置 devServer
devServer: {
proxy: {
"/apicros": {
target: "http://171.168.1.33:8088", // 跨域访问域名或ip
ws: true,
changOrigin: true,
secure: false,
pathRewrite: {
'^/apicros': '/'
}
}
}
}
设置 axios请求baseURL:http://localhost:8080/apicros