vue项目中main.js的用法

在Vue项目中,main.js是项目的入口文件,它负责创建和挂载根实例,本文将详细介绍如何在Vue项目中使用main.js。

引入Vue框架

我们需要在main.js文件中引入Vue框架,可以通过以下方式引入:

vue项目中main.js的用法

import Vue from 'vue'

引入插件

在Vue项目中,我们可能需要使用一些插件来增强功能,我们可以使用vue-router来实现前端路由,在main.js文件中,我们可以这样引入并使用vue-router插件:

import VueRouter from 'vue-router'
Vue.use(VueRouter)

引入组件

在Vue项目中,我们通常会将页面划分为多个组件,在main.js文件中,我们可以这样引入并注册组件:

import App from './App.vue'
import Home from './components/Home.vue'
import About from './components/About.vue'
const router = new VueRouter({
  routes: [
    { path: '/', component: Home },
    { path: '/about', component: About }
  ]
})
new Vue({
  router,
  render: h => h(App)
}).$mount('app')

引入样式和静态资源

在Vue项目中,我们可能需要引入外部的样式和静态资源,在main.js文件中,我们可以这样引入:

vue项目中main.js的用法

import './assets/css/style.css'
import './assets/img/logo.png'

全局事件总线(Event Bus)

在Vue项目中,我们可能会遇到多个组件之间需要进行通信的情况,为了实现组件之间的解耦,我们可以使用全局事件总线(Event Bus),在main.js文件中,我们可以这样创建和使用全局事件总线:

// 创建全局事件总线对象
Vue.prototype.$eventBus = new Vue()

在组件中使用全局事件总线:

// 触发事件
this.$eventBus.$emit('eventName', data)
// 监听事件
this.$eventBus.$on('eventName', this.handleEvent)

打包优化

在开发完成后,我们需要对项目进行打包优化,可以使用webpack等工具进行打包,在main.js文件中,我们可以这样配置打包:

vue项目中main.js的用法

const path = require('path')
const webpack = require('webpack')
const HtmlWebpackPlugin = require('html-webpack-plugin')
const CleanWebpackPlugin = require('clean-webpack-plugin')
const UglifyJsPlugin = require('uglifyjs-webpack-plugin')
const OptimizeCSSAssetsPlugin = require('optimize-css-assets-webpack-plugin')
const MiniCssExtractPlugin = require('mini-css-extract-plugin')
const TerserPlugin = require('terser-webpack-plugin')
const CompressionPlugin = require('compression-webpack-plugin')
const BrotliGzipPlugin = require('brotli-gzip-webpack-plugin')
const CopyWebpackPlugin = require('copy-webpack-plugin')
const BundleAnalyzerPlugin = require('webpack-bundle-analyzer').BundleAnalyzerPlugin
const ManifestPlugin = require('webpack-manifest-plugin') // 生成manifest文件,用于离线应用缓存 manifest.json文件需要单独配置生成路径和输出路径,这里不做赘述,具体可参考官方文档。



























																												

























																						
// 配置HTML模板
const template = path.resolve(__dirname, '../src/index.html')
const htmlWebpackPlugin = new HtmlWebpackPlugin({
  template,
  filename: 'index.html',
  inject: 'body'
})
module.exports = {
  entry: './src/main.js',
  output: {
    filename: '[name].[hash].js',
    path: path.resolve(__dirname, '../dist'),
    publicPath: '/dist/'
  },
  module:
  {
    rules: [
      {
        test: /\\.css$/,
        use: [{
         loader: MiniCssExtractPlugin.loader,
         options: {
           publicPath: '../'
         }
        },
       {
         loader: 'css-loader',
         options: {
           minimize: true
         }
        },
       {
         loader: 'postcss-loader',
         options: {
           sourceMap: true
         }
        }]
      },
      {
        test: /\\.less$/,
        use: [{
         loader: MiniCssExtractPlugin.loader,
         options: {
           publicPath: '../'
         }
        },
       {
         loader: 'css-loader',
         options: {
           minimize: true
         }
        },
       {
         loader: 'postcss-loader',
         options: {
           sourceMap: true
         }
        },
       {
         loader: 'less-loader',
         options: {
           lessOptions: {
             modifyVars:
             {
               primaryColor: '1DA57A',
               linkColor: '1DA57A',
               borderRadius: '2px'
             }
           }
         }
        }]
      },
      {
        test: /\\.(png|jpg|gif|svg)$/,
        use: [{
          loader: 'url-loader',
          options: {
            limit: 8192,
            name: 'img/[name].[hash:7].[ext]'
          }
        }]
      },
      {
        test: /\\.(woff|woff2|eot|ttf|otf)$/,
        use: [{
          loader: 'file-loader',
          options: {
            name: 'fonts/[name].[hash].[ext]'
          }
        }]
      },
      {
        test: /\\.js$/,
        exclude: /node_modules/,
        use: [{
          loader: 'babel-loader',
          options: {
            presets: ['@babel/preset-env']
          }
        }]
      }
    ]
  },\plugins:\[
ew CleanWebpackPlugin({\templatePath: path.resolve(__dirname, '../dist'),}),
ew MiniCssExtractPlugin({\filename: '[name].[hash].css'}),
ew OptimizeCSSAssetsPlugin({\options}),
ew UglifyJsPlugin({\options}),
ew TerserPlugin({options}),
ew CompressionPlugin({\algorithms: ['gzip', 'brotliCompress']}),
ew BrotliGzipPlugin({\options}),\htmlWebpackPlugin,
ew ManifestPlugin({\generateManifestFile:\true}),
ew BundleAnalyzerPlugin({})]}//导出配置对象module.exports = config;//导出公共路径配置Object.assign(config, {\publicPath:\'/\'});//导出环境变量config;process.env.NODE_ENV === \'production\\' && config;//导出服务器配置devServer;if (process.env.NODE_ENV === \'development\') {\devServer} else if (process.env.NODE_ENV === \'production\\') {\devServer}console.log(\'build successfully!\\');/*eslint no-console*/

原创文章,作者:K-seo,如若转载,请注明出处:https://www.kdun.cn/ask/261899.html

Like (0)
Donate 微信扫一扫 微信扫一扫
K-seo的头像K-seoSEO优化员
Previous 2024-01-25 13:28
Next 2024-01-25 13:30

相关推荐

  • v-html vue

    Vue.js 是一个用于构建用户界面的渐进式框架,与其他大型框架不同的是,Vue 被设计为可以自底向上逐层应用,Vue 的核心库只关注视图层,不仅易于上手,还便于与第三方库或既有项目整合,下面我们将详细介绍如何在 HTML 中使用 Vue.js。1. 引入 Vue.js我们需要在 HTML 文件中引入 Vue.js,可以通过以下两种方……

    2024-01-18
    0117
  • vue如何获取input输入框的值

    在Vue.js中,获取input输入框的值是一个常见的需求,可以通过Vue的双向数据绑定特性来实现,以下是详细的技术介绍:Vue的数据绑定Vue.js最强大的特性之一是其数据绑定系统,借助于Vue,开发者可以轻松地将数据从JavaScript逻辑层自动同步到视图模板层,反之亦然,这种机制使得状态管理变得直观而富有弹性。插值Vue使用{……

    2024-02-03
    0238
  • vue引入背景图

    Vue引用图片背景的方法在Vue中,我们可以使用CSS样式来设置页面的背景图片,本文将介绍如何在Vue项目中引用图片作为背景,并提供详细的技术介绍和解答相关问题。使用CSS样式设置背景图片1、在项目的src目录下创建一个名为assets的文件夹(如果尚未创建),用于存放静态资源,如图片、字体等。2、将需要作为背景的图片放入assets……

    2024-01-14
    0253
  • vue怎么实现分页

    Vue实现表格分页的方法有很多,这里我们介绍一种简单的方法:使用vue-pagination库,首先需要安装这个库:npm install vue-pagination --save然后在项目中引入并注册这个组件:import Vue from 'vue';import Pagination from 'vue-pagination'……

    2024-01-20
    0242
  • vue中如何引入外部js文件

    在现代Web开发中,Vue.js通常作为前端框架,而Koa则是后端的Node.js框架,将Koa与Vue结合使用可以构建出强大的全栈应用程序,下面将详细介绍如何在Vue项目中引入并使用Koa。环境准备在开始之前,确保你已经安装了Node.js和npm(Node包管理器),接着,你需要安装Vue CLI,它是Vue项目的脚手架工具,打开……

    2024-02-11
    0125
  • vue父组件如何向子组件中传递数据

    在Vue.js中,父组件向子组件传值是非常常见的需求,Vue.js提供了多种方式来实现这一目标,包括props、自定义事件和Vuex等,下面将详细介绍这些方法。1、使用props传递数据props是Vue.js中用于父组件向子组件传递数据的一种方式,通过props,父组件可以将数据作为属性传递给子组件,子组件可以通过props接收并使……

    2024-03-03
    0165

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

免备案 高防CDN 无视CC/DDOS攻击 限时秒杀,10元即可体验  (专业解决各类攻击)>>点击进入