3.4 webpack整合vue

一、初步整合

1. 安装Vue

  • 之前项目都是在js文件中直接通过script标签引入Vue,现在模块化思想后,直接通过npm来安装vue;
# vue为运行时依赖
npm install vue --save

2. 在main.js中导入Vue

import Vue from 'vue';

const app = new Vue({
    el: "#first",
    data: {
        name: 'lucy',
        address: 'NewYork',
    }
})

3. 修改配置文件webpack.config.js

const path = require('path');

module.exports = {
    entry: './src/main.js',
    output:{
        path:path.resolve(__dirname,'dist'),
        filename: 'bundle.js',
    },
    /*引入vue*/
    resolve:{
        alias:{
            'vue$': 'vue/dist/vue.esm.js'
        }
    }
}

4. 在index.html中展示变量

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>webpack整合Vue</title>
</head>
<body>
<div id="first">
    <h2>{{name}}{{address}}</h2>
</div>

<script src="dist/bundle.js"></script>
</body>
</html>

二、单页面复用

1. index.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>webpack整合Vue</title>
</head>
<body>

<!--1. 一般不在index.html中写代码
    2. 只需要挂载div即可,下面展示的代码全部挪到vue实例的template中-->
<div id="first">

</div>
<script src="dist/bundle.js"></script>
</body>
</html>

2. main.js

import Vue from 'vue';

new Vue({
    el: "#first",
    /*编译时候,会将template中代码,全部挪到index.html挂载的div中*/
    template: `<div>
                 <h2>{{name}}{{address}}</h2>
               </div>`,
    data: {
        name: 'shuzhan',
        address: 'NewYork',
    }
})

三、Vue终极使用

1 版本一:main.js中的template模板抽离

import Vue from 'vue';

/*1. 将Vue中的相关数据和逻辑抽取出来*/
const App = {
    /*编译时候,会将template中代码,全部挪到index.html挂载的div中*/
    template: `<div>
                 <h2>{{name}}{{address}}</h2>
               </div>`,
    data(){
        return {
            name: 'sz',
            address: 'pk',
        }
    }
}

new Vue({
    el: "#first",
    /*3. 在模板中引用*/
    template: '<App/>',
    /*2. 将上面组件在Vue实例中做全局注册*/
    components:{
        App
    }
})

2 版本二:上述App抽取为单独的js

App.js

/*到处的是默认的,因此接受方可以随便写名字*/
export default {
    template: `<div>
                 <h2>{{name}}{{address}}</h2>
               </div>`,
    data(){
        return {
            name: 'sz',
            address: 'pk',
        }
    }
}

main.js

import Vue from 'vue';
import App from './js/app'/*导入注册的js*/
new Vue({
    el: "#first",
    /*3. 在模板中引用*/
    template: '<App/>',
    /*2. 将上面组件在Vue实例中做全局注册*/
    components:{
        App
    }
}
)

3 版本三:app.js抽取为App.vue文件

3.1 vue目录下的文件App.vue

<template>
  <!--1. 模板中的东西-->
  <div>
    <h2 class="title">{{name}}{{address}}</h2>
  </div>
</template>

<!--2. 数据,方法等-->
<script>
export default {
name: "App",
  data(){
    return {
      name: 'sz',
      address: 'pk',
    }
  }
}
</script>

<!--3. 样式-->
<style scoped>
   .title{
     color: red;
   }
</style>

3.2 在main.js中引入

import Vue from 'vue';
import App from './vue/App.vue'/*导入对应的Vue文件*/
new Vue({
    el: "#first",
    /*3. 在模板中引用*/
    template: '<App/>',
    /*2. 将上面组件在Vue实例中做全局注册*/
    components:{
        App
    }
})

3.3 安装Vue文件加载的loader及配置webpack.config.js

四、多个Vue

  • 一般以App.vue作为主文件;
  • 其他文件通过子组件的方式注册进App.vue中即可;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要让webpack能够打包.vue文件,我们需要使用vue-loader来解析.vue文件。首先,我们需要安装vue-loader和vue-template-compiler这两个依赖项。可以使用以下命令来安装它们: ``` npm install vue-loader vue-template-compiler -D ``` 安装完成后,我们需要在webpack.config.js中添加相应的配置。首先,我们需要使用vue-loader来处理.vue文件。在module.rules数组中添加以下配置: ```javascript module: { rules: [ // ...其他规则 { test: /\.vue$/, loader: 'vue-loader' } ] } ``` 接下来,我们还需要配置resolve.extensions选项,以便webpack能够识别.vue文件。在resolve.extensions数组中添加'.vue',例如: ```javascript resolve: { extensions: ['.js', '.vue', '.json'] } ``` 最后,我们还需要添加HtmlWebpackPlugin插件来处理html文件。可以使用以下命令来安装它: ``` npm install html-webpack-plugin -D ``` 然后,在webpack.config.js中添加以下配置: ```javascript const HtmlWebpackPlugin = require('html-webpack-plugin'); module.exports = { // ...其他配置 plugins: [ // ...其他插件 new HtmlWebpackPlugin({ template: path.resolve(__dirname, './public/index.html') }) ] }; ``` 这样,webpack就能够正确地解析.vue文件并打包vue工程了。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [使用webpack打包vue项目](https://blog.csdn.net/qq_42750982/article/details/124202782)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *3* [webpack打包Vue项目](https://blog.csdn.net/duxiaoxie123/article/details/116274852)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值