导读

VUE 3.0出来有段时间,借助年底这段时间不怎忙,摸会鱼,开始学习VUE 3.本文主要从项目搭建到项目实战,一步步的学习Vue3的项目搭建以及一些插件及库的使用,减少入坑。

版本

节点v12.16.2

npm 6.14.9 

完整的包装。js上
{  "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"  ]}
{
  "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
npm install -g @vue/cli@next

1.2、安装成功后输入,显示,安装成功

$ vue -V@vue/cli 4.5.4
$ vue -V
@vue/cli 4.5.4

1.3、安装成功Vue cli 4,使用以下命令创建vue3项目;

vue create vue3-demo
vue create vue3-demo

运行:在手动选择功能输入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
? Please pick a preset: (Use arrow keys)
> true ([Vue 2] dart-sass, babel, typescript, router, vuex, unit-mocha, e2e-cypr
ess)
 Default ([Vue 2] babel, eslint)
 Default (Vue 3 Preview) ([Vue 3] babel, eslint)
 Manually select features Vue 3

build target files 黑的 build文件在哪_sed

1.4、启动服务

cd vue3-demo  //进入文件npm run serve // 运行项目
cd vue3-demo  //进入文件
npm run serve // 运行项目

使用网络浏览器转到:http:// localhost:8080 /

1.5、项目文件列表

├─.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
├─.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代码的工具,增加代码的可读性。利用从我可以使用网站电子杂志的数据为CSS规则添加特定厂商的前缀。

Autoprefixer自动获取浏览器的流行度和能够支持的属性,并根据这些数据帮你自动为CSS规则添加前缀。

2.1、安装postcss,postcss-loader,autoprefixer插件;

npm i postcss postcss-loader autoprefixer@9.8.6 -D
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']        })    ],};
//创建 postcss.config.js
touch postcss.config.js

// postcss.config.js
module.exports = {
    plugins: [
        // 配置 Autoprefixer 插件
        require('autoprefixer')({
            // 游览器最近的两个版本
            'overrideBrowserslist': ['last 2 versions']
        })
    ],
};

2.3、在App.vue中输入以下代码,重新运行:

123

div { display: flex; }

通过游览器查看输出:

div {   display: -webkit-box;   display: -ms-flexbox;   display: flex;}
div {
   display: -webkit-box;
   display: -ms-flexbox;
   display: flex;
}

3、配置Css初步语言-Sass

3.1、使用下面的命令安装

npm install sass sass-loader -D
npm install sass sass-loader -D

3.2、安装好了sass,那我们就在App.vue中使用Sass;

123

$color: #f00; div { display: flex; color: $color, }

这里我们可以在页面上,文字已经是红色了。

4、配置UI组件库

4.1、使用以下命令按装UI组件ant-design-vue @ next,ant-design-vue组件已经支持Vue3;

npm i ant-design-vue@next -D
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')
// main.js
import { 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组件;

Home                                                                                                                                    User                                                                 Tom                                                                         (collapsed = !collapsed)" />                 (collapsed = !collapsed)" />                                                                    import {        UserOutlined,        HomeOutlined,        MenuUnfoldOutlined,        MenuFoldOutlined    } from '@ant-design/icons-vue';    export default {        components: {            UserOutlined,            HomeOutlined,            MenuUnfoldOutlined,            MenuFoldOutlined        },        data() {            return {                selectedKeys: ['home'],                collapsed: false,            };        },        methods: {        }    };    #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);    }

    
        
            
            
                
                    
                    Home
                
                
                    
                        
                            
                            User
                        
                    
                     Tom
                
            
        
        
            
                 (collapsed = !collapsed)" />
                 (collapsed = !collapsed)" />
            
            
                
            
        
    


    import {
        UserOutlined,
        HomeOutlined,
        MenuUnfoldOutlined,
        MenuFoldOutlined
    } from '@ant-design/icons-vue';

    export default {
        components: {
            UserOutlined,
            HomeOutlined,
            MenuUnfoldOutlined,
            MenuFoldOutlined
        },
        data() {
            return {
                selectedKeys: ['home'],
                collapsed: false,
            };
        },
        methods: {

        }
    };


    #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);
    }

5、配置路由vue-router

5.1、下载安装vue-router

npm install vue-router@4 
npm install vue-router@4

5.2、安装成功后,在src中创建views文件夹,并创建home.vue`user.vue`两个文件;home.vue文件

Home

    Home

user.vue文件

User

    User

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});
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)
//main.js
import router from './router/index.js'
...
app.use(router)

5.5、在App.vue中第5中添加方法menuClick;

实现路由转发,在方法中添加方法menuClick

methods: {    menuClick(e) {       // 路由跳转        this.$router.push(e.key)    }}
methods: {
    menuClick(e) {
       // 路由跳转
        this.$router.push(e.key)
    }
}

等页面更新,我们点击用户,hone菜单就可以看到效果了。

6、配置状态管理器Vuex

6.1、安装vuex;

npm install vuex@next -D
npm install vuex@next -D

6.2、在src中创建存储文件夹,并创建index.js文件;

并且在状态里面放置一个计数值;

在变异里面创建一个操作增量,每次加1;

import {    createStore} from 'vuex'export default createStore({    // 存放状态    state:{        count: 0    },    mutations: {        // 操作        increment(state) {            state.count++        }    },    actions: {    },    modules: {    }})
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)
import store from './store/index.js'
...
app.use(store)

6.4、在home.vue中添加一个按钮,并使用count这个值;通过按钮更新Vuex的值。

使用count 这个状态{{this.$store.state.count}}

点击状态加一 export default { methods: { add() { this.$store.commit('increment') } } }

总结

今日文章的Vue3的项目组装就到这里了,现在暂时还有很多插件无法使用,后续慢慢就会更新,越来越多的插件将会支持Vue3。

本文完〜

build target files 黑的 build文件在哪_App_02