• vue-loader的简单例子


    一.模块加载器

    1.broserify  模块加载器, 只能加载js
    2.webpack    模块加载器, 一切东西都是模块, 最后打包到一块
    

    .vue文件  ==> 需要用webpack编译成浏览器可读文件

    vue组件代码, 三块代码

    1. <template></template> ==> 放html
    2. <style></style> ==> 放css
    3. <script></script> ==> js代码
    

    二.不使用vue-cli来创建, 手动创建

    1..初如化package.json 

    & npm init --yes  // 默认
    

     生成vue-loader-demo目录

    F:learningznsvue>md vue-loader-demo
    

    删除目录

    F:learningznsvue> del vue-loader-demo3

    2.vue-loader-demo创建以下文件

      |-index.html       首页     
      |-main.js              入口js文件
      |-App.vue              vue文件(第一个字母大写, 官方推荐命名法)
      |-package.json         工程文件(项目依赖, 名称, 配置)
      |-webpack.config.js    webpack配置文件
      |-components/Menu.vue  公用html
    

      

    3.webpack准备工作

    App.vue ==> 用vue-loader来编译

    & npm install vue --save
    & npm install vue-loader --save
    & npm install webpack --save-dev
    & npm install webpack-dev-server --save-dev
    
    & npm install vue-loader --save-dev
    & npm install vue-html-loader --save-dev
    & npm install css-loader --save-dev
    & npm install vue-style-loader --save-dev
    & npm install vue-hot-reload-api --save-dev
    & npm install vue-loader vue-html-loader css-loader vue-style-loader vue-hot-reload-api --save-dev
    

    ES转换, babel编译

    & npm install babel-loader --save-dev
    & npm install babel-core --save-dev
    & npm install babel-plugin-transform-runtime --save-dev
    & npm install babel-preset-es2015 --save-dev
    & npm install babel-runtime --save-dev
    & npm install babel-loader babel-core babel-plugin-transform-runtime babel-preset-es2015 babel-runtime --save-dev
    

    4.在webpack.config.js配置好

    module.exports = {
        entry: "./main.js",     // 入口js文件
        
        output: {
            path: __dirname,
            filename: "build.js"    // 输出js文件
        },
    
        module: {
            loaders: [
                {
                    test: /.vue$/,
                    loader: 'vue-loader'
                },
    
                {
                    test: /.js$/,
                    loader: 'babel-loader',
                    query:{
                      presets: 'es2015'  
                    },
                    exclude: /node_modules/
                }
            ]
        },
    
        resolve: {
            alias: {
                'vue$': 'vue/dist/vue.common.js'
            }
        }
    }
    

    5.在package.json配置webpack打包

    "scripts": {
        "dev": "webpack-dev-server --inline --hot"
    },
    
     

    6.index.html里引入output的build.js

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <meta http-equiv="X-UA-Compatible" content="ie=edge">
        <title>Document</title>
    </head>
    <body>
        <div id="box">
            <Hello></Hello>
        </div>
        <script src="build.js"></script>
    </body>
    </html>
    
     
    运行命令打包
    $ npm run dev

    命令行运行webpack命令, 
    如果发现页面有报错: [Vue warn]: You are using the runtime-only build of Vue where the template compiler is not available. Either pre-compile the templates into render functions, or use the compiler-included build. 
    运行时构建不包含模板编译器,因此不支持 template 选项,只能用 render 选项,但即使使用运行时构建,在单文件组件中也依然可以写模板,因为单文件组件的模板会在构建时预编译为 render 函数。
    上面一段是官方api中的解释。就是说,如果我们想使用template,在webpack.config.js添加以下以行

    resolve: {
        alias: {
            'vue$': 'vue/dist/vue.common.js'
        }
    }
    

    7.在main.js里导入vue文件

    import Vue from 'vue';
    import Hello from "./App.vue";
    
    new Vue({
        el: "#box",
        template: '<Hello/>',
        components: { Hello }
    })
    

      

    8.主要App.vue文件中

    <template>
        <div class="huangtao">
            <div @click="change()">{{msg}}</div>
            <my-menu></my-menu>
        </div>
    </template>
    
    <script>
        import Menu from "./components/Menu.vue";
    
        export default {
            data () {
                return {
                    msg: '这是App.vue内容'
                }
            },
    
            methods: {
                change(){
                    this.msg = "new Hello World!"
                }
            },
    
            components: {
                "my-menu" : Menu
            }
        }
    </script>
    
    <style>
        html {
            background: green;
            color: #fff;
            font-size: 20px;
        }
    </style>
    

      

    9.components/Menu.vue文件中

    <template>
        <ul>
            <li @click="change()">{{msg}}</li>
        </ul>
    </template>
    <script>
        export default {
            data () {
                return {
                    msg: '这是引入Menu.vue内容'
                }
            },
    
            methods: {
                change(){
                    this.msg = "new Hello World!"
                }
            }
        }
    </script>
    
  • 相关阅读:
    vc++6.0如何调试
    Visual C++单文档混合分割视图
    使用VC6.0实现窗口的任意分割张中庆
    用MFC创建通用窗体分割框架
    vc++6.0编译环境介绍(1、2)
    浅谈SDI单文档多视切换方法
    单文档多视图Formview切换源代码(此网还有许多其它多视图切换的源代码)
    VC单文档实现多视图的方法
    Visual C++(VC++6.0)编译器常用选项设置
    PowerTip of the DayRemoving Empty Things
  • 原文地址:https://www.cnblogs.com/alantao/p/8459548.html
Copyright © 2020-2023  润新知