十、Vue-工程化

100 阅读2分钟

详细见 vue-cli

1.详细指南

2.配置参考

3.插件开发

4.开发部署

Vue-cli:没有比官网更全的了 必读!!!

1、vue create

vue create hello-world

2、CSS 奇异技术:

1、穿透

CSS穿透,修改其他(非自己写的)框架、其他组件样式

Css: 深度作用选择器:使用 >>> 操作符可以使 scoped 样式中的一个选择器能够作用得“更深”,例如影响 子组件

<style scoped>
#app >>> a {
  color: red
}
</style>

Sass 之类的预处理器无法正确解析 >>> 。这种情况下你可以使用 /deep/ 或 ::v-deep 操作符 取而代之

<style scoped lang="scss">
#app {
  /deep/ a {
    color: rgb(196, 50, 140)
}
::v-deep a {
    color: rgb(196, 50, 140)
  }
}
</style>

3、CSS-模块化

关键代码如下,详细使用翻看文档

3个全部要看哦~

VUE-CSS-Modules

import styles from './foo.module.css'
// 所有支持的预处理器都一样工作
import sassStyles from './foo.module.scss'

CSS MODULES

首先,CSS Modules 必须通过向 css-loader 传入 modules: true 来开启:

// webpack.config.js
{
  module: {
    rules: [
      // ... 其它规则省略
      {
        test: /.css$/,
        use: [
          'vue-style-loader',
          {
            loader: 'css-loader',
            options: {
              // 开启 CSS Modules
              modules: true,
              // 自定义生成的类名
              localIdentName: '[local]_[hash:base64:8]'
            }
          }
        ]
      }
    ]
  }
}

github-css-modules

/* style.css */
.className {
  color: green;
}
import styles from "./style.css";

// import { className } from "./style.css";

element.innerHTML = '<div class="' + styles.className + '">';

4、模拟数据

devServer

    • 有些值像 hostporthttps 可能会被命令行参数覆写。
    • 有些值像 publicPathhistoryApiFallback 不应该被修改,因为它们需要和开发服务器的 publicPath 同步以保障正常的工作。

使用开发服务器配置before选项,可以编写接口,提供模拟数据。

// vue.config.js
module.exports = {
	devServer:{
    // 设置dev代理可避免用接口时的跨域问题。
    proxy: 'http://localhost:3000', 
    // 接口定义。
    before(app) {
      app.get('/api/courses', (req, res) => {
       	res.json([
        	{ name: 'web全栈', price: 8999 }, 
        	{ name: 'web高级', price: 8999 }
        ]) 
      })
		} 
  }
}
// 使用
import axios from 'axios'
export function getCourses() {
	return axios.get('/api/courses').then(res => res.data)
}

proxy:代码配置

在 vue-config.js中可以配置

在 package.json 中 也可以配置

5、实际测试服务器-node层

记得配合自带的8080服务的 proxy选项为 localhost:3000

// 需要安装express:npm i express 


const express = require('express') 
const app = express()

app.get('/api/courses', (req, res) => {
		res.json([{ name: 'web全栈', price: 8999 }, { name: 'web高级', price: 8999 }])
}) 

app.listen(3000)