IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> JavaScript知识库 -> webpack5 构建 element-plus、axios、loadsh、echarts -> 正文阅读

[JavaScript知识库]webpack5 构建 element-plus、axios、loadsh、echarts

1:webpack5 构建 element-plus

package.json

  "devDependencies": {
    "unplugin-auto-import": "^0.11.2",
    "unplugin-vue-components": "^0.22.4"
  },
  "dependencies": {
    "element-plus": "^2.2.16",
  },

webpack.base.js

const path = require('path')
const AutoImport = require('unplugin-auto-import/webpack')
const Components = require('unplugin-vue-components/webpack')
const {
	ElementPlusResolver
} = require('unplugin-vue-components/resolvers')


module.exports = {
	entry: {
		main: './src/main.ts'
	},
	output: {
		publicPath: '',
		path: path.resolve(__dirname, '../dist'),
		filename: 'js/[name]_[contenthash:6].js'
	},
	plugins: [
		AutoImport({
			resolvers: [ElementPlusResolver()],
		}),
		Components({
			resolvers: [ElementPlusResolver()],
		}),
	].filter(Boolean)
}

App.vue

<template>
  <div class="app">
    <router-link to="/">首页</router-link>
    <router-link to="/about">关于</router-link>
    <router-view></router-view>
    <div>
      <div>pinia的使用</div>
      <div>appCount - {{ appCount }}</div>
      <div>homeStr - {{ homeStr }}</div>
      <button type="primary" @click="btn">Primary</button>
    </div>
    <div>
      App文件
      <div class="tt">我是ttt</div>
      <Test></Test>
      <el-button type="primary">Primary</el-button>
      <el-button type="success">Success</el-button>
    </div>
  </div>
</template>

<script setup lang="ts">
import { computed } from 'vue'
import Test from './components/Test.vue'

import useStore from '@/store'
const { app, home } = useStore() as any // 拿到 store的数据
const appCount = computed(() => app.count)
const homeStr = computed(() => home.homeStr)
const btn = () => {
  app.addCount(10)
  home.changeHomeStr('我是hh')
}
</script>
<script lang="ts">
export default {
  name: 'App'
}
</script>
<style lang="scss">
html,
body,
#app {
  width: 100%;
  height: 100%;
}
.app {
  width: 100%;
  height: 100%;
  background: #fff;
  overflow: hidden;
}
.tt {
  color: #fff;
  background: yellow;
}
</style>

效果

在这里插入图片描述
在这里插入图片描述

2:webpack5 构建 axios

package.json

  "dependencies": {
    "axios": "^0.27.2"
  },

src / utils / request.ts

import Axios from 'axios'
import { ElMessage } from 'element-plus'

const baseURL = 'https://api.XXX'

const axios = Axios.create({
  baseURL,
  timeout: 10000 // 请求超时 10s
})

// 前置拦截器(发起请求之前的拦截)
axios.interceptors.request.use(
  (response) => {
    return response
  },
  (error) => {
    return Promise.reject(error)
  }
)

// 后置拦截器(获取到响应时的拦截)
axios.interceptors.response.use(
  (response) => {
    return response
  },
  (error) => {
    if (error.response && error.response.data) {
      const code = error.response.status
      const msg = error.response.data.message
      ElMessage.error(`Code: ${code}, Message: ${msg}`)
      console.error('[Axios Error]', error.response)
    } else {
      ElMessage.error(`${error}`)
    }
    return Promise.reject(error)
  }
)

export default axios

App.vue

<template>
  <div class="app">
  </div>
</template>

<script setup lang="ts">
// axios
//   .get('/users/XXX')
//   .then((res) => {
//     console.log('res: ', res)
//   })
</script>
<script lang="ts">
export default {
  name: 'App'
}
</script>
<style lang="scss">
</style>

3:webpack5 构建 loadsh

package.json

  "devDependencies": {
 	"babel-plugin-lodash": "^3.3.4",
    "lodash-webpack-plugin": "^0.11.6"
  },
  "dependencies": {
    "lodash": "^4.17.21"
  },

webapck.base.js


const path = require('path')

const LodashWebpackPlugin = require("lodash-webpack-plugin")


module.exports = {
	entry: {
		main: './src/main.ts'
	},
	output: {
		publicPath: '',
		path: path.resolve(__dirname, '../dist'),
		filename: 'js/[name]_[contenthash:6].js'
	},
	// loader相关配置
	module: {
		rules: [
			{
				test: /\.js$/,
				use: [{
						loader: 'babel-loader',
						options: {
							cacheDirectory: true,
							cacheCompression: false,
							plugins: ["lodash"],
						}
					},
					// 多线程 暂时先关闭
					{
						loader: 'thread-loader',
						options: {
							workers: 3
						}
					}
				],
				exclude: /node_modules/
			},
			{
				test: /\.ts$/,
				loader: 'babel-loader',
				exclude: /node_modules/,
				options: {
					plugins: ["lodash"],
				}
			}
		].filter(Boolean)
	},
	plugins: [
		new LodashWebpackPlugin({
			// 设置Lodash要激活的功能
			collections: true,
			paths: true,
		})
	].filter(Boolean)
}

App.vue

<template>
  <div class="app">
    <router-link to="/">首页</router-link>
    <router-link to="/about">关于</router-link>
    <router-view></router-view>
    <div>
      <div>pinia的使用</div>
      <div>appCount - {{ appCount }}</div>
      <div>homeStr - {{ homeStr }}</div>
      <button type="primary" @click="btn">Primary</button>
    </div>
    <div>
      App文件
      <div class="tt">我是ttt addVal-{{ addVal }}</div>
      <Test></Test>
      <el-button type="primary">Primary</el-button>
      <el-button type="success">Success</el-button>
    </div>
  </div>
</template>

<script setup lang="ts">
import { ref, computed } from 'vue'
import Test from './components/Test.vue'

import useStore from '@/store'
// import axios from './utils/request.ts'
import _ from 'lodash'

const { app, home } = useStore() as any // 拿到 store的数据
const appCount = computed(() => app.count)
const homeStr = computed(() => home.homeStr)
const btn = () => {
  app.addCount(10)
  home.changeHomeStr('我是hh')
}
console.log('add', _.add(22, 44))
let addVal = ref(0)
addVal = _.add(22, 44)

</script>
<script lang="ts">
export default {
  name: 'App'
}
</script>

效果

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

4:webpack5 构建 echarts的使用

package.json

  "dependencies": {
    "echarts": "^5.3.3"
  },

utils / echarts.ts

// @/src/views/statistic/utils/echart.js
import * as echarts from 'echarts/lib/echarts'
import 'echarts/lib/chart/line'
import 'echarts/lib/chart/bar'
import 'echarts/lib/chart/pie'
import 'echarts/lib/component/grid'
import 'echarts/lib/component/legend'
import 'echarts/lib/component/title'
import 'echarts/lib/component/tooltip'

export default echarts

App.vue

<template>
  <div class="app">
      <div id="char" style="width: 600px; height: 600px"></div>
  </div>
</template>

<script setup lang="ts">
import { ref, computed, onMounted } from 'vue'
import echarts from '@/utils/echarts.ts'
onMounted(() => {
  const charEle = document.getElementById('char') as HTMLElement
  console.log()
  const charEch: echarts.ECharts = echarts.init(charEle)
  const option: echarts.EChartsOption = {
    xAxis: {
      type: 'category',
      data: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun']
    },
    yAxis: {
      type: 'value'
    },
    series: [
      {
        data: [150, 230, 224, 218, 135, 147, 260],
        type: 'line'
      }
    ]
  }
  charEch.setOption(option)
})
</script>
<script lang="ts">
export default {
  name: 'App'
}
</script>

效果

在这里插入图片描述
在这里插入图片描述

  JavaScript知识库 最新文章
ES6的相关知识点
react 函数式组件 & react其他一些总结
Vue基础超详细
前端JS也可以连点成线(Vue中运用 AntVG6)
Vue事件处理的基本使用
Vue后台项目的记录 (一)
前后端分离vue跨域,devServer配置proxy代理
TypeScript
初识vuex
vue项目安装包指令收集
上一篇文章      下一篇文章      查看所有文章
加:2022-09-13 11:05:12  更:2022-09-13 11:06:02 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 10:36:11-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码