vue学习

搭建vue3.0 项目

2021-01-22  本文已影响0人  hegege
  1. 安装脚手架
    卸载原来的脚手架 npm uninstall vue-cli -g
    下载新的脚手架 npm uninstall vue-cli -g
    或者 npm install --global @vue/cli@next
vue create  vue3-bm

选择功能进行下载


image.png
  1. 启动项目
npm install 
npm run serve //启动项目

image.png
  1. 配置环境变量和代理
    我们在项目中可以使用env 创建环境变量
    新建三个文件


    image.png
配置打包
 "serve": "vue-cli-service serve",
    "insidetest": "vue-cli-service build --mode insidetest",
    "release": "vue-cli-service build --mode release",
    "build": "vue-cli-service build",
    "lint": "vue-cli-service lint"

通过 npm run serve 启动本地 , 执行 development
通过 npm run release 打包测试环境 , 执行 release
通过 npm run build 打包正式 , 执行 production

以 VUE_APP_ 开头的变量,在代码中可以通过 process.env.VUE_APP_ 访问。
比如,VUE_APP_HOST = 'development' 通过process.env.VUE_APP_HOST访问。
除了 VUE_APP_* 变量之外,在你的应用代码中始终可用的还有两个特殊的变量NODE_ENV 和BASE_URL

4 如果需要跨域,我们此时需要配置代理
我们新建一个vue.config.js

module.exports = {
  publicPath: "",
  runtimeCompiler: true,
  productionSourceMap: !isProduction,
  lintOnSave: true,
  // 如果开发环境,注释掉代理
  devServer: {
    host: "localhost",
    port: 8080,
    //如果访问local  再把代理打开
    proxy: {
      "/api": {
        // target: 'http://59.110.228.107:8020',
        changeOrigin: true,
        pathRewrite: {
          "^/api": "" //这里理解成用'/api'代替target里面的地址,比如我要调用'http://40.00.100.100:3002/user/add',直接写'/api/user/add'即可
        }
      }
    }
  },
  css: {
    // 是否使用css分离插件,要不然release版css不单独生成文件
    extract: true
  },
};
  1. 配置 移动端适配(vw/vh方案)
npm install postcss-px-to-viewport -D
 修改 .postcssrc.js

module.exports = {
  plugins: {
    autoprefixer: {
      overrideBrowserslist: ['Android 4.1', 'iOS 7.1', 'Chrome > 31', 'ff > 31', 'ie >= 8']
    },
    'postcss-px-to-viewport': {
      viewportWidth: 375, // 视窗的宽度,对应的是我们设计稿的宽度,一般是750
      unitPrecision: 3, // 指定`px`转换为视窗单位值的小数位数(很多时候无法整除)
      viewportUnit: 'vw', // 指定需要转换成的视窗单位,建议使用vw
      selectorBlackList: ['.ignore', '.hairlines'], // 指定不转换为视窗单位的类,可以自定义,可以无限添加,建议定义一至两个通用的类名
      minPixelValue: 1, // 小于或等于`1px`不转换为视窗单位,你也可以设置为你想要的值
      mediaQuery: false // 允许在媒体查询中转换`px`
    }
  }
}

rem适配方案

npm install lib-flexible postcss-pxtorem --save  
配置vue.config.js和package.json
//main.js
import 'lib-flexible/flexible.js'


//package.json
"postcss": {
    "plugins": {
      "autoprefixer": {
        "browsers": [
          "Android >= 4.0",
          "iOS >= 7"
        ]
      },
      "postcss-pxtorem": {
        "rootValue": 37.5,
        "propList": [
          "*"
        ]
      }
    }
  },


//vue.config.js
const autoprefixer = require('autoprefixer')
const pxtorem = require('postcss-pxtorem')

module.exports = {
  css: {
    loaderOptions: {
      postcss: {
        plugins: [
          autoprefixer({
            browsers: ['Android >= 4.0', 'iOS >= 7']
          }),
          pxtorem({
            rootValue: 37.5,
            propList: ['*'],
          })
        ]
      }
    }
  }
}


6 vant 按需引入
https://youzan.github.io/vant/#/zh-CN/quickstart#fang-shi-yi.-zi-dong-an-xu-yin-ru-zu-jian-tui-jian

7 写入 公用css


image.png

8 封装axios

1 app.use(Vant).use(store).use(router).mount('#app');
app.use(axios)
这个自己封装就可以了
  1. 添加路由
npm install --save vue-router
const router = createRouter({
  history: createWebHashHistory(), // hash模式:createWebHashHistory,history模式:createWebHistory
  routes: []

10 配置store

import { createStore } from "vuex";

export default createStore({});
app.use(router);
app.use(store);

11 webpack 打包遇到问题


# [关于webpack,打包时遇到的错误]
in ./src/assets/logo.png

Syntax Error: Error


@ ./node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/li
b!./node_modules/vue-loader-v16/dist/templateLoader.js??ref--6!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modul
es/vue-loader-v16/dist??ref--0-1!./src/App.vue?vue&type=template&id=01277482 2:0-43 6:7-17
@ ./src/App.vue?vue&type=template&id=01277482
@ ./src/App.vue
@ ./src/main.js
@ multi ./src/main.js
解决办法
npm remove image-webpack-loader
cnpm install     "image-webpack-loader": "^7.0.1",


上一篇下一篇

猜你喜欢

热点阅读