当前位置:   article > 正文

vue搭建前端框架_vue搭建前端框架 静态页面

vue搭建前端框架 静态页面

1.创建一个vue项目

 

 

 

 

2.修改package.json

  1. {
  2. "name": "jt",
  3. "version": "3.8.4",
  4. "description": "购物管理系统",
  5. "author": "my",
  6. "license": "MIT",
  7. "scripts": {
  8. "dev": "vue-cli-service serve",
  9. "build:prod": "vue-cli-service build",
  10. "build:stage": "vue-cli-service buuild --mode staging",
  11. "preview": "node build/index.js --preview",
  12. "lint": "eslint --ext .js,.vue src",
  13. "dev_t": "set NODE_OPTIONS=\"--openssl-legacy-provider\" & npm run dev\n"
  14. },
  15. "husky": {
  16. "hooks": {
  17. "pre-commit": "lint-staged"
  18. }
  19. },
  20. "lint-staged": {
  21. "src/**/*.{js.vue}": [
  22. "eslint --fix",
  23. "git add"
  24. ]
  25. },
  26. "keywords": [
  27. "vue",
  28. "admin",
  29. "dashboard",
  30. "element-ui",
  31. "boilerplate",
  32. "admin-template",
  33. "management-system"
  34. ],
  35. "dependencies": {
  36. "@riophae/vue-treeselect": "0.4.0",
  37. "axios": "0.24.0",
  38. "clipboard": "2.0.8",
  39. "core-js": "3.25.2",
  40. "echarts": "4.9.0",
  41. "element-ui": "2.15.10",
  42. "file-saver": "2.0.5",
  43. "fuse.js": "6.4.3",
  44. "highlight.js": "9.18.5",
  45. "js-beautify": "1.13.0",
  46. "js-cookie": "3.0.1",
  47. "jsencrypt": "3.0.0-rc.1",
  48. "nprogress": "0.2.0",
  49. "quill": "1.3.7",
  50. "screenfull": "5.0.2",
  51. "sortablejs": "1.10.2",
  52. "vue": "2.6.12",
  53. "vue-count-to": "1.0.13",
  54. "vue-cropper": "0.5.5",
  55. "vue-meta": "2.4.0",
  56. "vue-router": "3.4.9",
  57. "vuedraggable": "2.24.3",
  58. "vuex": "3.6.0"
  59. },
  60. "devDependencies": {
  61. "@vue/cli-plugin-babel": "4.4.6",
  62. "@vue/cli-plugin-eslint": "4.4.6",
  63. "@vue/cli-service": "4.4.6",
  64. "babel-eslint": "10.1.0",
  65. "babel-plugin-dynamic-import-node": "2.3.3",
  66. "chalk": "4.1.0",
  67. "compression-webpack-plugin": "5.0.2",
  68. "connect": "3.6.6",
  69. "eslint": "7.15.0",
  70. "eslint-plugin-vue": "7.2.0",
  71. "lint-staged": "10.5.3",
  72. "runjs": "4.4.2",
  73. "sass": "1.32.13",
  74. "sass-loader": "10.1.1",
  75. "script-ext-html-webpack-plugin": "2.1.5",
  76. "svg-sprite-loader": "5.1.1",
  77. "vue-template-compiler": "2.6.12"
  78. },
  79. "engines": {
  80. "node": ">=8.9",
  81. "npm": ">=3.0.0"
  82. },
  83. "browserslist": [
  84. "> 1%",
  85. "last 2 versions"
  86. ]
  87. }

3.修改vue.config.js

  1. 'use strict'
  2. const path = require('path')
  3. function resolve(dir) {
  4. return path.join(__dirname, dir)
  5. }
  6. const CompressionPlugin = require('compression-webpack-plugin')
  7. const name = process.env.VUE_APP_TITLE || "购物管理系统" //网页标题
  8. const port = process.env.port || process.env.npm_config_port || 80 //端口
  9. // vue.config.js 配置说明
  10. //官方vue.config.js 参考文档 https://cli.vuejs.org/zh/config/#css-loaderoptions
  11. // 这里只列一部分,具体配置参考文档
  12. module.exports = {
  13. // 部署生产环境和开发环境下的URL。
  14. // 默认情况下,Vue CLI 会假设你的应用是被部署在一个域名的根路径上
  15. // 例如 https://www.ruoyi.vip/。如果应用被部署在一个子路径上,你就需要用这个选项指定这个子路径。例如,如果你的应用被部署在 https://www.ruoyi.vip/admin/,则设置 baseUrl 为 /admin/。
  16. publicPath: process.env.NODE_ENV === "production" ? "/" : "/",
  17. // 在npm run build 或 yarn build 时 ,生成文件的目录名称(要和baseUrl的生产环境路径一致)(默认dist)
  18. outputDir: 'dist',
  19. // 用于放置生成的静态资源 (js、css、img、fonts) 的;(项目打包之后,静态资源会放在这个文件夹下)
  20. assetsDir: 'static',
  21. // 是否开启eslint保存检测,有效值:ture | false | 'error'
  22. lintOnSave: process.env.NODE_ENV === 'development',
  23. // 如果你不需要生产环境的 source map,可以将其设置为 false 以加速生产环境构建。
  24. productionSourceMap: false,
  25. // webpack-dev-server 相关配置
  26. devServer: {
  27. host: '0.0.0.0',
  28. port: port,
  29. open: true,
  30. proxy: {
  31. // detail: https://cli.vuejs.org/config/#devserver-proxy
  32. [process.env.VUE_APP_BASE_API]: {
  33. target: `http://localhost:9000`,
  34. changeOrigin: true,
  35. pathRewrite: {
  36. ['^' + process.env.VUE_APP_BASE_API]: ''
  37. }
  38. }
  39. },
  40. disableHostCheck: true
  41. },
  42. css: {
  43. loaderOptions: {
  44. sass: {
  45. sassOptions: { outputStyle: "expanded" }
  46. }
  47. }
  48. },
  49. configureWebpack: {
  50. name: name,
  51. resolve: {
  52. alias: {
  53. '@': resolve('src')
  54. }
  55. },
  56. plugins: [
  57. // http://doc.ruoyi.vip/ruoyi-vue/other/faq.html#使用gzip解压缩静态文件
  58. new CompressionPlugin({
  59. cache: false, // 不启用文件缓存
  60. test: /\.(js|css|html)?$/i, // 压缩文件格式
  61. filename: '[path].gz[query]', // 压缩后的文件名
  62. algorithm: 'gzip', // 使用gzip压缩
  63. minRatio: 0.8 // 压缩率小于1才会压缩
  64. })
  65. ],
  66. },
  67. chainWebpack(config) {
  68. config.plugins.delete('preload') // TODO: need test
  69. config.plugins.delete('prefetch') // TODO: need test
  70. // set svg-sprite-loader
  71. config.module
  72. .rule('svg')
  73. .exclude.add(resolve('src/assets/icons'))
  74. .end()
  75. config.module
  76. .rule('icons')
  77. .test(/\.svg$/)
  78. .include.add(resolve('src/assets/icons'))
  79. .end()
  80. .use('svg-sprite-loader')
  81. .loader('svg-sprite-loader')
  82. .options({
  83. symbolId: 'icon-[name]'
  84. })
  85. .end()
  86. config
  87. .when(process.env.NODE_ENV !== 'development',
  88. config => {
  89. config
  90. .plugin('ScriptExtHtmlWebpackPlugin')
  91. .after('html')
  92. .use('script-ext-html-webpack-plugin', [{
  93. // `runtime` must same as runtimeChunk name. default is `runtime`
  94. inline: /runtime\..*\.js$/
  95. }])
  96. .end()
  97. config
  98. .optimization.splitChunks({
  99. chunks: 'all',
  100. cacheGroups: {
  101. libs: {
  102. name: 'chunk-libs',
  103. test: /[\\/]node_modules[\\/]/,
  104. priority: 10,
  105. chunks: 'initial' // only package third parties that are initially dependent
  106. },
  107. elementUI: {
  108. name: 'chunk-elementUI', // split elementUI into a single package
  109. priority: 20, // the weight needs to be larger than libs and app or it will be packaged into libs or app
  110. test: /[\\/]node_modules[\\/]_?element-ui(.*)/ // in order to adapt to cnpm
  111. },
  112. commons: {
  113. name: 'chunk-commons',
  114. test: resolve('src/components'), // can customize your rules
  115. minChunks: 3, // minimum common number
  116. priority: 5,
  117. reuseExistingChunk: true
  118. }
  119. }
  120. })
  121. config.optimization.runtimeChunk('single'),
  122. {
  123. from: path.resolve(__dirname, './public/robots.txt'), //防爬虫文件
  124. to: './' //到根目录下
  125. }
  126. }
  127. )
  128. }
  129. }

4.修改.eslintrc.js babel.config.js和删除.browserslistrc

.eslintrc.js

  1. // ESlint 检查配置
  2. module.exports = {
  3. root: true,
  4. parserOptions: {
  5. parser: 'babel-eslint',
  6. sourceType: 'module'
  7. },
  8. env: {
  9. browser: true,
  10. node: true,
  11. es6: true,
  12. },
  13. extends: ['plugin:vue/recommended', 'eslint:recommended'],
  14. // add your custom rules here
  15. //it is base on https://github.com/vuejs/eslint-config-vue
  16. rules: {
  17. "vue/max-attributes-per-line": [2, {
  18. "singleline": 10,
  19. "multiline": {
  20. "max": 1,
  21. "allowFirstLine": false
  22. }
  23. }],
  24. "vue/singleline-html-element-content-newline": "off",
  25. "vue/multiline-html-element-content-newline":"off",
  26. "vue/name-property-casing": ["error", "PascalCase"],
  27. "vue/no-v-html": "off",
  28. 'accessor-pairs': 2,
  29. 'arrow-spacing': [2, {
  30. 'before': true,
  31. 'after': true
  32. }],
  33. 'block-spacing': [2, 'always'],
  34. 'brace-style': [2, '1tbs', {
  35. 'allowSingleLine': true
  36. }],
  37. 'camelcase': [0, {
  38. 'properties': 'always'
  39. }],
  40. 'comma-dangle': [2, 'never'],
  41. 'comma-spacing': [2, {
  42. 'before': false,
  43. 'after': true
  44. }],
  45. 'comma-style': [2, 'last'],
  46. 'constructor-super': 2,
  47. 'curly': [2, 'multi-line'],
  48. 'dot-location': [2, 'property'],
  49. 'eol-last': 2,
  50. 'eqeqeq': ["error", "always", {"null": "ignore"}],
  51. 'generator-star-spacing': [2, {
  52. 'before': true,
  53. 'after': true
  54. }],
  55. 'handle-callback-err': [2, '^(err|error)$'],
  56. 'indent': [2, 2, {
  57. 'SwitchCase': 1
  58. }],
  59. 'jsx-quotes': [2, 'prefer-single'],
  60. 'key-spacing': [2, {
  61. 'beforeColon': false,
  62. 'afterColon': true
  63. }],
  64. 'keyword-spacing': [2, {
  65. 'before': true,
  66. 'after': true
  67. }],
  68. 'new-cap': [2, {
  69. 'newIsCap': true,
  70. 'capIsNew': false
  71. }],
  72. 'new-parens': 2,
  73. 'no-array-constructor': 2,
  74. 'no-caller': 2,
  75. 'no-console': 'off',
  76. 'no-class-assign': 2,
  77. 'no-cond-assign': 2,
  78. 'no-const-assign': 2,
  79. 'no-control-regex': 0,
  80. 'no-delete-var': 2,
  81. 'no-dupe-args': 2,
  82. 'no-dupe-class-members': 2,
  83. 'no-dupe-keys': 2,
  84. 'no-duplicate-case': 2,
  85. 'no-empty-character-class': 2,
  86. 'no-empty-pattern': 2,
  87. 'no-eval': 2,
  88. 'no-ex-assign': 2,
  89. 'no-extend-native': 2,
  90. 'no-extra-bind': 2,
  91. 'no-extra-boolean-cast': 2,
  92. 'no-extra-parens': [2, 'functions'],
  93. 'no-fallthrough': 2,
  94. 'no-floating-decimal': 2,
  95. 'no-func-assign': 2,
  96. 'no-implied-eval': 2,
  97. 'no-inner-declarations': [2, 'functions'],
  98. 'no-invalid-regexp': 2,
  99. 'no-irregular-whitespace': 2,
  100. 'no-iterator': 2,
  101. 'no-label-var': 2,
  102. 'no-labels': [2, {
  103. 'allowLoop': false,
  104. 'allowSwitch': false
  105. }],
  106. 'no-lone-blocks': 2,
  107. 'no-mixed-spaces-and-tabs': 2,
  108. 'no-multi-spaces': 2,
  109. 'no-multi-str': 2,
  110. 'no-multiple-empty-lines': [2, {
  111. 'max': 1
  112. }],
  113. 'no-native-reassign': 2,
  114. 'no-negated-in-lhs': 2,
  115. 'no-new-object': 2,
  116. 'no-new-require': 2,
  117. 'no-new-symbol': 2,
  118. 'no-new-wrappers': 2,
  119. 'no-obj-calls': 2,
  120. 'no-octal': 2,
  121. 'no-octal-escape': 2,
  122. 'no-path-concat': 2,
  123. 'no-proto': 2,
  124. 'no-redeclare': 2,
  125. 'no-regex-spaces': 2,
  126. 'no-return-assign': [2, 'except-parens'],
  127. 'no-self-assign': 2,
  128. 'no-self-compare': 2,
  129. 'no-sequences': 2,
  130. 'no-shadow-restricted-names': 2,
  131. 'no-spaced-func': 2,
  132. 'no-sparse-arrays': 2,
  133. 'no-this-before-super': 2,
  134. 'no-throw-literal': 2,
  135. 'no-trailing-spaces': 2,
  136. 'no-undef': 2,
  137. 'no-undef-init': 2,
  138. 'no-unexpected-multiline': 2,
  139. 'no-unmodified-loop-condition': 2,
  140. 'no-unneeded-ternary': [2, {
  141. 'defaultAssignment': false
  142. }],
  143. 'no-unreachable': 2,
  144. 'no-unsafe-finally': 2,
  145. 'no-unused-vars': [2, {
  146. 'vars': 'all',
  147. 'args': 'none'
  148. }],
  149. 'no-useless-call': 2,
  150. 'no-useless-computed-key': 2,
  151. 'no-useless-constructor': 2,
  152. 'no-useless-escape': 0,
  153. 'no-whitespace-before-property': 2,
  154. 'no-with': 2,
  155. 'one-var': [2, {
  156. 'initialized': 'never'
  157. }],
  158. 'operator-linebreak': [2, 'after', {
  159. 'overrides': {
  160. '?': 'before',
  161. ':': 'before'
  162. }
  163. }],
  164. 'padded-blocks': [2, 'never'],
  165. 'quotes': [2, 'single', {
  166. 'avoidEscape': true,
  167. 'allowTemplateLiterals': true
  168. }],
  169. 'semi': [2, 'never'],
  170. 'semi-spacing': [2, {
  171. 'before': false,
  172. 'after': true
  173. }],
  174. 'space-before-blocks': [2, 'always'],
  175. 'space-before-function-paren': [2, 'never'],
  176. 'space-in-parens': [2, 'never'],
  177. 'space-infix-ops': 2,
  178. 'space-unary-ops': [2, {
  179. 'words': true,
  180. 'nonwords': false
  181. }],
  182. 'spaced-comment': [2, 'always', {
  183. 'markers': ['global', 'globals', 'eslint', 'eslint-disable', '*package', '!', ',']
  184. }],
  185. 'template-curly-spacing': [2, 'never'],
  186. 'use-isnan': 2,
  187. 'valid-typeof': 2,
  188. 'wrap-iife': [2, 'any'],
  189. 'yield-star-spacing': [2, 'both'],
  190. 'yoda': [2, 'never'],
  191. 'prefer-const': 2,
  192. 'no-debugger': process.env.NODE_ENV === 'production' ? 2 : 0,
  193. 'object-curly-spacing': [2, 'always', {
  194. objectsInObjects: false
  195. }],
  196. 'array-bracket-spacing': [2, 'never']
  197. }
  198. }

babel.config.js

  1. module.exports = {
  2. presets: [
  3. // https://github.com/vuejs/vue-cli/tree/master/packages/@vue/babel-preset-app
  4. '@vue/cli-plugin-babel/preset'
  5. ],
  6. 'env': {
  7. 'development': {
  8. // babel-plugin-dynamic-import-node plugin only does one thing by converting all import() to require().
  9. // This plugin can significantly increase the speed of hot updates, when you have a large number of pages.
  10. 'plugins': ['dynamic-import-node']
  11. }
  12. }
  13. }

5.添加环境配置文件 .editorconfig/ .env.development/ .env.production/.env.staging/.eslintignore

.editorconfig

  1. # 告诉EditorConfig插件,这是根文件,不用继续往上查找
  2. root = true
  3. # 匹配全部文件
  4. [*]
  5. # 设置字符集
  6. charset = utf-8
  7. # 缩进风格,可选space、tab
  8. indent_style = space
  9. # 缩进的空格数
  10. indent_size = 2
  11. # 结尾换行符,可选lf、cr、crlf
  12. end_of_line = lf
  13. # 在文件结尾插入新行
  14. insert_final_newline = true
  15. # 删除一行中的前后空格
  16. trim_trailing_whitespace = true
  17. # 匹配md结尾的文件
  18. [*.md]
  19. insert_final_newline = false
  20. trim_trailing_whitespace = false

.env.development

  1. # 页面标题
  2. VUE_APP_TITLE = 购物管理系统
  3. # 开发环境配置
  4. ENV = 'development'
  5. # 购物管理系统/开发环境
  6. VUE_APP_BASE_API = '/dev-api'
  7. # 路由懒加载
  8. VUE_CLI_BABEL_TRANSPILE_MODULES = true

.env.production

  1. # 页面标题
  2. VUE_APP_TITLE = 购物管理系统
  3. # 生产环境配置
  4. ENV = 'production'
  5. # 购物管理系统/生产环境
  6. VUE_APP_BASE_API = '/prod-api'

.env.staging

  1. # 页面标题
  2. VUE_APP_TITLE = 购物管理系统
  3. NODE_ENV = production
  4. # 测试环境配置
  5. ENV = 'staging'
  6. # 购物管理系统/测试环境
  7. VUE_APP_BASE_API = '/stage-api'

.eslintignore

  1. # 忽略build目录下类型为js的文件的语法检查
  2. build/*.js
  3. # 忽略src/assets目录下文件的语法检查
  4. src/assets
  5. # 忽略public目录下文件的语法检查
  6. public
  7. # 忽略当前目录下为js的文件的语法检查
  8. *.js
  9. # 忽略当前目录下为vue的文件的语法检查
  10. *.vue

6.添加打包文件

build.bat

  1. @echo off
  2. echo.
  3. echo [信息] 打包Web工程,生成dist文件。
  4. echo.
  5. %~d0
  6. cd %~dp0
  7. cd ..
  8. npm run build:prod
  9. pause

package.bat

  1. @echo off
  2. echo.
  3. echo [信息] 安装Web工程,生成node_modules文件。
  4. echo.
  5. %~d0
  6. cd %~dp0
  7. cd ..
  8. npm install --registry=https://registry.npmmirror.com
  9. pause

run-web.bat

  1. @echo off
  2. echo.
  3. echo [信息] 使用 Vue CLI 命令运行 Web 工程。
  4. echo.
  5. %~d0
  6. cd %~dp0
  7. cd ..
  8. npm run dev
  9. pause

index.js 

  1. const { run } = require('runjs')
  2. const chalk = require('chalk')
  3. const config = require('../vue.config.js')
  4. const rawArgv = process.argv.slice(2)
  5. const args = rawArgv.join(' ')
  6. if (process.env.npm_config_preview || rawArgv.includes('--preview')) {
  7. const report = rawArgv.includes('--report')
  8. run(`vue-cli-service build ${args}`)
  9. const port = 9526
  10. const publicPath = config.publicPath
  11. var connect = require('connect')
  12. var serveStatic = require('serve-static')
  13. const app = connect()
  14. app.use(
  15. publicPath,
  16. serveStatic('./dist', {
  17. index: ['index.html', '/']
  18. })
  19. )
  20. app.listen(port, function () {
  21. console.log(chalk.green(`> Preview at http://localhost:${port}${publicPath}`))
  22. if (report) {
  23. console.log(chalk.green(`> Report at http://localhost:${port}${publicPath}report.html`))
  24. }
  25. })
  26. } else {
  27. run(`vue-cli-service build ${args}`)
  28. }

7.添加public文件下浏览器页面

ie.html

  1. <!DOCTYPE html>
  2. <html lang="zh-CN">
  3. <head>
  4. <meta charset="UTF-8" />
  5. <title>请升级您的浏览器</title>
  6. <meta http-equiv="X-UA-Compatible" content="IE=Edge,chrome=1" >
  7. <meta name="renderer" content="webkit">
  8. <base target="_blank" />
  9. <style type="text/css">
  10. html,body,div,span,applet,object,iframe,h1,h2,h3,h4,h5,h6,p,blockquote,pre,a,abbr,acronym,address,big,cite,code,del,dfn,em,img,ins,kbd,q,s,samp,small,strike,strong,sub,sup,tt,var,b,u,i,center,dl,dt,dd,ol,ul,li,fieldset,form,label,legend,table,caption,tbody,tfoot,thead,tr,th,td,article,aside,canvas,details,embed,figure,figcaption,footer,header,hgroup,menu,nav,output,ruby,section,summary,time,mark,audio,video{border:0;font-size:100%;font:inherit;vertical-align:baseline;margin:0;padding:0}article,aside,details,figcaption,figure,footer,header,hgroup,menu,nav,section{display:block}body{line-height:1}ol,ul{list-style:none}blockquote,q{quotes:none}blockquote:before,blockquote:after,q:before,q:after{content:none}table{border-collapse:collapse;border-spacing:0}
  11. a{text-decoration:none;color:#0072c6;}a:hover{text-decoration:none;color:#004d8c;}
  12. body{width:960px;margin:0 auto;padding:10px;font-size:14px;line-height:24px;color:#454545;font-family:'Microsoft YaHei UI','Microsoft YaHei',DengXian,SimSun,'Segoe UI',Tahoma,Helvetica,sans-serif;overflow-y:scroll}
  13. h1{font-size:40px;line-height:80px;font-weight:100;margin-bottom:10px;}
  14. h2{font-size:20px;line-height:25px;font-weight:100;margin:10px 0;}
  15. em{color:red}
  16. p{margin-bottom:10px;}
  17. hr{margin:20px 0;border:0;border-top:1px solid #dadada}
  18. span{display:block;font-size:12px;line-height:12px;}
  19. .clean{clear:both;}
  20. .browser{padding:10px 10px;}
  21. .browser li{width:auto;padding:0 80px;margin-top:30px;height:34px;line-height:22px;float:left;list-style:none;background:url(data:image/png;base64,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) no-repeat;padding-left:40px}
  22. .browser .browser-firefox{background-position:0 -34px}
  23. .browser .browser-ie{background-position:0 -68px;margin-left:0px}
  24. .browser .browser-360{background-position:0 -170px;margin-left: -27px}
  25. </style>
  26. </head>
  27. <body style="margin-top:50px">
  28. <h1>请升级您的浏览器,以便我们更好的为您提供服务!</h1>
  29. <p>您正在使用 Internet Explorer 的早期版本(IE11以下版本或使用该内核的浏览器)。这意味着在升级浏览器前,您将无法访问此网站。</p>
  30. <hr>
  31. <h2>请注意:微软公司对Windows XP 及 Internet Explorer 早期版本的支持已经结束</h2>
  32. <p>自 2016 年 1 月 12 日起,Microsoft 不再为 IE 11 以下版本提供相应支持和更新。没有关键的浏览器安全更新,您的电脑可能易受有害病毒、间谍软件和其他恶意软件的攻击,它们可以窃取或损害您的业务数据和信息。请参阅 <a href="https://www.microsoft.com/zh-cn/WindowsForBusiness/End-of-IE-support">微软对 Internet Explorer 早期版本的支持将于 2016 年 1 月 12 日结束的说明</a></p>
  33. <hr>
  34. <h2>您可以选择更先进的浏览器</h2>
  35. <p>推荐使用以下浏览器的最新版本。如果您的电脑已有以下浏览器的最新版本则直接使用该浏览器访问即可。</p>
  36. <ul class="browser">
  37. <li class="browser-chrome"><a href="https://www.google.cn/chrome/browser/desktop/index.html?hl=zh-CN&standalone=1"> 谷歌浏览器<span>Google Chrome</span></a></li>
  38. <li class="browser-firefox"><a href="https://www.mozilla.org/zh-CN/firefox/new/"> 火狐浏览器<span>Mozilla Firefox</span></a></li>
  39. <li class="browser-ie"><a href="https://windows.microsoft.com/zh-cn/internet-explorer/download-ie"> IE 11 浏览器<span>Internet Explorer</span></a></li>
  40. <li class="browser-360"><a href="http://se.360.cn/"> 360安全浏览器<span>360 Chrome</span></a></li>
  41. <div class="clean"></div>
  42. </ul>
  43. <hr>
  44. </body>
  45. </html>

index.html

  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <meta charset="utf-8">
  5. <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
  6. <meta name="renderer" content="webkit">
  7. <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no">
  8. <link rel="icon" href="<%= BASE_URL %>favicon.ico">
  9. <title><%= webpackConfig.name %></title>
  10. <!--[if lt IE 11]><script>window.location.href='/html/ie.html';</script><![endif]-->
  11. <style>
  12. html,
  13. body,
  14. #app {
  15. height: 100%;
  16. margin: 0px;
  17. padding: 0px;
  18. }
  19. .chromeframe {
  20. margin: 0.2em 0;
  21. background: #ccc;
  22. color: #000;
  23. padding: 0.2em 0;
  24. }
  25. #loader-wrapper {
  26. position: fixed;
  27. top: 0;
  28. left: 0;
  29. width: 100%;
  30. height: 100%;
  31. z-index: 999999;
  32. }
  33. #loader {
  34. display: block;
  35. position: relative;
  36. left: 50%;
  37. top: 50%;
  38. width: 150px;
  39. height: 150px;
  40. margin: -75px 0 0 -75px;
  41. border-radius: 50%;
  42. border: 3px solid transparent;
  43. border-top-color: #FFF;
  44. -webkit-animation: spin 2s linear infinite;
  45. -ms-animation: spin 2s linear infinite;
  46. -moz-animation: spin 2s linear infinite;
  47. -o-animation: spin 2s linear infinite;
  48. animation: spin 2s linear infinite;
  49. z-index: 1001;
  50. }
  51. #loader:before {
  52. content: "";
  53. position: absolute;
  54. top: 5px;
  55. left: 5px;
  56. right: 5px;
  57. bottom: 5px;
  58. border-radius: 50%;
  59. border: 3px solid transparent;
  60. border-top-color: #FFF;
  61. -webkit-animation: spin 3s linear infinite;
  62. -moz-animation: spin 3s linear infinite;
  63. -o-animation: spin 3s linear infinite;
  64. -ms-animation: spin 3s linear infinite;
  65. animation: spin 3s linear infinite;
  66. }
  67. #loader:after {
  68. content: "";
  69. position: absolute;
  70. top: 15px;
  71. left: 15px;
  72. right: 15px;
  73. bottom: 15px;
  74. border-radius: 50%;
  75. border: 3px solid transparent;
  76. border-top-color: #FFF;
  77. -moz-animation: spin 1.5s linear infinite;
  78. -o-animation: spin 1.5s linear infinite;
  79. -ms-animation: spin 1.5s linear infinite;
  80. -webkit-animation: spin 1.5s linear infinite;
  81. animation: spin 1.5s linear infinite;
  82. }
  83. @-webkit-keyframes spin {
  84. 0% {
  85. -webkit-transform: rotate(0deg);
  86. -ms-transform: rotate(0deg);
  87. transform: rotate(0deg);
  88. }
  89. 100% {
  90. -webkit-transform: rotate(360deg);
  91. -ms-transform: rotate(360deg);
  92. transform: rotate(360deg);
  93. }
  94. }
  95. @keyframes spin {
  96. 0% {
  97. -webkit-transform: rotate(0deg);
  98. -ms-transform: rotate(0deg);
  99. transform: rotate(0deg);
  100. }
  101. 100% {
  102. -webkit-transform: rotate(360deg);
  103. -ms-transform: rotate(360deg);
  104. transform: rotate(360deg);
  105. }
  106. }
  107. #loader-wrapper .loader-section {
  108. position: fixed;
  109. top: 0;
  110. width: 51%;
  111. height: 100%;
  112. background: #7171C6;
  113. z-index: 1000;
  114. -webkit-transform: translateX(0);
  115. -ms-transform: translateX(0);
  116. transform: translateX(0);
  117. }
  118. #loader-wrapper .loader-section.section-left {
  119. left: 0;
  120. }
  121. #loader-wrapper .loader-section.section-right {
  122. right: 0;
  123. }
  124. .loaded #loader-wrapper .loader-section.section-left {
  125. -webkit-transform: translateX(-100%);
  126. -ms-transform: translateX(-100%);
  127. transform: translateX(-100%);
  128. -webkit-transition: all 0.7s 0.3s cubic-bezier(0.645, 0.045, 0.355, 1.000);
  129. transition: all 0.7s 0.3s cubic-bezier(0.645, 0.045, 0.355, 1.000);
  130. }
  131. .loaded #loader-wrapper .loader-section.section-right {
  132. -webkit-transform: translateX(100%);
  133. -ms-transform: translateX(100%);
  134. transform: translateX(100%);
  135. -webkit-transition: all 0.7s 0.3s cubic-bezier(0.645, 0.045, 0.355, 1.000);
  136. transition: all 0.7s 0.3s cubic-bezier(0.645, 0.045, 0.355, 1.000);
  137. }
  138. .loaded #loader {
  139. opacity: 0;
  140. -webkit-transition: all 0.3s ease-out;
  141. transition: all 0.3s ease-out;
  142. }
  143. .loaded #loader-wrapper {
  144. visibility: hidden;
  145. -webkit-transform: translateY(-100%);
  146. -ms-transform: translateY(-100%);
  147. transform: translateY(-100%);
  148. -webkit-transition: all 0.3s 1s ease-out;
  149. transition: all 0.3s 1s ease-out;
  150. }
  151. .no-js #loader-wrapper {
  152. display: none;
  153. }
  154. .no-js h1 {
  155. color: #222222;
  156. }
  157. #loader-wrapper .load_title {
  158. font-family: 'Open Sans';
  159. color: #FFF;
  160. font-size: 19px;
  161. width: 100%;
  162. text-align: center;
  163. z-index: 9999999999999;
  164. position: absolute;
  165. top: 60%;
  166. opacity: 1;
  167. line-height: 30px;
  168. }
  169. #loader-wrapper .load_title span {
  170. font-weight: normal;
  171. font-style: italic;
  172. font-size: 13px;
  173. color: #FFF;
  174. opacity: 0.5;
  175. }
  176. </style>
  177. </head>
  178. <body>
  179. <div id="app">
  180. <div id="loader-wrapper">
  181. <div id="loader"></div>
  182. <div class="loader-section section-left"></div>
  183. <div class="loader-section section-right"></div>
  184. <div class="load_title">正在加载系统资源,请耐心等待</div>
  185. </div>
  186. </div>
  187. </body>
  188. </html>

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/从前慢现在也慢/article/detail/459632
推荐阅读
相关标签
  

闽ICP备14008679号