一、介绍

vue3.0 node.js(koa) mongodb, 实现 jwt 登录验证,todolist增删改查的 demo

二、参考

1、使用vite+vue3.0搭建项目

2、jwt-demo

3、coding代码

三、开发

1、初始化项目

  1. yarn global add create-vite-app@1.18.0
  2. cva vue3-jwt-todolist
  3. 或者
  4. create-vite-app vue3-jwt-todolist

2、vue3.0 和 vue2.0 相比90% 相同, 不同之处

  • Vue3.0 的Template 支持多个根标签
  • Vue3.0 有createApp() , 而vue2.0 的是new Vue()
  • createApp(组件) 、 new Vue({ template,render })

3、配置路由,引入Vue Router4

查看版本号

npm info vue-router versions

安装4.0.0-beta.11

yarn add vue-router@4.0.0-beta.11

src/router/index.js

  1. import { createRouter, createWebHashHistory } from 'vue-router';
  2. // 构建路由配置。
  3. const routes = [
  4. {
  5. path: '/',
  6. name: 'home',
  7. meta: { noAuth: false },
  8. component: () => import('../views/Home.vue'),
  9. },
  10. {
  11. path: '/login',
  12. name: 'login',
  13. meta: { noAuth: true },
  14. component: () => import('../views/Login.vue'),
  15. },
  16. ];
  17. const router = createRouter({
  18. // 使用 hash 模式构建路由( url中带 # 号的那种)
  19. history: createWebHashHistory(),
  20. // 使用 history 模式构建路由 ( url 中没有 # 号,但生产环境需要特殊配置)
  21. // history: createWebHistory(),
  22. routes,
  23. });
  24. export default router;

4、配置入口文件

router.beforeEach 设置路由拦截

src/main.js

  1. import { createApp } from 'vue';
  2. import App from './App.vue';
  3. import router from './router';
  4. import './index.scss';
  5. import Antd from 'ant-design-vue';
  6. import 'ant-design-vue/dist/antd.css';
  7. router.beforeEach((to, from, next) => {
  8. if (!to.meta.noAuth && !localStorage.getItem('token')) {
  9. next('/login');
  10. } else next();
  11. });
  12. const app = createApp(App);
  13. app.use(Antd);
  14. app.use(router);
  15. app.mount('#app');

src/App.vue

  1. <template>
  2. <router-view />
  3. </template>
  4. <script>
  5. import HelloWorld from './components/HelloWorld.vue';
  6. export default {
  7. name: 'App',
  8. };
  9. </script>
  10. <style scoped></style>