vue-loader和单页组件介绍

1、Vue Loader介绍

  Vue Loader 是一个 webpack 的loader,它容许你以一种名为 单文件组件(SFCs)的格式撰写 Vue 组件。官方文档地址以下所示:javascript

  Vue Loader v15及以上版本官方文档地址css

  Vue Loader v14 或更早的版本官方文档地址html

一、vue-loader 特性

  • 默认支持 ES2015;
  • 容许对Vue组件的组成部分使用其余 webpack loader,好比对<style> 使用Sass 和对 <template> 使用 Jade;
  • 将 <style> 和 <template> 中的静态资源看成模块来对待,并使用 webpack loader 进行处理;
  • 对每一个组件模拟出 CSS 做用域;
  • 支持开发期组件的热重载。

  简言之,编写 Vue.js 应用程序时,组合使用 webpack 和 vue-loader 能带来一个现代、灵活并不是常强大的前端工做流程。前端

2、项目示例

一、项目准备和组件安装

  将 webpack-dev-server 项目复制为 single-file,安装 vue-loader 组件:vue

$ npm install vue-loader@14.2.4 -D

  安装vue的模板解析器: vue-template-compiler,注意要安装对应的版本号,才能适配。java

$ npm install vue-template-compiler@2.5.17 -D

二、在webpack中配置vue-loader

  这里是在webpack.dev.config.js中配置vue-loader:node

// node.js中内容模块
var path = require('path');

module.exports = {
    // entry入口
    entry: {
        main: './src/main.js'
    },
    // output出口
    output: {
        path:path.resolve('./dist'),  // 相对转绝对
        filename: './bundle.js'
    },
    watch:true,
    // 模块中的loader
    module:{
        loaders:[
            {
                test:/\.css$/,  // css结尾的
                loader:'style-loader!css-loader'  // 依次识别
            },
            {
                test:/\.vue$/,
                loader:'vue-loader'
            }
        ]
    }
}

三、Vue组件规格

  *.vue 文件是用户用 HTML-like 的语法编写的 Vue 组件。每一个 *.vue 文件都包括三部分:组件结构(template—>html)业务逻辑(script—>js)组件样式(style—>css)webpack

  vue-loader 是一个webpack的loader,能够将用上面*.vue格式编写的*.vue组件转换为 javascript 模块。web

  将App.js改写为App.vue。npm

<template>
    <!-- template里必定是闭合标签 -->
    <div class="app">
        <h3>{{ msg }}</h3>
        <ul>
            <li>1</li>
            <li>2</li>
            <li>3</li>
            <li>4</li>
            <li>5</li>
        </ul>
    </div>
</template>

<script>
    export default {
        data () {
            return {
                msg: '学习单页组件!'
            }
        },
        methods:{

        },
        computed:{

        }
    }
</script>

<style>
    h3 {
        color: green;
    }
    .example {
        color: red;
    }
</style>

  执行npm run dev,自动打开浏览器:http://localhost:8081/ 就访问到刚刚写好的App.vue页面了。

  

三、建立并挂载子组件

(1)建立子组件header

<template>
    <div>
        <h3>{{att}}</h3>
    </div>
</template>

<script>
    export default {   // 组件抛出
        name: "Header",
        data() {
            return {
                att: "中美贸易战"
            };
        },
    };
</script>

<style lang="css" scoped>

</style>

   组件建立完成后抛出。

(2)挂载子组件

  在App.vue文件中引入并挂载子组件:

<template>
    <!-- template里必定是闭合标签 -->
    <div class="app">
        <h3>{{ msg }}</h3>
        <ul>
            <li>1</li>
            <li>2</li>
            <li>3</li>
            <li>4</li>
            <li>5</li>
        </ul>
        <Header/>
    </div>
</template>

<script>
    // 1.导入组件
    import Header from './Header.vue'
    export default {
        data () {
            return {
                msg: '学习单页组件!'
            }
        },
        methods:{

        },
        computed:{

        },
        // 2.使用components挂载组件
        components:{
            Header
        }
    }
</script>
<style> /* 对全局样式起做用 */
    h3 {
        color: green;
    }
    .example {
        color: red;
    }
</style>

 

  显示效果以下所示:

  

  注意:vue组件中的style标签标有scoped属性时,代表style里的css只对当前组件的样式起做用

相关文章
相关标签/搜索