学习记录——vue结合webpack搭建脚手架

本文详细指导如何使用Vue进行组件化开发,包括HTML、CSS、JS逻辑分离,webpack配置,Vue-loader的运用,以及如何配置热更新功能,以实现项目的高效管理和维护。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

现在所有的逻辑需要在一个html里面写
希望 完整的目录结构 将vue工程化 也就是将目录区分开
asset静态资源
conponents公共组件
utils工具方法
router路由
views页面 等等
问题2:vue的逻辑 都是在一个newVue里面写的
解决:逻辑可以分开写
xxx.vue单独抽离这个逻辑,div、style、script都能存在

webpack结合vue搭建完整的脚手架
结构更完整,逻辑更清晰,打包上线,工程化
vue-loader实现加载 xxx.vue文件

相关插件

  1. webpack webpack-cli -D
  2. babel 处理js
    babel-loader
    @babel/core
    @babel/preset-env
  3. 处理css
    css-loader
    style-loader
  4. 处理文件
    file-loader
  5. 处理html
    html-webpack-plugin
  6. 处理vue
    vue-loader
    编译模板(.vue文件中有一个template) vue-template-compile
  7. vue vsCode的插件Vetur 代码高亮提示
  8. 新建一个文件webpack.config.js
  9. 启动服务器 热更新

搭建基本目录结构

在这里插入图片描述
在src根目录下新建index.html 或者将html文件放到views里 根据需求放到哪个文件夹

下载相关插件

先去命令行工具执行 npm init -y 生成package.json文件 然后下载插件

npm i webpack webpack-cli babel-loader css-loader style-loader @babel/preset-env @babel/core html-webpack-plugin file-loader vue-loader vue-template-compiler -D

然后下载vue:

npm i vue -S

配置文件

在最外层根目录下 新建webpack-config.js
在这里插入图片描述

const path = require('path');
const HtmlWebpackPlugin = require('html-webpack-plugin');

//不用下载直接引入,因为包含在vue-loader里
const VueLoaderPlugin = require('vue-loader/lib/plugin');
module.exports = {
    //入口文件
    entry: './src/index.js',
    //出口文件
    output: {
        path: path.join(__dirname, './dist'),
        filename: 'index.js'
    },

    mode: 'development', //开发环境 打包之后文件不被压缩

    //配置文件加载规则
    module: {
        rules: [{
                test: /\.js$/,
                loader: 'babel-loader',
                options: { presets: ['@babel/preset-env'] }
            },

            //loader加载规则 从后到前 从下到上 
            //css-loader将css打包进js文件中,style-loader将js中的css提取出来插入到head里
            //顺序不能错,先css-loader再style-loader 利用use的loader加载机制
            { //处理css
                test: /\.css$/,
                use: ['style-loader', 'css-loader']
            },

            { //处理图片
                test: /\.(png|jpg|gif|svg)$/,
                loader: 'file-loader',
                options: {
            //打包的时候会以单独文件的形式打包,引入的时候就可以引'../a.png'
                    esModules: false
                }
            },

            { //处理vue
                test: /\.vue$/,
                loader: 'vue-loader',
                options: {
                    compiler: require('vue-template-compiler'),
                    transformToRequires: {
                        video: ['src', 'poster'],
                        source: 'src',
                        img: 'src',
                        image: ['xlink:href', 'href'],
                        use: ['xlink:href', 'href']
                    }
                }
            },

        ],

    },

    plugins: [
        new HtmlWebpackPlugin({
             template: path.join(__dirname, './src/index.html')
        }),

        new VueLoaderPlugin()
    ],

    resolve: {
        alias: {
            //加载固定的版本
//处理vue打包的时候的文件的版本 2.6
            'vue$': 'vue/dist/vue.esm.js' 
        }
    }

}

可能出现的报错

如果出现这个报错,是因为没有下载vue-loader 需要去命令行工具下载,然后配置相关属性
ERROR in ./src/app.vue 1:0
You may need an appropriate loader to handle this file type, currently no loaders are configured to process this file. See https://webpack,js.org/concepts#loaders
< template >
< div >
{{name}}
@ ./src/index.js 5:0-28 13:9-12
在这里插入图片描述
在这里插入图片描述
如果出现以下错误,下载依赖vue-template-compiler
ERROR in ./src/app.vue
Module Error (from ./node_modules/vue-loader/lib/index.js):
Error: [vue-loader] vue-template-compiler must be installed as a peer dependency, or a compatible compiler implementation must be passed via options.
在这里插入图片描述
ERROR in ./src/app.vue
Module Error (from ./node_modules/vue-loader/lib/index.js):
vue-loader was used without the corresponding plugin. Make sure to include VueLoaderPlugin in your webpack config.

ERROR in ./src/App.vue
Module build failed (from ./node_modules/vue-loader/lib/index.js):
TypeError: Cannot read property ‘parseComponent’ of undefined

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

编写vue

之后就可以去编写vue了
去src文件夹里新建index.js文件 和 app.vue文件 可以根据需求放到相应的文件夹
在这里插入图片描述
index.html文件

<body>
    <div id="app">

    </div>
</body>

index.js: 入口文件

//vue的入口文件
import Vue from 'vue';

//App是一个组件 如果不识别xxx.vue文件 下载vue-loader
//不能叫内置标签的名字 比如 h1 h2 p header footer等等
import App from './app.vue';

new Vue({
    el: "#app",
    template: `<App></App>`,
//{组件名字:组件}  {App:App}第二个App和 import的App对应,
//第一个App是组件名字,和template: `<App></App>`里的App对应 可以写其他名字
    components: { App: App }
})

app.vue:
在这里插入图片描述
然后去命令行工具中执行 npx webpack 进行打包 在dist文件夹下生成文件
在这里插入图片描述
在这里插入图片描述

其他配置项

服务器环境搭建

下载 npm i webpack-dev-server -D
在这里插入图片描述

运行时想看到错误出处

比如我们去app.vue里写一个错误的代码:
在这里插入图片描述
然后当点击按钮的时候会报错
在这里插入图片描述
当我们点进去查看是哪个文件报错的时候,并看不出来具体是哪个文件报错,
所以要进行配置:
在这里插入图片描述

热更新(只有在启动服务器的时候才会热更新)

热更新:因为上面搭建了服务器环境,假设更改了一段代码,这段代码我们希望在不重新打包的情况下,让它自动更新 配置一个选项来进行热更新
回到webpack.config.js配置文件中: 执行三个步骤即可
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
设置完毕之后,只需要进行一次打包,之后修改代码就不用再重新打包了
注意,之前使用的打包命令是npx webpack
进行设置:
打开package.json文件:输入以下内容
在这里插入图片描述
这样设置以后,执行npm run build 是打包命令;执行npm run dev是启动项目
去命令行工具执行 npm run build 进行打包 成功执行
继续执行 npm run dev 执行成功
然后我们直接去浏览器输入网址 127.0.0.1:8080或者localhost:8080
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值