Vue:Mac下Cli 3.x环境搭建与vue基本配置及部署

Posted 陌生谁家年少

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Vue:Mac下Cli 3.x环境搭建与vue基本配置及部署相关的知识,希望对你有一定的参考价值。

Vue环境搭建

一、安装

1.安装node

  • brew安装
brew install nodejs

安装完成,查看node.js版本

node -v
  • 设置nodejs模块安装目录访问权限
chmod -R 777 /usr/local/lib/node_modules/

2.安装淘宝镜像

npm install -g cnpm --registry=https://registry.npm.taobao.org

3.安装webpack

cnpm install webpack -g

4.安装vue-cli 3.x

cnpm install -g @vue/cli

安装完成,vue --version查看是否安装

➜  ~ vue --version
3.7.0
➜  ~

二、创建应用

1.创建

vue create project-name
  • 创建时的所有配置

2.完成

  • 开发启动
npm run serve
  • 打包
npm run build

三、常见配置

1.关闭eslint语法检测

  • 如果是选择配置保存到package.json文件的,可在文件中找到配置
"eslintConfig": 
    "root": true,
    "env": 
      "node": true
    ,
    "extends": [
      "plugin:vue/essential",
      "@vue/standard"
    ],
    "rules": ,
    "parserOptions": 
      "parser": "babel-eslint"
    
  

关闭语法检测,删除掉"@vue/standard"配置即可

2.手动增加vue.config.js文件

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
    
  

四、项目部署

1.项目history路由模式在nginx部署

开发完成后,在测试或生产环境部署。vue项目打包后,可用nginx部署到服务器

  • 上传项目

上传项目(webappdemo)到服务器的任意位置(/home/webappdemo/)

  • Nginx配置

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;
	

2.项目history路由模式在Tomcat部署

开发完,测试或生产环境部署。vue项目打包后,可用tomcat部署到服务器

  • 上传项目

上传项目(webappdemo)到tomcat的webapps目录下

  • 修改sever.xml文件

修改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">

        <!-- SingleSignOn valve, share authentication between web applications
             Documentation at: /docs/config/valve.html -->
        <!--
        <Valve className="org.apache.catalina.authenticator.SingleSignOn" />
        -->

        <!-- Access log processes all example.
             Documentation at: /docs/config/valve.html
             Note: The pattern used is equivalent to using pattern="common" -->
        <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
               prefix="localhost_access_log" suffix=".txt"
               pattern="%h %l %u %t &quot;%r&quot; %s %b" />
          <Context path="/home/webappdemo" docBase="webappdemo" reloadable="false" />
      </Host>
  • 新增web.xml文件

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路由去除#号的核心配置):

<?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>webappdemo</display-name>
  <description>
     webappdemo route
  </description>
  <error-page>  
   <error-code>404</error-code>  
   <location>/index.html</location>  
</error-page>  
</web-app>

五、常见问题

1.打包后浏览器还能看到源码 webpack://

  • 问题

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
    
  


2.设置proxy解决开发跨域问题

  • 问题

开发时,浏览器同源策略跨域问题

  • 解决

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

以上是关于Vue:Mac下Cli 3.x环境搭建与vue基本配置及部署的主要内容,如果未能解决你的问题,请参考以下文章

[Vue专题] 对比vue-cli2.x和vue-cli3.x的搭建

对比vue-cli2.x和vue-cli3.x的搭建

vue-cli入门-----搭建一个简单的登录页面

vue-cli 3.x 与vue-cli 2.x构建项目的区别

Vue 爬坑之路—— vue-cli 3.x 搭建项目

使用Vue-cli 3.x搭建Vue项目