导读
vue3.0 进去有段时间,借助年底这段时间不怎忙,摸会鱼,开始学习Vue3。本文次要从我的项目搭建到我的项目实战,一步步的学习Vue3 的我的项目搭建以及一些插件及库的应用,缩小入坑。
浏览三连:点赞(????)、关注(????)、珍藏(????)。
本文 github(demo) 已上传,更多往期文章已分类整理。
注释
版本
node v12.16.2
npm 6.14.9
残缺的package.json
{ "name": "vue3-demo", "version": "0.1.0", "private": true, "scripts": { "serve": "vue-cli-service serve", "build": "vue-cli-service build", "lint": "vue-cli-service lint" }, "dependencies": { "core-js": "^3.6.5", "vue": "^3.0.0", "vue-router": "^4.0.1" }, "devDependencies": { "@vue/cli-plugin-babel": "~4.5.0", "@vue/cli-plugin-eslint": "~4.5.0", "@vue/cli-service": "~4.5.0", "@vue/compiler-sfc": "^3.0.0", "ant-design-vue": "^2.0.0-rc.5", "autoprefixer": "^9.8.6", "babel-eslint": "^10.1.0", "eslint": "^6.7.2", "eslint-plugin-vue": "^7.0.0-0", "postcss": "^8.2.1", "postcss-loader": "^4.1.0", "sass": "^1.30.0", "sass-loader": "^10.1.0", "vuex": "^4.0.0-rc.2" }, "eslintConfig": { "root": true, "env": { "node": true }, "extends": [ "plugin:vue/vue3-essential", "eslint:recommended" ], "parserOptions": { "parser": "babel-eslint" }, "rules": {} }, "browserslist": [ "> 1%", "last 2 versions", "not dead" ]}
1. 初始化我的项目
1.1 应用Vue3,须要降级vue-cli,全局装置最先版本@vue/cli;
npm install -g @vue/cli@next
1.2 装置胜利后输出,显示,装置胜利
$ vue -V@vue/cli 4.5.4
1.3 装置胜利Vue cli 4, 应用上面命令创立vue3我的项目;
vue create vue3-demo
运行:在Manually select features
输出Vue 3抉择vue3版本;
? Please pick a preset: (Use arrow keys)> true ([Vue 2] dart-sass, babel, typescript, router, vuex, unit-mocha, e2e-cypress) Default ([Vue 2] babel, eslint) Default (Vue 3 Preview) ([Vue 3] babel, eslint) Manually select features Vue 3
1.4 启动服务
cd vue3-demo //进入文件npm run serve // 运行我的项目
应用网络浏览器转到:http://localhost:8080/
,如图
1.4 我的项目文件列表
├─.gitignore├─ .git├─ node_modules├─babel.config.js├─package-lock.json├─package.json├─README.md├─src| ├─App.vue| ├─main.js| ├─components| | └HelloWorld.vue| ├─assets| | └logo.png├─public| ├─favicon.ico| └index.html
2. 配置PostCSS
PostCSS 插件转换 CSS 代码的工具,减少代码的可读性。利用从 Can I Use 网站获取的数据为 CSS 规定增加特定厂商的前缀。
Autoprefixer 主动获取浏览器的风行度和可能反对的属性,并依据这些数据帮你主动为 CSS 规定增加前缀。
2.1 装置 postcss、postcss-loader、autoprefixer插件;
npm i postcss postcss-loader autoprefixer@9.8.6 -D
autoprefixer
应用9.8.6版本次要是与postcss
的兼容性问题,autoprefixer
默认应用最新版本。
2.2 在vue3-demo
我的项目下创立postcss.config.js
文件;
//创立 postcss.config.jstouch postcss.config.js// postcss.config.jsmodule.exports = { plugins: [ // 配置 Autoprefixer 插件 require('autoprefixer')({ // 游览器最近的两个版本 'overrideBrowserslist': ['last 2 versions'] }) ],};
2.3 在App.vue
中输出上面代码,从新运行:
<template> <div>123</div></template><script>export default { name: 'App', components: { }}</script><style scoped> div { display: flex; }</style>
通过游览器查看输入:
div { display: -webkit-box; display: -ms-flexbox; display: flex;}
3. 配置Css 预处理语言 —— Sass
3.1 应用上面命令装置 Sass;
npm install sass sass-loader -D
3.2 装置好了sass,那咱们就在App.vue
中应用Sass;
<!-- App.vue --><template> <div>123</div></template><script>export default { name: 'App', components: { }}</script><style lang="scss" scoped> $color: #f00; div { display: flex; color: $color, }</style>
这里咱们能够在页面上,文字曾经是红色了。
4. 配置UI组件库
4.1 应用上面命令按装UI组件ant-design-vue@next
,ant-design-vue
组件曾经反对 Vue3
;
npm i ant-design-vue@next -D
4.2 在main.js
中, 全局引入ant-design-vue
组件库
// main.jsimport { createApp } from 'vue'import App from './App.vue'import Antd from 'ant-design-vue'import 'ant-design-vue/dist/antd.css'const app = createApp(App)app.use(Antd)app.mount('#app')
4.3 在App.vue
中引入ant-design-vue
组件;
<template> <a-layout id="components-layout-demo-custom-trigger"> <a-layout-sider v-model:collapsed="collapsed" :trigger="null" collapsible> <div class="logo" /> <a-menu theme="dark" mode="inline" v-model:selectedKeys="selectedKeys"> <a-menu-item key="home"> <HomeOutlined /> <span>Home</span> </a-menu-item> <a-sub-menu key="sub1"> <template #title> <span> <user-outlined /> <span>User</span> </span> </template> <a-menu-item key="user"> Tom</a-menu-item> </a-sub-menu> </a-menu> </a-layout-sider> <a-layout> <a-layout-header style="background: #fff; padding: 0"> <menu-unfold-outlined v-if="collapsed" class="trigger" @click="() => (collapsed = !collapsed)" /> <menu-fold-outlined v-else class="trigger" @click="() => (collapsed = !collapsed)" /> </a-layout-header> <a-layout-content class="main"> <router-view></router-view> </a-layout-content> </a-layout> </a-layout></template><script> import { UserOutlined, HomeOutlined, MenuUnfoldOutlined, MenuFoldOutlined } from '@ant-design/icons-vue'; export default { components: { UserOutlined, HomeOutlined, MenuUnfoldOutlined, MenuFoldOutlined }, data() { return { selectedKeys: ['home'], collapsed: false, }; }, methods: { } };</script><style lang="scss" scoped> #components-layout-demo-custom-trigger { height: 100vh; .trigger { font-size: 18px; line-height: 64px; padding: 0 24px; cursor: pointer; transition: color 0.3s; &:hover { color: #1890ff; } } .logo { height: 32px; background: rgba(255, 255, 255, 0.2); margin: 16px; } } .main { margin: 24px 16px; padding: 24px; background: #fff; height: calc(100% - 64px); }</style>
5. 配置路由 vue-router
5.1 下载安装vue-router
npm install vue-router@4
5.2 装置胜利后,在src
中创立views
文件夹,并且创立home.vue
`user.vue`两个文件;home.vue
文件
<template> Home</template>
user.vue
文件
<template> User</template>
5.3 在src
中创立router
文件夹,并且创立index.js
文件
import { createRouter, createWebHashHistory} from 'vue-router'const Home = ()=> import('./../views/home.vue')const User = ()=> import('./../views/user.vue')const routes = [{ path: '/home', name: 'home', component: Home }, { path: '/user', name: 'user', component: User }, { path: '/', redirect: '/home', component: Home }]export default createRouter({ history: createWebHashHistory(), routes});
5.4 在 main.js
中援用 vue-router
;
//main.jsimport router from './router/index.js'...app.use(router)
5.5 在App.vue
中第5中增加办法menuClick
;<a-menu theme="dark" mode="inline" v-model:selectedKeys="selectedKeys" @click="menuClick">
实现路由跳转,在methods 中增加办法menuClick
methods: { menuClick(e) { // 路由跳转 this.$router.push(e.key) }}
等页面更新,咱们点击user、hone菜单就能够看到成果了。
6. 配置状态管理器 Vuex
6.1 装置 vuex
;
npm install vuex@next -D
6.2 在src
中创立store
文件夹,并且创立index.js
文件;
并且在state
外面寄存一个 count
值;
在mutations
外面创立一个操作increment
,每次加1;
import { createStore} from 'vuex'export default createStore({ // 寄存状态 state:{ count: 0 }, mutations: { // 操作 increment(state) { state.count++ } }, actions: { }, modules: { }})
6.3 在 main.js
中引入 vuex
;
import store from './store/index.js'...app.use(store)
6.4 在home.vue
中增加一个按钮,并应用count
这个值;通过按钮更新Vuex
的值。
<template> <div>应用count 这个状态{{this.$store.state.count}}</div> <a-button @click="add" type="primary">点击状态加一</a-button></template><script> export default { methods: { add() { this.$store.commit('increment') } } }</script>
总结
这篇文章比拟根底,但依据以上的步骤,就能够把我的项目搭建起来。明天的Vue3
的我的项目搭建就到这里了,当初临时还有很多插件不能应用,后续缓缓就会更新,越来越多的插件将会反对Vue3
。
最初
如果喜爱或对你有用,那就点个赞呗(????????????)! (╯╰)(╯╰)(╯╰)。
参考
Vue文档
postcss
autoprefixer