第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定

一個(gè)vue實(shí)現(xiàn)多頁(yè)面骨架屏vue-skeleton-webpack-plugin插件的使用

標(biāo)簽:
前端工具 Vue.js

vue-skeleton-webpack-plugin这是一个基于 vue 的 webpack 插件,为单页和多页应用生成 skeleton,提升首屏展示体验。

安装

1.在package.json文件引入依赖    "vue-skeleton-webpack-plugin": "^1.1.17"

2.npm install vue-skeleton-webpack-plugin

使用

首先创建一个仅使用骨架屏组件的入口文件:
// src/components/Skeleton/entry-skeleton.js

import Vue from 'vue'
// 创建的骨架屏 Vue 实例
import SkeletonFinanceSubMenuMore from './SkeletonFinanceSubMenuMore'
import SkeletonInvestmentFinanceHome from './SkeletonInvestmentFinanceHome'
import SkeletonWalletHome from './SkeletonWalletHome'

export default new Vue({
  components: {
    SkeletonFinanceSubMenuMore,
    SkeletonInvestmentFinanceHome,
    SkeletonWalletHome
  },
  template: `
        <div>
            <SkeletonInvestmentFinanceHome id="skeleton-investmentfinancehome" style="display:none"/>
            <SkeletonFinanceSubMenuMore id="skeleton-financesubmenu-more" style="display:none"/>
            <SkeletonWalletHome id="skeleton-wallethome" style="display:none"/>
        </div>
    `
})

接下来创建一个用于服务端渲染的 webpack 配置对象,将刚创建的入口文件指定为 entry 依赖入口:
// build/webpack.skeleton.conf.js

'use strict';

const path = require('path')
const merge = require('webpack-merge')
const baseWebpackConfig = require('./webpack.base.conf')
const nodeExternals = require('webpack-node-externals')
const utils = require('./utils')
const config = require('../config')
const isProduction = process.env.NODE_ENV === 'production'
const sourceMapEnabled = isProduction
  ? config.build.productionSourceMap
  : config.dev.cssSourceMap

function resolve(dir) {
  return path.join(__dirname, dir)
}

let skeletonWebpackConfig = merge(baseWebpackConfig, {
  target: 'node',
  devtool: false,
  entry: {
    app: resolve('../src/components/Skeleton/entry-skeleton.js')
  },
  output: Object.assign({}, baseWebpackConfig.output, {
    libraryTarget: 'commonjs2'
  }),
  externals: nodeExternals({
    whitelist: /\.css$/
  }),
  plugins: []
})

// important: enable extract-text-webpack-plugin
skeletonWebpackConfig.module.rules[0].options.loaders = utils.cssLoaders({
  sourceMap: sourceMapEnabled,
  extract: true
}),

module.exports = skeletonWebpackConfig

在 webpack 中引入插件,在多页或单页应用中pro模式下自动插入路由规则
(运行打好的包浏览器输入配置的路由路径即可显示效果)亲测试多页显示需要配置绝对路径
(如 path: '/InvestmentFinance/FinanceSubMenu/more'; path: '/InvestmentFinance/WalletHome')

// build/webpack.prod.conf.js
const SkeletonWebpackPlugin = require('vue-skeleton-webpack-plugin')
plugins: [
// inject skeleton content(DOM & CSS) into HTML
new SkeletonWebpackPlugin({
  webpackConfig: require('./webpack.skeleton.conf'),
  quiet: true,
  minimize: true,
  router: {
    mode: 'history',
    routes: [
      {
        path: '',
        skeletonId: 'skeleton-investmentfinancehome'
      },
      {
        path: '/InvestmentFinance',
        skeletonId: 'skeleton-investmentfinancehome'
      },
      {
        path: '/InvestmentFinance/FinanceSubMenu/more',
        skeletonId: 'skeleton-financesubmenu-more'
      },
      {
        path: '/InvestmentFinance/WalletHome',
        skeletonId: 'skeleton-wallethome'
      }
    ]
  }
})
]

开发模式下开发调试骨架屏

由于 skeleton 的渲染结果在 JS 前端渲染完成后就会被替换,如何在开发时方便的查看呢? 在开发模式中插入 skeleton 对应的路由规则,使多个页面的 skeleton 能像其他路由组件一样被访问,将使开发调试变得更加方便。

//  src/router/Test /index.js

module.exports = {
  path: '/Test',
  component: (resolve) => import('@comp/EmptyTmpl').then(module => resolve(module)),
  children: [
    {
      path: 'SkeletonFinanceSubMenuMore',
      name: 'TestSkeletonFinanceSubMenuMore',
      component: (resolve) => import('@comp/Skeleton/SkeletonFinanceSubMenuMore').then(module => resolve(module)),
      meta: {
        title: 'SkeletonFinanceSubMenuMore'
      }
    },
    {
      path: 'SkeletonInvestmentFinanceHome',
      name: 'TestSkeletonInvestmentFinanceHome',
      component: (resolve) => import('@comp/Skeleton/SkeletonInvestmentFinanceHome').then(module => resolve(module)),
      meta: {
        title: 'SkeletonInvestmentFinanceHome'
      }
    },
    {
      path: 'SkeletonWalletHome',
      name: 'TestSkeletonWalletHome',
      component: (resolve) => import('@comp/Skeleton/SkeletonWalletHome').then(module => resolve(module)),
      meta: {
        title: 'SkeletonWalletHome'
      }
    }
  ]
}

 

//  src/router/index.js

import Vue from 'vue'
import Router from 'vue-router'

Vue.use(Router)

export default new Router({
  mode: 'history',
  routes: [
    {
      path: '/',
      redirect: 'Test'
    },
    {
      path: '*',
      component: (resolve) => import(/* webpackChunkName: 'global-error-page' */'@comp/GlobalErrorPage/GlobalErrorPage').then(module => resolve(module)),
      meta: {
        title: '访问失联',
        subRoot: true,
        closeBtnVisible: true
      }
    },
    // require('./Test/index')
  ],
  scrollBehavior() {
    return {x: 0, y: 0}
  }
})


點(diǎn)擊查看更多內(nèi)容
3人點(diǎn)贊

若覺(jué)得本文不錯(cuò),就分享一下吧!

評(píng)論

作者其他優(yōu)質(zhì)文章

正在加載中
感謝您的支持,我會(huì)繼續(xù)努力的~
掃碼打賞,你說(shuō)多少就多少
贊賞金額會(huì)直接到老師賬戶
支付方式
打開(kāi)微信掃一掃,即可進(jìn)行掃碼打賞哦
今天注冊(cè)有機(jī)會(huì)得

100積分直接送

付費(fèi)專(zhuān)欄免費(fèi)學(xué)

大額優(yōu)惠券免費(fèi)領(lǐng)

立即參與 放棄機(jī)會(huì)
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)

舉報(bào)

0/150
提交
取消