zoukankan      html  css  js  c++  java
  • 从零开始学VUE之Webpack(组件分离代码形成.vue文件并使用VueLoader加载解析)

    组件分离代码

    删除test.js

    修改index.html

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
    </head>
    <body>
        <div id="app">
        </div>
    <script src="dist/bundle.js"></script>
    </body>
    </html>

    新增App.vue文件,使用IDEA新建,如果没有的话在Setting->plugin中安装vue插件

    App.vue

    <template>
    <!--  template 中写 结构-->
      <div>
        <h2 class="title">{{message}}</h2>
      </div>
    </template>
    
    <script>
    // 导出默认的对象 这里面写数据 JS
    export default {
      name: "App",
      data(){
        return {
          message: 'hello vue!'
        }
      }
    }
    </script>
    
    <!--style中写样式-->
    <style scoped>
    .title{
      color: blue;
    }
    </style>

    修改main.js

    import Vue from 'vue'
    import App from './js/App.vue'
    
    const app = new Vue({
        el:'#app',
        // 同时使用el和template 在编译完成后,会直接将template替换掉index.html中的<div id="app"></div>
        template:'<App></App>',
        // 注册组件 App
        components:{
            App
        }
    })

    打包运行

    报错了

    D:zhangyugen@jd.comvueday1html4.从0开始学VUEsimplevue>npm run build
    
    > simpleconfig@1.0.0 build D:zhangyugen@jd.comvueday1html4.从0开始学VUEsimplevue
    > webpack
    
    Hash: 85ff48d981147aa56b17
    Version: webpack 3.6.0
    Time: 689ms
        Asset    Size  Chunks                    Chunk Names
    bundle.js  347 kB       0  [emitted]  [big]  main
       [0] (webpack)/buildin/global.js 509 bytes {0} [built]
       [2] ./src/main.js 526 bytes {0} [built]
       [6] ./src/js/App.vue 279 bytes {0} [built] [failed] [1 error]
        + 4 hidden modules
    
    ERROR in ./src/js/App.vue
    Module parse failed: D:zhangyugen@jd.comvueday1html4.从0开始学VUEsimplevuesrcjsApp.vue Unexpected token (1:0)
    You may need an appropriate loader to handle this file type.
    | <template>
    | <!--  template 中写 结构-->
    |   <div>
     @ ./src/main.js 7:11-34
    npm ERR! code ELIFECYCLE
    npm ERR! errno 2
    npm ERR! simpleconfig@1.0.0 build: `webpack`
    npm ERR! Exit status 2
    npm ERR!
    npm ERR! Failed at the simpleconfig@1.0.0 build script.
    npm ERR! This is probably not a problem with npm. There is likely additional logging output above.
    
    npm ERR! A complete log of this run can be found in:
    npm ERR!     C:Usersext.zhangyugen1AppDataRoaming
    pm-cache\_logs2021-06-03T12_25_48_996Z-debug.log
    
    D:zhangyugen@jd.comvueday1html4.从0开始学VUEsimplevue>

    显然默认webpack是不认识我们的.vue文件的,这个时候又该安装loader了

    安装Vueloader

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

    在webpack的loaders中没有找到,直接抄一下好了

    执行安装

    D:zhangyugen@jd.comvueday1html4.从0开始学VUEsimplevue>npm install vue-loader vue-template-compiler --save-dev
    npm WARN css-loader@3.6.0 requires a peer of webpack@^4.0.0 || ^5.0.0 but none is installed. You must install peer dependencies yourself.
    npm WARN style-loader@2.0.0 requires a peer of webpack@^4.0.0 || ^5.0.0 but none is installed. You must install peer dependencies yourself.
    npm WARN simpleconfig@1.0.0 No description
    npm WARN simpleconfig@1.0.0 No repository field.
    npm WARN optional SKIPPING OPTIONAL DEPENDENCY: fsevents@2.3.2 (node_modulesfsevents):
    npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for fsevents@2.3.2: wanted {"os":"darwin","arch":"any"} (current: {"os":"win32","arch":"x64"})
    npm WARN optional SKIPPING OPTIONAL DEPENDENCY: fsevents@1.2.13 (node_moduleswatchpack-chokidar2
    ode_modulesfsevents):
    npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for fsevents@1.2.13: wanted {"os":"darwin","arch":"any"} (current: {"os":"win32","arch":"x64"})
    
    + vue-template-compiler@2.6.13
    + vue-loader@15.9.7
    added 15 packages from 42 contributors and audited 507 packages in 10.795s
    
    13 packages are looking for funding
      run `npm fund` for details
    
    found 11 vulnerabilities (2 low, 9 moderate)
      run `npm audit fix` to fix them, or `npm audit` for details
    
    D:zhangyugen@jd.comvueday1html4.从0开始学VUEsimplevue>

    安装成功

    修改webpack.config.js配置

    // 需要从node依赖中引入 需要添加依赖环境
    const path = require('path');
    
    module.exports = {
        // 配置源码打包位置
        entry: './src/main.js',
        // 配置目标位置
        output: {
            // path 只能写绝对路径 不能写相对路径 但是不要直接写死,需要动态获取文件位置
            path: path.resolve(__dirname,'dist'),
            filename: 'bundle.js'
        },
        module: {
            rules: [
                {
                    test: /.css$/,
                    use: [ 'style-loader', 'css-loader' ]
                },
                {
                    test: /.js$/,
                    exclude: /(node_modules|bower_components)/,
                    use: {
                        loader: 'babel-loader',
                        options: {
                            presets: ['es2015']
                        }
                    }
                },
                // 增加.vue文件的loader
                {
                    test: /.vue$/,
                    use:['vue-loader']
                }
            ]
        },
        // 使用runtime-compiler
        resolve:{
            alias:{
                'vue$': 'vue/dist/vue.esm.js'
            }
        }
    }

    运行打包

    报错了

    D:zhangyugen@jd.comvueday1html4.从0开始学VUEsimplevue>npm run build
    
    > simpleconfig@1.0.0 build D:zhangyugen@jd.comvueday1html4.从0开始学VUEsimplevue
    > webpack
    
    Hash: 6a02c4ef842477436db3
    Version: webpack 3.6.0
    Time: 859ms
        Asset    Size  Chunks                    Chunk Names
    bundle.js  353 kB       0  [emitted]  [big]  main
       [0] (webpack)/buildin/global.js 509 bytes {0} [built]
       [2] ./src/js/App.vue?vue&type=script&lang=js& 174 bytes {0} [built]
       [3] ./src/main.js 526 bytes {0} [built]
       [7] ./src/js/App.vue 1.22 kB {0} [built] [1 error]
       [8] ./src/js/App.vue?vue&type=template&id=3ea74058&scoped=true& 469 bytes {0} [built] [failed] [1 error]
       [9] ./src/js/App.vue?vue&type=style&index=0&id=3ea74058&scoped=true&lang=css& 432 bytes {0} [built] [failed] [1 error]
        + 5 hidden modules
    
    ERROR in ./src/js/App.vue?vue&type=style&index=0&id=3ea74058&scoped=true&lang=css&
    Module parse failed: D:zhangyugen@jd.comvueday1html4.从0开始学VUEsimplevue
    ode_modulesvue-loaderlibindex.js!D:zhangyugen@jd.comvueday1html4.从0开始学VUEsimplevuesrcjsA
    pp.vue?vue&type=style&index=0&id=3ea74058&scoped=true&lang=css& Unexpected token (22:0)
    You may need an appropriate loader to handle this file type.
    |
    |
    | .title{
    |   color: blue;
    | }
     @ ./src/js/App.vue 4:0-87
     @ ./src/main.js
    
    ERROR in ./src/js/App.vue?vue&type=template&id=3ea74058&scoped=true&
    Module parse failed: D:zhangyugen@jd.comvueday1html4.从0开始学VUEsimplevue
    ode_modulesvue-loaderlibindex.js!D:zhangyugen@jd.comvueday1html4.从0开始学VUEsimplevuesrcjsA
    pp.vue?vue&type=template&id=3ea74058&scoped=true& Unexpected token (2:0)
    You may need an appropriate loader to handle this file type.
    |
    | <!--  template 中写 结构-->
    |   <div>
    |     <h2 class="title">{{message}}</h2>
     @ ./src/js/App.vue 1:0-94
     @ ./src/main.js
    
    ERROR in ./src/js/App.vue
    vue-loader was used without the corresponding plugin. Make sure to include VueLoaderPlugin in your webpack config.
     @ ./src/main.js 7:11-34
    npm ERR! code ELIFECYCLE
    npm ERR! errno 2
    npm ERR! simpleconfig@1.0.0 build: `webpack`
    npm ERR! Exit status 2
    npm ERR!
    npm ERR! Failed at the simpleconfig@1.0.0 build script.
    npm ERR! This is probably not a problem with npm. There is likely additional logging output above.
    
    npm ERR! A complete log of this run can be found in:
    npm ERR!     C:Usersext.zhangyugen1AppDataRoaming
    pm-cache\_logs2021-06-03T12_38_17_651Z-debug.log
    
    D:zhangyugen@jd.comvueday1html4.从0开始学VUEsimplevue>

    这个错误是应为vue-loader版本太高了,需要安装额外的插件才可以使用

    我们降低vue-loader 的版本为13.0.0

    通过package.json可以看到现在是15.9.7,大于14的版本都需要插件,所以我们安装13的版本

    以^开头的意思是从这个版本开始查找,如果查找 不到的话就往后查找,但是不会大于开头的大版本

    修改为

    如果直接修改package.json文件中的版本,而不想单独安装vue-loader并指定版本的话可以直接运行

    npm install

    他会自动根据package.json文件安装对应的版本环境

    执行命令

    执行完成后

    IDEA不再警告这个版本了

    再次运行打包

    D:zhangyugen@jd.comvueday1html4.从0开始学VUEsimplevue>npm run build
    
    > simpleconfig@1.0.0 build D:zhangyugen@jd.comvueday1html4.从0开始学VUEsimplevue
    > webpack
    
    { parser: "babylon" } is deprecated; we now treat it as { parser: "babel" }.
    Hash: f3cf394903e0c5ba7cea
    Version: webpack 3.6.0
    Time: 1133ms
        Asset    Size  Chunks                    Chunk Names
    bundle.js  364 kB       0  [emitted]  [big]  main
       [0] (webpack)/buildin/global.js 509 bytes {0} [built]
       [2] ./node_modules/babel-loader/lib!./node_modules/vue-loader/lib/selector.js?type=script&index=0!./src/js/App.vue 166 bytes {0} [built]
       [3] ./src/main.js 526 bytes {0} [built]
       [7] ./src/js/App.vue 1.83 kB {0} [built]
       [8] ./node_modules/vue-style-loader!./node_modules/css-loader/dist/cjs.js!./node_modules/vue-loader/lib/style-compiler?{"vue":true,"id":"data-v-3ea74058","scoped":true,"hasInlineConfi
    g":false}!./node_modules/vue-loader/lib/selector.js?type=styles&index=0!./src/js/App.vue 1.58 kB {0} [built]
       [9] ./node_modules/css-loader/dist/cjs.js!./node_modules/vue-loader/lib/style-compiler?{"vue":true,"id":"data-v-3ea74058","scoped":true,"hasInlineConfig":false}!./node_modules/vue-loa
    der/lib/selector.js?type=styles&index=0!./src/js/App.vue 286 bytes {0} [built]
      [14] ./node_modules/vue-loader/lib/template-compiler?{"id":"data-v-3ea74058","hasScoped":true,"buble":{"transforms":{}}}!./node_modules/vue-loader/lib/selector.js?type=template&index=0
    !./src/js/App.vue 497 bytes {0} [built]
        + 8 hidden modules
    
    D:zhangyugen@jd.comvueday1html4.从0开始学VUEsimplevue>

    打包成功,运行

    可以看到是id='app'的div是直接被替换了

    作者:彼岸舞

    时间:202167

    内容关于:VUE

    本文属于作者原创,未经允许,禁止转发

  • 相关阅读:
    spring二级缓存的ehcache 的 配置文件
    C/C++联合(Union)浅谈
    C++技巧之名字空间namespace
    VC动态调用DLL的调试方法
    在C++中调用DLL中的函数
    VS编译debug模式静态库(lib)的结尾_d修改
    bash: chkconfig: command not found
    Linux在防火墙中开放SVN端口
    VIM选择文本块/复制/粘贴
    svnserve.conf:12: Option expected的问题解决方法[SVN]
  • 原文地址:https://www.cnblogs.com/flower-dance/p/14858101.html
Copyright © 2011-2022 走看看