vue3+cesium+vuex+vuerouter 登录验证

本文介绍了如何结合vue3、cesium、vuex和vuerouter进行登录验证。通过搭建 Homepage、Header、Login 和 Tiles 等组件,以及配置路由和使用vuex进行状态管理,实现登录验证功能。详细步骤包括组件创建、路由设置和全局守卫的使用。
摘要由CSDN通过智能技术生成

vue3+cesium+vuex+vuerouter 登录验证

1.依赖库

package.json

  "dependencies": {
   
    "cesium": "1.81.0",
    "cesium-locale": "1.0.1",
    "core-js": "^3.6.5",
    "element-plus": "1.0.2-beta.44",
    "hard-source-webpack-plugin": "0.13.1",
    "strip-pragma-loader": "^1.0.0",
    "vue": "^3.0.0",
    "vue-router": "^4.0.0-0",
    "vuex": "^4.0.0-0"
  },

2.vue.config.js

const path = require("path");
const webpack = require("webpack");

const CopyWebpackPlugin = require("copy-webpack-plugin");
const HardSourceWebpackPlugin = require("hard-source-webpack-plugin");
const BundleAnalyzerPlugin =
  require("webpack-bundle-analyzer").BundleAnalyzerPlugin;

const resolve = (dir) => path.resolve(__dirname, dir);
const IS_PROD = ["prod", "production"].includes(process.env.NODE_ENV);

const cesiumSource = "node_modules/cesium/Source";
const cesiumWorkers = "../Build/Cesium/Workers";
const cesiumThirdParty = "../Build/Cesium/ThirdParty";
const cesiumAssets = "../Build/Cesium/Assets";
const cesiumWidgets = "../Build/Cesium/Widgets";

const cesiumResolve = (dir) => path.resolve(cesiumSource, dir);

module.exports = {
   
  configureWebpack: () => {
   
    const plugins = [
      new HardSourceWebpackPlugin(),
      new CopyWebpackPlugin([
        {
    from: cesiumResolve(cesiumWorkers), to: "cesium/Workers" },
      ]),
      new CopyWebpackPlugin([
        {
    from: cesiumResolve(cesiumThirdParty), to: "cesium/ThirdParty" },
      ]),
      new CopyWebpackPlugin([
        {
    from: cesiumResolve(cesiumAssets), to: "cesium/Assets" },
      ]),
      new CopyWebpackPlugin([
        {
    from: cesiumResolve(cesiumWidgets), to: "cesium/Widgets" },
      ]),
      new webpack.DefinePlugin({
   
        // Define relative base path in cesium for loading assets
        CESIUM_BASE_URL: JSON.stringify("./cesium"),
      }),
    ];

    const module = {
   
      unknownContextCritical: false,
      // unknownContextRegExp: /^.\/.*$/,
      unknownContextRegExp: /\/cesium\/Source\/Core\/buildModuleUrl\.js/,
      rules: [
        {
   
          // test: /\.(png|gif|jpg|jpeg|svg|xml|json|czml|glb)$/,
          test: /\.(czml|glb)$/,
          use: ["url-loader"],
        },
        {
   
          // Strip cesium pragmas
          test: /\.js$/,
          enforce: "pre",
          include: resolve(cesiumSource),
          sideEffects: false,
          use: [
            {
   
              loader: "strip-pragma-loader",
              options: {
   
                pragmas: {
   
                  debug: false,
                },
              },
            },
          ],
        },
      ],
    };

    const optimization = {
   
      usedExports: true,
      sideEffects: true,
      splitChunks: {
   
        chunks: "all",
        cacheGroups: {
   
          commons: {
   
            name: "common", // 打包后的文件名
            chunks: "all", //
            minChunks: 2,
            maxInitialRequests: 5,
            minSize: 0,
            priority: 1,
          },
          vendor: {
   
            name(module) {
   
              const packageName = module.context.match(
                /[\\/]node_modules[\\/](.*?)([\\/]|$)/
              )[1];
              return `${
     packageName.replace("@", "")}`;
            },
            test: /[\\/]node_modules[\\/]/,
            priority: 10,
            chunks: "initial",
          },
          cesium: {
   
            name: "cesium",
            test: /[\\/]node_modules[\\/]cesium/,
            priority: 30,
            reuseExistingChunk: true,
          },
        },
      },
    };

    const config = {
   
      plugins,
      module,
    };

    if (IS_PROD) {
   
      config.optimization = optimization;
    }

    return config;
  },
  chainWebpack: (config) => {
   
    config.resolve.symlinks(true);

    // 添加别名
    config.resolve.alias.set("@", resolve("src"));

    if (IS_PROD) {
   
      config.plugins.delete("preload");
      config.plugins.delete("prefetch");

      config.plugin("webpack-report").use(BundleAnalyzerPlugin, 
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值