爱共享 爱生活 加油 2021
提取码:qhhv
安装npm install -g vite
image.png
初始化项目创建并进入vite-demo文件夹
-
1.初始化项目
npm init -y
-
2.下载最新的vue
npm install -S vue@next
image.png
-
3.创建index.html,main.js,App.vue文件
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Document</title></head><body> <div id="app"></div> <script type="module" src="./main.js"></script></body></html>
// main.js文件import {createApp} from 'vue'import App from './App.vue'createApp(App).mount('#app')
// App.vue文件 <template> <div> hellow vite </div> </template> <script> export default{} </script> <style scoped> </style>
npm isntall -D @vue/compiler-sfc
image.png
安装完之后,直接就可以在终端输入vite命令使用了
一、安装选择一个文件夹,在终端中打开
使用npm进行安装(需要 Node.js 版本 >= 12.0.0),输入以下命令
npm init @vitejs/app
使用yarn进行安装,输入以下命令
yarn create @vitejs/app
也可一步创建
npm init @vitejs/app my-vue-app --template vue
具体步骤见下图,这里使用的是yarn
创建项目的三步
yarn install后执行yarn run dev,可以看到,启动项目只用了1秒多(选择的模板为vue)
二、新增特性 1.结合script setup语法糖
从上图中可以看到vite初始化出来的组件script标签中默认加入了setup,这种写法源于之前的一个关于script setup提案,感兴趣的可以看下,写法跟之前有很多区别,写了两个demo,可以实际运行起来体验下,用的是上面初始化的项目,写法比之前简单许多。
(父组件,也就是App.vue)
//App.vue<template> <img alt="Vue logo" src="./assets/logo.png" /> <HelloWorld msg="Hello Vue + Vite" @mycilck="myclick" ref="child"/> <button @click="childlog">子组件方法</button></template><script setup>//组件导入,不用注册直接使用,属性方法定义,无需retrun //<script setup>这种写法会自动将所有顶级变量声明暴露给模板(template)使用 import HelloWorld from "comps/HelloWorld.vue" import {ref} from "vue" const child=ref(null) const myclick= ()=>{ console.log("this is myclick"); } const childlog=()=>{ child.value.log("父组件传递的数据") }</script><style>#app { font-family: Avenir, Helvetica, Arial, sans-serif; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; text-align: center; color: #2c3e50; margin-top: 60px; }</style>
(子组件,也就是HelloWorld.vue)
//HelloWorld组件<template> <h1>{{ msg }}</h1> <button @click="state.count++">count is: {{ state.count }}</button> <button @click="onclick">emit</button></template><script setup>import { defineProps, reactive, useContext } from 'vue' import { defineEmit } from 'vue' //1.pops属性定义 defineProps({ msg: String, }) //2.获取上下文 const ctx = useContext() //向外暴露的方法 ctx.expose({ log:function(str) { console.log('子组件暴露的方法',str) }, }) //3.emit接收事件 const emit = defineEmit(['myclick']) const onclick = () => { //也可直接使用上下文中的emit:ctx.emit('mycilck') emit('mycilck') } const state = reactive({ count: 0 })</script><style scoped>a { color: #42b983; }</style>
// 通过引入defineConfig来加入代码提示import { defineConfig } from 'vite'// 通过引入vue插件来完成对vue的支持,须在plugins中注册import vue from '@vitejs/plugin-vue'const { resolve } = require('path')export default defineConfig({ //1.别名配置 resolve: { alias: [ { find: '@', replacement: resolve(__dirname, 'src') }, { find: 'comps', replacement: resolve(__dirname, 'src/components') }, ], }, //2.插件相关配置 plugins: [vue()], //3.服务有关配置 server: { open: true, /* 设置为0.0.0.0则所有的地址均能访问 */ host: '0.0.0.0', port: 9000, https: false, proxy: { '/api': { /* 目标代理服务器地址 */ target: 'http://test.rocksea.net.cn:9000/', /* 允许跨域 */ changeOrigin: true, }, }, }})
现在单独的一个css文件也可导入,如在当前组件需要main.css中定义的样式,只需要@import url()
<style scoped>@import url('../assets/css/main.css');</style>
更多有关CSS特性参考官网给出的配置,我这里就不详细说明了
三、问题 1.vite中不能使用require有时候,我们需要动态绑定图片的时候会用到require('../xxx')
但是在vite中会出现这样一个错误