csdn新星计划vue3+ts+antd赛道——利用inscode搭建vue3(ts)+antd前端模板

这篇具有很好参考价值的文章主要介绍了csdn新星计划vue3+ts+antd赛道——利用inscode搭建vue3(ts)+antd前端模板。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。


csdn新星计划vue3+ts+antd赛道——利用inscode搭建vue3(ts)+antd前端模板,web站点,vue专栏,inscode,前端,vue3,typescript,vite

⭐前言

大家好,我是yma16,本文分享利用inscode搭建vue3(ts)+antd前端模板。
2023 新星计划 vue(ts)+antd赛道报名入口:https://bbs.csdn.net/topics/616574177
搭建vue3+ts+antd的指引:认识vite_vue3 初始化项目到打包

⭐利用inscode免费开放资源

InsCode 是一个一站式的软件开发服务平台,从开发-部署-运维-运营,都可以在 InsCode 轻松完成。 InsCode
为每位开发者提供了免费的 2 核/4 GB 云端开发环境。

InsCode 的 Cloud IDE
是运行于浏览器的集成开发环境(IDE),开发者只需要浏览器,有网络环境,就可以随时随地写代码,不用下载安装,不受硬件、环境的影响。

InsCode 的 Cloud IDE 底层基于 VSCode 开发,使用体验与桌面版 VS Code
几乎一致,提供了高效的文件搜索、Git 版本控制、Debug 调试、数据库、终端、在线预览等功能。

重点
InsCode 可以一键部署开发的应用,或者直接部署 GitHub 应用。部署后提供独立的域名访问,并永久在线。

💖 在inscode搭建vue3+ts+ant项目

在git仓库拿到https链接(选择我之前搭建的vue3+ts+antd的git仓库导入)

csdn新星计划vue3+ts+antd赛道——利用inscode搭建vue3(ts)+antd前端模板,web站点,vue专栏,inscode,前端,vue3,typescript,vite
导入inscode作为模板
csdn新星计划vue3+ts+antd赛道——利用inscode搭建vue3(ts)+antd前端模板,web站点,vue专栏,inscode,前端,vue3,typescript,vite
导入成功!

csdn新星计划vue3+ts+antd赛道——利用inscode搭建vue3(ts)+antd前端模板,web站点,vue专栏,inscode,前端,vue3,typescript,vite
安装依赖

$ npm i

csdn新星计划vue3+ts+antd赛道——利用inscode搭建vue3(ts)+antd前端模板,web站点,vue专栏,inscode,前端,vue3,typescript,vite

💖 调整配置

vite.config.js

import { defineConfig } from "vite";
import vue from "@vitejs/plugin-vue";
// @ts-ignore
import { resolve } from "path";
// @ts-ignore
import Components from "unplugin-vue-components/vite";
// @ts-ignore
import { AntDesignVueResolver } from "unplugin-vue-components/resolvers";

// https://vitejs.dev/config/
export default defineConfig({
  // 打包相对路径
  base: './',
  server: {
    host: true,
    proxy: {
      "^/cloudApi/": {
        target: "https://yongma16.xyz/back-front/",
        changeOrigin: true,
        ws: true,
        rewrite: (path) => path.replace(/^\/cloudApi/, ""),
      },
    },
  },
  "css": {
    preprocessorOptions: {
      less: {
        javascriptEnabled: true,
        patterns: [resolve(__dirname, "./src/style/main.less")],
      },
    },
  },
  resolve: {
    alias: {
      "@": resolve(__dirname, "src"),
    },
  },
  plugins: [
    vue(),
    Components({
      resolvers: [AntDesignVueResolver()],
    }),
  ],
});

.inscode配置

run = "npm i && npm run dev"

[deployment]
build = "npm i && npm run build"
run = "npm run preview"

[env]
PATH = "/root/${PROJECT_DIR}/.config/npm/node_global/bin:/root/${PROJECT_DIR}/node_modules/.bin:${PATH}"
XDG_CONFIG_HOME = "/root/.config"
npm_config_prefix = "/root/${PROJECT_DIR}/.config/npm/node_global"

💖 antd 国际化配置

app.ts

<script setup lang="ts">
import { ref } from "vue";
import zhCN from "ant-design-vue/es/locale/zh_CN";
import dayjs from "dayjs";
import "dayjs/locale/zh-cn";
dayjs.locale("zh-cn");
const locale = ref(zhCN);
</script>

<template>
  <!--  国际化配置-->
  <a-config-provider :locale="locale">
    <div id="app">
      <router-view/>
    </div>
  </a-config-provider>
</template>

<style scoped>
.logo {
  height: 6em;
  padding: 1.5em;
  will-change: filter;
}
.logo:hover {
  filter: drop-shadow(0 0 2em #646cffaa);
}
.logo.vue:hover {
  filter: drop-shadow(0 0 2em #42b883aa);
}
  #app{
    width: 100vw;
    height: 100vh;
  }
</style>

💖 用户store

user.ts

// initial state
import { loginUser } from "../../service/user/userApi";
import { message } from "ant-design-vue";

const state = () => ({
  userInfo: {},
});
// getters
const getters = {
  // @ts-ignore
  userInfo: (state, getters, rootState) => {
    const userInfoPermission =
      window.localStorage.getItem("userInfoPermission");
    const userInfo = userInfoPermission ? JSON.parse(userInfoPermission) : {};
    return state.userInfo || userInfo;
  },
};

// actions
// @ts-ignore
const actions = {
  // @ts-ignore
  setUserInfoAction({ commit, state }, userInfo) {
    commit("setUserInfo", userInfo);
  },
  // @ts-ignore
  getUserInfoAction({ state }) {
    const userInfoPermission =
      window.localStorage.getItem("userInfoPermission");
    const userInfo = userInfoPermission ? JSON.parse(userInfoPermission) : {};
    return state.userInfo || userInfo;
  },
  // @ts-ignore
  async loginUser({ commit, state }, params):Promise<void>  {
    return new Promise(async (resolve: any, reject: any) => {
      try {
        console.log('params________',params)
        const res:any = await loginUser(params);
        console.log("res ____________", res);
        const data=res?.data
        console.log('data',data)
        if (data?.code === 200) {
          const userInfo = data.data;
          commit("setUserInfo", userInfo);
          window.localStorage.setItem(
            "userInfoPermission",
            JSON.stringify(userInfo)
          );
          message.success(data?.message);
        } else {
          message.warning(data?.message);
        }
        resolve({ data});
      } catch (r: any) {
        console.log('r',r)
        message.error(JSON.stringify(r));
        reject(r);
      }
    });
  },
};

// mutations
const mutations = {
  // @ts-ignore
  setUserInfo(state, userInfo) {
    console.log("set info", userInfo);
    window.localStorage.setItem("userInfoPermission", JSON.stringify(userInfo));
    state.userInfo = userInfo;
  },
};

export default {
  namespaced: true,
  state,
  getters,
  actions,
  mutations,
};

index.ts

import { createStore, createLogger } from "vuex";
import user from "./modules/user";

const debug = process.env.NODE_ENV !== "production";

export default createStore({
  modules: {
    user,
  },
  strict: debug,
  plugins: debug ? [createLogger()] : [],
});

💖 路由权限

router/index.ts

// import { useStore } from "vuex";
import * as VueRouter from "vue-router";

import store from "../store/index.js";

/**
 * 基础路由
 * @type { *[] }
 */
const constantRouterMap: any = [
  {
    path: "/",
    name: "dashboard",
    // @ts-ignore
    component: () => import("@/view/layout/Layout.vue"),
    meta: { title: "首页" },
  },
  {
    path: "/login",
    name: "login",
    // @ts-ignore
    component: () => import("@/view/user/Login.vue"),
    meta: { title: "登录" },
  },
  {
    path: "/register",
    name: "register",
    // @ts-ignore
    component: () => import("@/view/user/Register.vue"),
    meta: { title: "注册" },
  },
];

// 3. 创建路由实例并传递 `routes` 配置
// 你可以在这里输入更多的配置,但我们在这里
// 暂时保持简单
const router: any = VueRouter.createRouter({
  // 4. 内部提供了 history 模式的实现。为了简单起见,我们在这里使用 hash 模式。
  history: VueRouter.createWebHashHistory(),
  routes: constantRouterMap,
});
// 路由权限  beforeResolve
router.beforeResolve(async (to: any, from: any, next: any) => {
  // 登录
  if (to.name === "login" || to.name === "register") {
    console.warn("login|register");
    next();
  }
  // 用户信息
  const userInfoPermission: any =
    window.localStorage.getItem("userInfoPermission");
  const params = userInfoPermission ? JSON.parse(userInfoPermission) : {};
  if (params) {
    console.log("store", store);
    console.log("params", params);
    try{
      const {data}=await store.dispatch("user/loginUser", params);
      if (data?.code===200) {
        next();
      }
    }
    catch(r){
      console.log('r',r)
      return next({ name: "login" });
    }
  }
  // 返回登录
  return next({ name: "login" });
});
export default router;

💖 预览

运行指令

npm i && npm run dev

运行成功截图:
csdn新星计划vue3+ts+antd赛道——利用inscode搭建vue3(ts)+antd前端模板,web站点,vue专栏,inscode,前端,vue3,typescript,vite
inscode资源如下:

⭐结束

本文分享到这结束,如有错误或者不足之处欢迎指出!
csdn新星计划vue3+ts+antd赛道——利用inscode搭建vue3(ts)+antd前端模板,web站点,vue专栏,inscode,前端,vue3,typescript,vite

👍 点赞,是我创作的动力!
⭐️ 收藏,是我努力的方向!
✏️ 评论,是我进步的财富!
💖 感谢你的阅读!文章来源地址https://www.toymoban.com/news/detail-576487.html

到了这里,关于csdn新星计划vue3+ts+antd赛道——利用inscode搭建vue3(ts)+antd前端模板的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 新星计划 Electron+vue2 桌面应用 2 项目编写

    练手的项目,需求简单,打算做平面设计社交类的软件。 练手用,简单处理,写个简单的记事本,本地保存txt,能导出为其他格式的文件。 获取用户的网卡地址用于数据加密,本地保存加密后的文件,导出为明文数据。 可以选择系统样式、自定义日志路径,可见软件信息(版

    2024年02月06日
    浏览(39)
  • 新星计划 Electron+vue2 桌面应用 2 搭建及运行

    基础内容:新星计划 Electron+vue2 桌面应用 1 基础_lsswear的博客-CSDN博客 根据使用过的经验和官网的描述,大概可以有四种方式: 自己创建项目(仅使用npm) 用Electron脚手架 HBuilder编译为web,再用Electron编译 vue脚手架,安装Electron,再编译 这次挨个试下,看哪个方便。第三种试

    2024年02月06日
    浏览(46)
  • CSDN的InsCode上线了!!!热乎的测评~

    CSDN AI写作助手上线了!InsCode AI 创作助手不仅能够帮助用户高效创作文章,而且能够作为对话式AI回答你想知道的问题。成倍提高生产力!欢迎大家使用新功能后分享自己的使用心得与建议! 当然会使用了,notion AI,novel AI,ChatGPT等等。当然,我们的InsCode上线后,更是迫不及

    2024年02月07日
    浏览(45)
  • Vue3 Antd 父子嵌套子表格

    父子嵌套子表格 目标1:可以点击多个父节点表格,正确显示子表格数据 目标2:父表格数据刷新重载,解决子表格数据不刷新问题 官方示例代码,以及效果 https://www.antdv.com/components/table-cn#components-table-demo-nested-table 可以看到官方示例十分简单,使用了 template #expandedRowRender

    2024年02月01日
    浏览(30)
  • CSDN_InsCode自带的Stable Diffusion环境

    就在我们的主页左上角可以看到【InsCode】直接点击进入即可。 InsCode - 让你的灵感立刻落地 可以直接点击我上面给的路径,或者在服务主页中点开也行。具体位置在下面。 这里由于我们是测试,买个便宜的就行。 我为了给大家演示的快一些买了个最贵的。 等两分钟后点击启

    2024年02月03日
    浏览(36)
  • 用CSDN训练的InsCode AI创作博文:数据治理体系建设

            想不想用AI帮我们写方案?         想尝试用CSDN提供的InsCode AI创作助手协助我们进行技术方案的创作 ,看看效果如何,能不能辅助我们日常的方案编写与创作? 以前用ChatGPT也尝试过,但对于专业性更强的内容,还有表现的有些力不从心,这次看看InsCode AI训练的怎

    2024年02月03日
    浏览(43)
  • 【新星计划】Hadoop入门介绍

      目录 一、 大数据概述 1.1 大数据是什么 1.2 大数据的特点 1.3大数据的应用场景 1.4 大数据生态圈 1.5 开发工具补充: 二、 Hadoop介绍 2.1 Hadoop是什么  2.2 Hadoop的背景 2.3 Hadoop就业前景         大数据 是指无法在一定时间内用常规软件工具对其内容进行抓取、 管理 和处理

    2024年02月12日
    浏览(35)
  • 【新星计划Linux】——常用命令(1)

    作者简介:一名云计算网络运维人员、每天分享网络与运维的技术与干货。   座右铭:低头赶路,敬事如仪 个人主页:网络豆的主页​​​​​ 目录   前言 一.常用命令 1.Linux的基本原则:  用户接口: 2.命令形式 3.命令举例:ls ls -l:长格式 4.文件系统 查看服务器基本信

    2024年02月16日
    浏览(42)
  • 【新星计划·2023】Linux目录结构

    作者: Insist-- 个人主页: insist--个人主页 作者会持续更新网络知识和python基础知识,期待你的关注 前言 本文将讲解Linux目录结构与功能,以及目录解释,最近这段时间会持续更新关于Linux的基础知识,期待你的关注。 目录 一、Linux目录结构和功能 1、目录结构 2、功能 二、

    2024年02月10日
    浏览(42)
  • vue3+antd——实现App.vue页面实时获取权限+用户信息的功能——基础积累

    之前写过一篇文章关于vue3+antd的框架模板,链接如下:http://t.csdn.cn/9dZMS 下面针对 App.vue 页面实时获取权限+用户信息的功能做一下记录 重要的代码如下: 通过 computed 计算属性进行用户信息的实时监听,用户信息更改时也会重新触发user参数的变化,最终导致user内容保持为最

    2024年02月14日
    浏览(37)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包