VUE开发--Vue-Cli3(四十一)

一、Vue-cli简介

Vue CLI 是一个基于 Vue.js 进行快速开发的完整系统,提供:

  1. 通过 @vue/cli 搭建交互式的项目脚手架。
  2. 通过 @vue/cli + @vue/cli-service-global 快速开始零配置原型开发。
    一个运行时依赖 (@vue/cli-service),该依赖:
  • 可升级;
  • 基于 webpack 构建,并带有合理的默认配置;
  • 可以通过项目内的配置文件进行配置;
  • 可以通过插件进行扩展。
  • 一个丰富的官方插件集合,集成了前端生态中最好的工具。
  • 一套完全图形化的创建和管理 Vue.js 项目的用户界面。
    网址:
    https://cli.vuejs.org/zh/

二、Vue-Cli3.0安装

  1. 关于旧版本
    Vue CLI 的包名称由 vue-cli 改成了 @vue/cli。
    如果你已经全局安装了旧版本的 vue-cli (1.x 或 2.x),你需要先通过
 npm uninstall vue-cli -g 
或
 yarn global remove vue-cli 卸载它。
  1. 安装3.0 Vue Cli
# 安装3.0  Vue Cli
npm install -g @vue/cli
  1. 项目创建
# 创建一个项目
vue create hello-world
# 创建完成后,可以通过命令打开图形化界面
vue ui
VUE开发--Vue-Cli3(四十一)_第1张图片
创建项目
  1. 选择配置:
    注意,空格键是选中与取消,A键是全选
    TypeScript 支持使用 TypeScript 书写源码
    Progressive Web App (PWA) Support PWA 支持。
    Router 支持 vue-router 。
    Vuex 支持 vuex 。
    CSS Pre-processors 支持 CSS 预处理器。
    Linter / Formatter 支持代码风格检查和格式化。
    Unit Testing 支持单元测试。
    E2E Testing 支持 E2E 测试。


    VUE开发--Vue-Cli3(四十一)_第2张图片
    选择配置
VUE开发--Vue-Cli3(四十一)_第3张图片
选择sass
VUE开发--Vue-Cli3(四十一)_第4张图片
代码风格检查
VUE开发--Vue-Cli3(四十一)_第5张图片
单元测试框架
VUE开发--Vue-Cli3(四十一)_第6张图片
i配置文件

其它的全部选择: yes。

VUE开发--Vue-Cli3(四十一)_第7张图片
安装依赖
  1. 启动项目:
npm run serve
VUE开发--Vue-Cli3(四十一)_第8张图片
启动项目

三、HTML 和静态资源

public/index.html

四、配置文件

  1. process.env.BASE_URL配置
vue-cli3的源码部分:@vue/cli-service/lib/util/resolveClientEnv.js
VUE开发--Vue-Cli3(四十一)_第9张图片
process.env.BASE_URL配置

核心:env.BASE_URL = options.baseUrl;
在项目根目录创建一个 vue.config.js文件,可进行baseUrl配置,接口代理以及其他配置。

  1. 主要配置文件:(vue.config.js)
tests-----单元测试目录
.browserslistrc-----浏览器兼容配置文件
.eslintrc.js-----eslint代码检查配置
.postcssrc.js-----postcss配置文件
.package.json-----项目依赖和启动的配置文件

新建文件:vue.config.js

const path = require('path');
//源码路径
function resolve(dir = '') {
  return path.join(__dirname, './src', dir);
}
//导入模块资源
module.exports = {
    // 基本路径
    publicPath: './',
    // 输出文件目录
    outputDir: 'dist',
    //放置生成的静态资源 (js、css、img、fonts) 的 (相对于 outputDir 的) 目录
    assetsDir: 'static',
    // 生产环境是否生成 sourceMap 文件
    productionSourceMap: false,
    // webpack-dev-server 相关配置
    devServer: {
      host: '0.0.0.0',
      //端口号
      port: 8082,
      https:false
    },
    chainWebpack: config => {
      config.plugins.delete('prefetch');
      config.plugins.delete('preload');
    },
    configureWebpack: {
      resolve: {
        alias: {
          core: resolve('core')
        }
      },
      optimization: {
        runtimeChunk: {
          name: entrypoint => `runtime~${entrypoint.name}`
        },
        splitChunks: {
          minChunks: 2,
          minSize: 20000,
          maxAsyncRequests: 20,
          maxInitialRequests: 30,
          name: false
        }
      }
    },
     //css相关配置
    css: {
      loaderOptions: {
        sass: {
          data:
            '@import "@/assets/scss/_var.scss";@import "@/assets/scss/_mixin.scss";'
        }
      }
    }
  };
  
  1. 端口修改
    配置文件:vue.config.js
 devServer: {
        // 通知dev server在服务器启动后打开浏览器。将其设置为true以打开默认浏览器。
        // Darwin是由苹果电脑于2000年所释出的一个开放原始码操作系统。
        // process.platform:列举node运行的操作系统的环境,只会显示内核相关的信息,
        // 如:linux2, darwin,而不是“Redhat ES3” ,“Windows 7”,“OSX 10.7”等;
        open: process.platform === 'darwin',
        host: '0.0.0.0',
        // 将端口改为8081与服务端口一致,否则
        // 报GET http://localhost:8080/sockjs-node/info?t=1563288873572 404 (Not Found)
        port: 8088,
        https: false,
        hotOnly: false,
        disableHostCheck: false,
        // 设置代理
        proxy: {
            '/api': {
                // 目标 API 地址
                target: 'http://localhost:8081/',
                // 如果要代理 websockets,不使用请关闭
                ws: true,
                // 将主机标头的原点更改为目标URL
                // changeOrigin: false,
                changeOrigin: true,
                pathRewrite: {
                    '^/api': ''
                }
            }
        },

五、环境变量和模式

.env                # 在所有的环境中被载入
.env.local          # 在所有的环境中被载入,但会被 git 忽略
.env.[mode]         # 只在指定的模式中被载入
.env.[mode].local   # 只在指定的模式中被载入,但会被 git 忽略
.env.development  # 只在生产环境执行
.env.production   # 只在开发环境执行

一个环境文件只包含环境变量的“键=值”对:

FOO=bar
VUE_APP_SECRET=secret

环境加载属性
为一个特定模式准备的环境文件的 (例如 .env.production) 将会比一般的环境文件 (例如 .env) 拥有更高的优先级。
此外,Vue CLI 启动时已经存在的环境变量拥有最高优先级,并不会被 .env 文件覆写。
模式:
模式是 Vue CLI 项目中一个重要的概念。默认情况下,一个 Vue CLI 项目有三个模式:

development 模式用于 vue-cli-service serve
production 模式用于 vue-cli-service build 和  vue-cli-service test:e2e 
test 模式用于 vue-cli-service test:unit

注意:模式不同于 NODE_ENV,一个模式可以包含多个环境变量。也就是说,每个模式都会将 NODE_ENV 的值设置为模式的名称
比如:在 development 模式下 NODE_ENV 的值会被设置为 "development"。
你可以通过为 .env 文件增加后缀来设置某个模式下特有的环境变量。比如,如果你在项目根目录创建一个名为 .env.development 的文件,那么在这个文件里声明过的变量就只会在 development 模式下被载入。
你可以通过传递 --mode 选项参数为命令行覆写默认的模式。例如,如果你想要在构建命令中使用开发环境变量,请在你的 package.json 脚本中加入:

"dev-build": "vue-cli-service build --mode development",

BASE_URL - 会和 vue.config.js 中的 publicPath 选项相符,即你的应用会部署到的基础路径。
NODE_ENV - 会是 “development”、“production” 或 “test”中的一个。具体的值取决于应用运行的模式。
示例:
package.json 配置文件

  "scripts": {
    "serve": "vue-cli-service serve --mode development",
    "build": "vue-cli-service build",
    "lint": "vue-cli-service lint",
    "i18n:report": "vue-cli-service i18n:report --src './src/**/*.?(js|vue)' --locales './src/locales/**/*.json'",
    "test:unit": "vue-cli-service test:unit"
  }

创建环境文件:
.env.development

# 环境配置
NODE_ENV  = 'development'
# API地址
VUE_APP_BASE_API = 'http://localhost:8000/'
VUE_APP_ABC = '123'

环境变量的使用 :
只有以 VUE_APP_ 开头的变量会被 webpack.DefinePlugin 静态嵌入到客户端侧的包中(即在项目代码中使用)。
变量读取

  console.log(process.env.VUE_APP_ABC);

注意:
更改了环境变量,必须重启服务。

六、配置scss

1) 新建scss文件

src\styles\global.scss

$theme-color: red;

2) vue.config.js配置

module.exports = {
  lintOnSave: false,
  css: {
    loaderOptions: {
      sass: {
        // 根据自己样式文件的位置调整
        data: `@import "@/styles/global.scss";`
      }
    }
  }
}

3) 使用



VUE开发--Vue-Cli3(四十一)_第10张图片
显示结果

七、常见问题

1. TypeScript引入JS文件

tsconfig.json 配置

    "allowJs": true,
2. 项目运行时一直发http://localhost:8080/sockjs-node/info?t=1462183700002请求

请更改配置文件:vue.config.js
port: 8081修改端口即可


VUE开发--Vue-Cli3(四十一)_第11张图片
服务端口
    devServer: {
        // 通知dev server在服务器启动后打开浏览器。将其设置为true以打开默认浏览器。
        // Darwin是由苹果电脑于2000年所释出的一个开放原始码操作系统。
        // process.platform:列举node运行的操作系统的环境,只会显示内核相关的信息,
        // 如:linux2, darwin,而不是“Redhat ES3” ,“Windows 7”,“OSX 10.7”等;
        open: process.platform === 'darwin',
        host: '0.0.0.0',
        // 修改端口即可
        // 报GET http://localhost:8080/sockjs-node/info?t=1563288873572 404 (Not Found)
        port: 8081,
        https: false,
        hotOnly: false,
        disableHostCheck: false,
        // 设置代理
        proxy: {
            '/api': {
                // 目标 API 地址
                target: 'http://localhost:8081/',
                // 如果要代理 websockets,不使用请关闭
                ws: true,
                // 将主机标头的原点更改为目标URL
                // changeOrigin: false,
                changeOrigin: true,
                pathRewrite: {
                    '^/api': ''
                }
            }
        },
  1. This may cause things to work incorrectly. Make sure to use the same version for
    问题:

This may cause things to work incorrectly. Make sure to use the same version for
both.
If you are using vue-loader@>=10.0, simply update vue-template-compiler.
If you are using vue-loader@<10.0 or vueify, re-installing vue-loader/vueify sho
uld bump vue-template-compiler to the latest.
解决:
删除C:\Users\Administrator\[email protected]

你可能感兴趣的:(VUE开发--Vue-Cli3(四十一))