1.Vue Cli
1.1安装
npm install -g @vue/cli-service-global
1.2启动单个服务
vue serve Hello.vue
1.3创建项目
vue create my-vue-test
1.4图形化管理项目
vue ui
1.5添加插件
vue add router
1.6处理资源路径
<img alt="Vue logo" src="/assets/logo.png">
<img alt="Vue logo" src="http://www.baidu.com/assets/logo.png">
//相对路径./
<img alt="Vue logo" src="./assets/logo.png">
//模块方式请求,可以引用 Node 模块中的资源
<img src="~some-npm-package/foo.png">
//相对根路径@, Vue CLI 默认会设置一个指向 src 的别名
import Hello from '@/components/Hello.vue'
1.7webpack打包的优势
- 脚本和样式表会被压缩且打包在一起,从而避免额外的网络请求。
- 文件丢失会直接在编译时报错,而不是到了用户端才产生 404 错误。
- 最终生成的文件名包含了内容哈希,因此你不必担心浏览器会缓存它们的老版本。
1.8public资源文件夹
- 你需要在构建输出中指定一个固定的文件名字。
- 你有上千个图片,需要动态引用它们的路径。
- 有些库可能和 webpack 不兼容,除了将其用一个独立的
module.exports = { publicPath: '/' }
2.css
2.1安装与使用
# Sass
npm install -D sass-loader node-sass
# Less
npm install -D less-loader less
# Stylus
npm install -D stylus-loader stylus
<style scoped lang="scss">
$color: #42b983; a { color: $color; }
</style>
npm i -D style-resources-loader
const path = require('path')
function addStyleResource(rule) {
rule.use('style-resource')
.loader('style-resources-loader')
.options({
patterns: [
path.resolve(__dirname, './src/styles/imports.scss'),
],
})
}
module.exports = {
chainWebpack: config => {
const types = ['vue-modules', 'vue', 'normal-modules', 'normal']
types.forEach(type =>
addStyleResource(config.module.rule('scss').oneOf(type)))
},
}
2.2作用域
<style scoped> .red { color: red; }</style>
<template> <div class="red" data-v-f3f3eg9>hi</div>
</template>
<style>
.red[data-v-f3f3eg9] { color: red; }
</style>
<style>
</style>
<style scoped>
</style>
子组件,下面代码可以影响当前组件的子组件
<style scoped>
#app >>> a { color: red }
</style>
<style scoped lang="scss">
#app { /deep/ a {
color: rgb(196, 50, 140)
}
::v-deep a {
color: rgb(196, 50, 140)
}
}
</style>
2.3 CSS Module
<style module lang="scss">
.red {color: #f00;}
.bold {font-weight: bold;}
</style>
<a :class="$style.red">awesome-vue</a>
<a :class="{[$style.red]:isRed}">awesome-vue</a>
<a :class="[$style.red, $style.bold]">awesome-vue</a>
<script> export default {
created () {
console.log(this.$style.red) }
}
</script>
3.数据访问
devServer:{
before(app) {
app.get('/api/users', (req, res) => {
res.json([{ name: 'xxx', price: 111 }, { name: 'xxx2', price:
222 }])
})
}
}
devServer: { proxy: 'http://localhost:3000' }