vue项目之移动端vw布局-配置postcss.config.js

本文介绍了如何在Vue项目中配置移动端vw布局,通过postcss.config.js文件设置postcss-import、autoprefixer及postcss-px-to-viewport插件,实现响应式设计。详细讲解了各配置项的作用,如viewportWidth、viewportHeight、unitPrecision等,并提供了package.json配置示例。同时强调了版本匹配的重要性,避免引入不同版本包导致的问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

vue项目之移动端vw布局-配置postcss.config.js

postcss.config.js文件

// https://github.com/michael-ciniawsky/postcss-load-config

module.exports = {
  "plugins": {
    "postcss-import": {},
    // to edit target browsers: use "browserslist" field in package.json
    "autoprefixer": {
      path: ['./src/*']
    },
    "postcss-px-to-viewport-opt": {
      "viewportWidth": "750", // 视窗的宽度,对应设计稿的宽度
      "viewportHeight": "667", // 视窗的高度
      "unitPrecision": 5, // 指定px转换为视窗单位值的小数位数(因为无法整除)
      "viewportUnit": "vw", // 指定需要转换成的视窗单位,使用vw
      "selectorBlackList": ['#nprogress'], // 指定不转换为视窗单位的类
      "minPixelValue": 1, // 小于或等于1px不转换为视窗单位
      "mediaQuery": false, // 允许在媒体查询中转换px
      "exclude": /(\/|\\)(node_modules)(\/|\\)/ // 不包含node_modules文件
    },
  }
}

package.json文件

{
  "name": "mobile_vw_pro",
  "version": "0.1.0",
  "private": true,
  "scripts": {
    "dev": "vue-cli-service serve",
    "build": "vue-cli-service build",
    "lint": "vue-cli-service lint"
  },
  "dependencies": {
    "core-js": "^3.6.5",
    "postcss-px-to-viewport-opt": "0.0.4",
    "vue": "^2.6.11",
    "vue-router": "^3.2.0",
    "vuex": "^3.4.0"
  },
  "devDependencies": {
    "@vue/cli-plugin-babel": "~4.5.7",
    "@vue/cli-plugin-eslint": "~4.5.7",
    "@vue/cli-plugin-router": "~4.5.7",
    "@vue/cli-plugin-vuex": "~4.5.7",
    "@vue/cli-service": "~4.5.7",
    "@vue/eslint-config-prettier": "^6.0.0",
    "babel-eslint": "^10.1.0",
    "eslint": "^6.7.2",
    "eslint-plugin-prettier": "^3.3.1",
    "eslint-plugin-vue": "^6.2.2",
    "less": "^3.0.4",
    "less-loader": "^7.0.1",
    "postcss": "^8.4.12",
    "postcss-import": "^11.0.0",
    "postcss-loader": "^4.0.4",
    "postcss-px-to-viewport": "0.0.3",
    "prettier": "^2.2.1",
    "vue-template-compiler": "^2.6.11"
  },
  "eslintConfig": {
    "root": true,
    "env": {
      "node": true
    },
    "extends": [
      "plugin:vue/essential",
      "eslint:recommended",
      "@vue/prettier"
    ],
    "parserOptions": {
      "parser": "babel-eslint"
    },
    "rules": {}
  },
  "browserslist": [
    "> 1%",
    "last 2 versions",
    "not dead"
  ]
}

在这里插入图片描述
注意点:引入的包不同版本会引发很多问题,按照我上面的package.json来,有问题留言或者百度。

GitHub项目地址如下:

fqniu/mobile_vw_pro
git clone git@github.com:fqniu/mobile_vw_pro.git

Vue 项目中,`vue.config.js` 是一个可选的配置文件,用于对项目的构建和开发环境进行自定义配置。如果该文件存在于项目根目录下,则会被 `@vue/cli-service` 自动加载并应用其中的设置[^1]。 ### 配置 publicPath `publicPath` 是 `vue.config.js` 中一个常用配置项,用于指定静态资源(如 JS、CSS、图片等)在运行时的公共路径。例如: ```javascript module.exports = { publicPath: process.env.NODE_ENV === 'production' ? '/my-app/' : '/' } ``` 该配置适用于部署到非根路径的情况,在生产环境中可以确保资源正确加载[^1]。 ### 配置 PostCSS 实现移动端适配 为了实现移动端适配,可以在 `vue.config.js` 中结合 `postcss.config.js` 使用插件 `postcss-px-to-viewport` 进行 px 到视窗单位的自动转换。具体配置如下: ```javascript // vue.config.js module.exports = { css: { loaderOptions: { postcss: { plugins: [ require('autoprefixer')(), require('postcss-px-to-viewport')({ viewportWidth: 375, // 设计稿宽度,通常为750 unitPrecision: 3, // px转换单位的小数位数 viewportUnit: 'vw', // 转换后的单位 selectorBlackList: ['.ignore', '.hairlines'], // 忽略转换的类名 minPixelValue: 1, // 小于等于1px不转换 mediaQuery: false // 是否在媒体查询中转换px }), require('postcss-viewport-units')({ filterRule: rule => rule.nodes.findIndex(i => i.prop === 'content') === -1 }), require('cssnano')({ preset: 'advanced', autoprefixer: false, 'postcss-zindex': false }) ] } } } } ``` 上述配置将 px 单位自动转换为视窗单位(如 vw),从而实现响应式布局,适用于不同屏幕尺寸的设备[^3]。 ### 开发服务器代理配置 在前后端分离开发中,常常需要解决跨域问题。可以通过配置 `devServer.proxy` 来实现请求代理: ```javascript module.exports = { devServer: { proxy: { '/api': { target: 'http://localhost:3000', // 后端服务地址 changeOrigin: true, // 是否改变请求源 pathRewrite: { '^/api': '' } // 请求路径重写 } } } } ``` 此配置允许前端开发服务器将 `/api` 前缀的请求代理到后端服务,避免跨域限制[^1]。 ### 配置别名与扩展名解析 为了简化模块导入路径,可以使用 `resolve.alias` 和 `resolve.extensions`: ```javascript const path = require('path') module.exports = { configureWebpack: { resolve: { alias: { '@': path.resolve(__dirname, 'src') }, extensions: ['.js', '.vue', '.json'] } } } ``` 该配置允许通过 `@` 符号快速引用 `src` 目录下的模块,并支持省略 `.js`、`.vue` 等扩展名。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值