使用webpack手动搭建vue项目的步骤

 更新时间:2023年03月02日 15:57:21   作者:前端切图仔Zz  
这篇文章主要介绍了从零使用webpack手动搭建vue项目的步骤,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

一、前提条件

在开始以下步骤之前需先安装好nodejs环境(最好直接安装nvm,然后再通过nvm管理node版本),如未安装,可参考:https://www.jb51.net/article/272933.htm

二、手动搭建vue项目的步骤:

1. 创建项目

执行以下命令:

mkdir  vue-demo
cd vue-demo

如图所示:

2. 生成package.json文件

执行以下命令:

npm init

如图所示,此时能看到有生成package.json文件:

3. 引入webpack和创建webpack.config.js文件

执行以下命令:

npm install webpack --save-dev

如图所示:

然后,创建webpack.config.js文件:

const path = require('path')
module.exports = {
    entry:'./src/main.js',
    output: {
        path: path.resolve(__dirname,'dist'),
        filename: "demo.js"
    }
}

如图所示:

4. 创建index.html,main.js文件

index.html文件内容如下:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>vue-webpack-demo</title>
</head>
<body>
    <script src="./dist/demo.js"></script>
</body>
</html>

创建src文件夹,在文件夹下创建main.js文件,内容如下:

alert('hello world');

如图所示:

5. 使用webpack命令编译

此时,顺便安装webpack-cli。可见目录多了一个dist文件夹下面包含demo.js文件。内容如下所示:

6. 引入vue2,修改index.html,main.js文件

执行以下命令:

npm install vue@2.x.x

如图所示:

执行命令后能发现package.json中自动新增了以下内容:

修改main.js内容如下:

import Vue from 'vue'
var vm = new Vue({
    el:'#app',
    data:{
        msg:'hello vue'
    }
})

在index.html中加入msg

7. 引入babel

执行以下命令:

npm install --save-dev babel-core babel-loader

将babel加入到webpack.config.js配置文件中

module: {
    rules: [
        {
            test: /\.js$/,
            loader: "babel-loader",
            exclude: /node_modules/
        }
    ]
}

如图所示:

8. 再次执行webpack命令,完成搭建

关于提示“The ‘mode’ option has not been set”,可在webpack.config.js中设置为开发模式:

此时在浏览器打开index.html报以下错误:

这是因为正在使用的是vue的运行时版本,而此版本中的编译器时不可用的,我们需要把它切换成运行时 + 编译的版本,需要在配置文件中添加以下代码:

resolve: {
    alias: {
        'vue$': 'vue/dist/vue.esm.js' // 'vue/dist/vue.common.js' for webpack 1
    }
}

如图所示:

再次运行webpack 命令重新编译,然后再在浏览器打开index.html文件:

此时,一个基于webpack的vue 项目就搭建好。

三、Webpack的常用配置:

1.HtmlWebpackPlugin插件(复制index.html)。

作用:

编译时自动在dist的目录中创建一个html文件并将index.html中的内容复制过去。

执行以下命令用以引入插件:

npm install --save-dev html-webpack-plugin

在webpack.config.js文件中添加如下配置:

const HtmlWebpackPlugin = require('html-webpack-plugin')
…
plugins:[
    new HtmlWebpackPlugin()
]

位置如下:

执行webpack命令再次编译,将自动在dist目录下生成html文件:

对比原本自己写的index.html,可知少了以下内容:

接下来可通过修改配置文件来解决这个问题:

plugins:[
    new HtmlWebpackPlugin({
        title: "vue demo",
        template: "index.html"
    })
]

删掉dist文件夹下index.html的script代码后再次编译,得到新的index.html文件如下:

2.webpack-dev-server插件(实时加载)

作用:

提供了一个简单的web服务器,能够实时重新加载。无须在浏览器中直接打开文件(我们实际开发中将代码部署在 server中,而不是在浏览器中直接打开文件。)。

执行以下命令:

npm install --save-dev webpack-dev-server

在webpack.config.js文件中添加如下配置,以告知webpack-dev-server, 在localhost:8080 下建立服务,将 dist 目录下的文件,作为可访问文件。:

devServer: {
    static: path.resolve(__dirname,'static')
}

位置如下:

在package.json中添加一个script脚本以直接运行开发服务器(dev server)

"scripts": {
  "test": "echo \"Error: no test specified\" && exit 1",
  "dev":"webpack-dev-server --open",
  "build": "webpack"
},

位置如下:

执行npm run dev命令:

此时,浏览器将会自动打开页面,这证明已经成功启动服务:

3. css加载器(css-loader和style-loader)

执行以下命令安装css-loader和style-loader:

npm install --save-dev css-loader style-loader

在 webpack.config.js 中进行如下配置:

module:{
    rules:[ 
        {
            test: /\.css$/,
            use: ['style-loader', 'css-loader']
        }
    ]
}

具体位置如下:

在src 目录下新建一个styles的文件夹并在里面添加一个main.css的文件,写上以下内容:

#app{
    color: red;
}

然后在main.js文件中引入css

再次执行npm run dev命令,页面上的字体样式将会变化:

4. 图片资源和字体的加载

说明:

url-loader是基于file-loader的封装,故需引入file-loader。url-loader解决图片较多时过多http请求导致页面性能降低的问题,将引入的图片编码,生成dataURl。相当于把图片数据翻译成一串字符,再把这串字符打包到文件中,最终只需要引入这个文件就能访问图片了。

执行以下命令:

npm install --save-dev file-loader url-loader

在配置文件添加以下内容:

{
    test:/\.(png|jpe?g|gif|svg)(\?.*)?$/,
    loader: 'url-loader',
    options: {
        limit: 10000,
        esModule: false
    }
},
{
    test: /\.(woff2?|eot|ttf|otf)(\?.*)?$/,
    loader: 'url-loader',
    options: {
        limit: 10000
    }
}

位置如下:

在src 目录下新建一个images的文件夹并在里面添加图片

然后在main.js中引入

import logo from'./images/logo.png'

接着在index.html中使用

刷新页面可见已经能看到图片:

5. vue-loader

说明:

在vue的开发过程中,通常我们需要写.vue结尾的文件即组件,这类文件需要通过 vue-loader 来加载,vue-template-compiler来编译。

执行以下命令:

npm install --save-dev vue-loader@15.9.8 vue-template-compiler

在webpack.config.js文件中添加:

const { VueLoaderPlugin } = require('vue-loader')
…
module: {
    rules: [
        {
            test: /\.vue$/,
            loader: 'vue-loader'
        }
    ]
},

…
plugins:[
    new VueLoaderPlugin()
]

修改index.html文件:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>vue-webpack-demo</title>
</head>
<body>
    <div id="app">
       
    </div>
</body>
</html>

在src文件夹下新建app.vue文件,内容如下:

<template>
    <div id="app">
        <img src="./images/logo.png" alt="logo">
        {{msg}}
    </div>
</template>
<script>
    export default {
        name: 'app',
        data(){
            return {
                msg: '尝试vue页面是否能打开了'
            }
        }
    }
</script>
<style scoped>
    img{
        width: 100px;
        height: 100px;
    }
</style>

修改main.js:

import Vue from 'vue'
import './styles/main.css'
import App from './app.vue'

var vm = new Vue({
    el: '#app',
    template: '<App/>',
    components: { App }
})

运行npm run dev,浏览器页面内容将会更新:

6. 热重载

说明:

“热重载”不只是当你修改文件的时候简单重新加载页面。启用热重载后,当你修改 .vue 文件时,该组件的所有实例将在不刷新页面的情况下被替换。手动设置工程时,热重载会在启动 webpack-dev-server --hot 服务时自动开启。

修改package.json:

到此这篇关于从零使用webpack手动搭建vue项目的文章就介绍到这了,更多相关webpack搭建vue项目内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 关于vue里页面的缓存详解

    关于vue里页面的缓存详解

    今天小编就为大家分享一篇关于vue里页面的缓存详解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-11-11
  • 详解vue3.0 diff算法的使用(超详细)

    详解vue3.0 diff算法的使用(超详细)

    这篇文章主要介绍了详解vue3.0 diff算法的使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-07-07
  • 浅谈Vue组件单元测试究竟测试什么

    浅谈Vue组件单元测试究竟测试什么

    这篇文章主要介绍了浅谈Vue组件单元测试究竟测试什么,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-02-02
  • 详解vuejs之v-for列表渲染

    详解vuejs之v-for列表渲染

    这篇文章主要介绍了详解vuejs之v-for列表渲染,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-06-06
  • vue3实现数字滚动特效实例详解

    vue3实现数字滚动特效实例详解

    这篇文章主要为大家介绍了vue3实现数字滚动特效实例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-09-09
  • 浅析Vue.js中v-bind v-model的使用和区别

    浅析Vue.js中v-bind v-model的使用和区别

    v-model 指令在表单控件元素上创建双向数据绑定,所谓双向绑定。这篇文章主要介绍了Vue.js中v-bind v-model的使用和区别,需要的朋友可以参考下
    2018-12-12
  • 基于vue实现分页组件的示例代码

    基于vue实现分页组件的示例代码

    分页组件是一种用户界面元素,用于在长列表或数据集中分割内容,分页组件是每个开发人员必须掌握的一个组件,广泛应用在各个场所,用以用户方便阅读等,本文就给大家介绍一下如何基于vue写出的分页组件,需要的朋友可以参考下
    2023-08-08
  • vue2.X组件学习心得(新手必看篇)

    vue2.X组件学习心得(新手必看篇)

    下面小编就为大家带来一篇vue2.X组件学习心得(新手必看篇)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-07-07
  • vue计算属性无法监听到数组内部变化的解决方案

    vue计算属性无法监听到数组内部变化的解决方案

    今天小编就为大家分享一篇vue计算属性无法监听到数组内部变化的解决方案,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-11-11
  • vue3父组件调用子组件的方法例子

    vue3父组件调用子组件的方法例子

    这篇文章主要给大家介绍了关于vue3父组件调用子组件的方法例子,文中通过实例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2023-07-07

最新评论