Руководство по созданию проекта Vue3.0

Vue.js

Vue 3.0 выпущен уже давно.Как программист, который полагается на Vue, чтобы поесть, я действительно говорю, что не могу учиться. . . Несколько дней назад я посмотрел несколько видеороликов о 3.0. Сегодня я расскажу о нескольких способах создания проектов vue3.0, а также о демонстрациях.

создание проекта

Первый: после создания vue-cli введите vue-next или API, который вы хотите использовать в 3.0.Код выглядит следующим образом:

1.直接引入vue-next
  vue create vue3.0-demo-cli
  vue add vue-next

2.引入3.0的composition-api 使用这一部分功能
 vue create vue3.0-demo-cli
 vue add @vue/composition-api  
 // main.js 中引入
 import VueCompositionApi from  '@vue/composition-api'
 Vue.use(VueCompositionApi);

Непосредственно импортируйте vue-next, обратите внимание на версию vue-cli,Если версия ниже 4.0, придется обновить vue scaffolding:npm install -g @vue/cliВ противном случае при запуске проекта будет сообщено об ошибке.

Второй:Vite создает vue3.0, код выглядит следующим образом:

npm install -g create-vite-app  // 全局安装vite
create-vite-app vue-demo-vite

Vite быстро создает проекты, гм, вы очень оптимистичны, используя функцию импорта, которая поставляется с браузером, независимо от того, насколько сложный проект, запуск O (1)


Опыт кода

HelloWorld.vue
<template>
  <div class="hello">
    {{top}}
    <input :class="{fixedinput:top>10}"  
           type="text" 
           v-model="state.newTodo" @keyup.enter="addTodo">
     <div>
      <span>{{nums}}</span> <span @click="add" >点击</span>
    </div>
    <ul>
      <li :class="{done:todo.status}" 
          v-for="(todo,index) in state.todoList" 
         :key="todo.id" 
         @click="toggle(index)">
      {{todo.name}}</li>
    </ul>
    <div>
      完成事件个数:{{remain}}
    </div>
  </div>
</template>
<script>
import { ref, reactive, computed } from 'vue'
// 如果没有import 打包可以把代码丢掉 tree-shaking
// compisition 可以拆开独立函数放在独立文件 vue只能用mixin 会找不到源头 以及重名
import addTodoFac from './hello_function'
// 拆分复杂逻辑import useScrollFac from './hello_function_userScroll'
export default {
  setup () {
    const nums = ref(0)
    const add = () => {
      nums.value += 1
    }
    const state = reactive({
      newTodo: '',
      todoList: [
        { id: 0, name: '学习', status: false },
        { id: 1, name: '吃饭', status: true },
        { id: 2, name: '睡觉', status: false }
      ]
    })
    // 函数可以抽离出去 拆包  拆成独立函数
    // function addTodo () {
    //   state.todoList.push(
    //     { id: state.todoList.length, name: state.newTodo, status: false }
    //   )
    // }
    const { addTodo } = addTodoFac(state)
    function toggle (index) {
      state.todoList[index].status = !state.todoList[index].status
    }
    const { top } = useScrollFac()
    console.log(top)
    const remain = computed(
      () => state.todoList.filter(todo => todo.status).length
    ) 
    return {
      nums,
      add,
      state,
      addTodo,
      remain,
      toggle,
      top 
   }
  }
}
</script>
<!-- Add "scoped" attribute to limit CSS to this component only -->
<style scoped>
h3 {
  margin: 40px 0 0;
}
ul {
  list-style-type: none;
  padding: 0;
}
li {
  margin: 20px 10px;
}
li.done{
  text-decoration: line-through;
}
.fixedinput{
  position:fixed;
  top:10px;
  left:45%;
}
a {
  color: #42b983;
}
</style>


// hello_function_userScroll.js
import { ref, onMounted, onUnmounted } from 'vue'
export default function useScroll () {
  const top = ref(0)  function upDate (e) {
    top.value = window.scrollY
  }
  onMounted(
    () => {
      window.addEventListener('scroll', upDate)
    }
  )
  onUnmounted(
    () => {
      window.removeEventListener('scroll', upDate)
    }
  )
  return { top }
}

// hello_function.js
export default function (state) {
  function addTodo () {
    state.todoList.push(
      { id: state.todoList.length, name: state.newTodo, status: false }
    ) 
 }
  return { addTodo }
}

      

--------------------------------------------------------------------------------------------

адрес git: https://github.com/aicai0/vue3.0-demo.git

Если у вас есть какие-либо вопросы, добро пожаловать на обсуждение, если вы удовлетворены, пожалуйста, поставьте лайк вручную, спасибо! 🙏

Получите больше поз вовремя, пожалуйста, обратите внимание! ! !