IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> JavaScript知识库 -> vue2 与 vue3 区别 -> 正文阅读

[JavaScript知识库]vue2 与 vue3 区别

main.js 是公用的??

import { createApp } from 'vue'
import App from './App.vue'
import router from './router'
import store from './store'
import axios from 'axios'
// import VueAxios from 'vue-axios'
import VueLazyLoad from 'vue3-lazyload'
import VueCookies from 'vue3-cookies'
import Vuex from 'vuex'
import { ElMessage, ElMessageBox, ElPagination } from 'element-plus'
import 'element-plus/packages/theme-chalk/src/base.scss'
// import env from './env'


axios.defaults.baseURL = '/api'

axios.defaults.timeout = 8000

axios.interceptors.response.use((response) => {
  const res = response.data
  const path = location.hash
  if (res.status === 0) {
    return res.data
  } else if (res.status === 10) {
    if (path !== '#/index') {
      window.location.href = '/#/login'
    }
    return Promise.reject(res)
  } else {
    ElMessage.warning(res.msg)
    return Promise.reject(res)
  }
}, (error) => {
  const res = error.response
  ElMessage.error(res.data.message)
  return Promise.reject(error)
})
// Vue.config.productionTip = false
axios.defaults.withCredentials = true
const app = createApp(App)
app.config.globalProperties.axios = axios

app.use(store)
app.use(router)
app.use(VueCookies)
app.use(Vuex)
app.use(VueLazyLoad, {
  loading: '/imgs/loading-svg/loading-bars.svg'
})

app.use(ElMessage)
app.use(ElMessageBox)
app.use(ElPagination)

app.mount('#app')

vue2的调用? ?

import NavFooter from '../components/NavFooter.vue'
export default {
  name: 'login',
  components: {
    NavFooter
  },
  data () {
    return {
      username: '',
      password: '',
      userId: ''
    }
  },
  methods: {
    login () {
      const { username, password } = this
      if (!username || !password) {
        this.$message.error('请输入正确的用户名和密码')
        return
      }
      this.axios.post('/user/login', {
        username,
        password
      }).then((res) => {
        this.$cookies.set('userId', res.id, 'Session')
        this.$store.dispatch('saveUserName', res.username)
        this.$router.push({
          name: 'index',
          params: {
            from: 'login'
          }
        })
    },
    // ...mapActions(['saveUserName']),  es6
    register () {
      const { username, password } = this
      this.axios.post('/user/register', {
        username,
        password,
        email: 'xiaoxiao@163.com'
      }).then(() => {
        this.$message.success('注册成功')
      })
     
    }
  }
}
</script>

vue3 的调用? getCurrentInstance 返回所有的全局变量,故可以ctx.$router 等,单独引用的话看第二张图

import { getCurrentInstance, ref } from "vue";
import cookie from "vue-cookie";
export default {
  name: "login",
  props: {
    uname: {
      type: String,
      default: "Jack",
    },
  },
  setup() {
    const { ctx } = getCurrentInstance();
    let username = ref("");
    let password = ref("");
    let userId = ref("");
    let store = ctx.$store;
    let router = ctx.$router;
    const login = () => {
      if (!username.value || !password.value) {
        ctx.$message.error("请输入正确的用户名和密码");
        return;
      }
      ctx.axios
        .post("/user/login", {
          username: username.value,
          password: password.value,
        })
        .then((res) => {
          cookie.set("userId", res.id, { expires: "Session" });
          store.commit("saveUserName", res.username);
          router.push({
            name: "index",
            params: {
              from: "login",
            },
          });
        });
    };
    const register = () => {
      ctx.$message.success("xxx");
      return;
    };
    return {
      username,
      password,
      userId,
      login,
      register,
    };
  },
};
</script>
import { computed } from 'vue'
import { useStore } from 'vuex'


export default {
  setup () {
    const store = useStore()
const router = useRouter()
const route = useRoute()
const pus =  function pushWithQuery(query) {
      router.push({
        name: 'search',
        query: {
          ...route.query,
        },
      })
    }

    return {
      // 在 computed 函数中访问 state
      count: computed(() => store.state.count),

      // 在 computed 函数中访问 getter
      double: computed(() => store.getters.double),
pus 
    }
  }
}

  JavaScript知识库 最新文章
ES6的相关知识点
react 函数式组件 & react其他一些总结
Vue基础超详细
前端JS也可以连点成线(Vue中运用 AntVG6)
Vue事件处理的基本使用
Vue后台项目的记录 (一)
前后端分离vue跨域,devServer配置proxy代理
TypeScript
初识vuex
vue项目安装包指令收集
上一篇文章      下一篇文章      查看所有文章
加:2021-08-09 10:09:16  更:2021-08-09 10:09:26 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/19 8:38:56-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码